基于STM32微处理器的GPRS数据传输技术的研究 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于STM32微处理器的GPRS数据传输技术的研究

来源:中国一卡通网  作者:不详  发布时间:2014-03-07 09:55:13  字体:[ ]

关键字:GPRS  STM32  数据传输  

摘   要:本文通过对STM32底层配置以及数据传输的研究,介绍STM32主要的底层配置,并着重介绍数据传输的实现。通过关键步骤的程序源代码的介绍,阐述实现数据传输的细节以及注意事项。该方法对其他项目或芯片有一定的实现价值和参考价值,且简单可靠,具有普遍性和通用性。

  2.2 接收检验

  当SIM900A有数据返回或 者有数据通过SIM900A接收到下位机时,STM32会立即响应中断来接收数据。此时就要在中断函数中进行一系列处理。以SIM900A为 例,SIM900A模块返回的命令都是以"r"+"n"+""结尾,因此检验传输结束可以根据它进行判断。在中断响应函数(即 stm32f10x_it.c文件里)的USART2_IRQHandler函数可以设置如下:

  void USART2_IRQHandler(void)
  {
  if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET){
  //将接收字符存入接收缓冲区RxBuffer
  RxBuffer[ReceCounter++]=(char)USART_ReceiveData(USART2);
  //判断是否接收结束
  if(RxBuffer[ReceCounter]==′′&& RxBuffer[ReceCounter-1]==0x0A &&
  RxBuffer[ReceCounter-2]==0x0D){
  ReceCFFlag=TRUE;
  }
  USART_ClearITPendingBit(USART2,USART_IT_RXNE);
  }
  }

  该函数的基本思路是:将USART接收到的字符逐个存入缓冲区,然后判断缓冲区最后3个字符是否为SIM900A的结束标识符。如果为假,继续接收;如果为真,则将接收完成标识符置为真。当接收完成标识符为真时,说明接收完成,接下来就可以进行数据处理了。

  2.3 命令函数实现方法

  下面将以AT+CIPSEND为例,阐述发送数据的细节。通过初始化模块、开启网络、建立接入点和建立TCP连接之后,就可以开始发送数据。实现源代码如下:

  u8 GPRS_Send(void){
  u8 i=0;
  u8*p;
  USART_SendToGPRS("AT+CIPSENDrn");//发送命令
  Delay_ms(500);//延时500 ms
  p=LookFor_Str(RxBuffer,">");
  //查找是否有">"符号,如果有,则可以发送数据
  if(p!=0){
  p=0;
  memset(RxBuffer,0,BufferSize);//清空接收缓冲区
  USART_SendToGPRS(GPRSSendData);//发送数据
  Delay_ms(500);
  Delay_ms(500);
  Delay_ms(500);
  p=LookFor_Str(RxBuffer,"SEND OK");
  if(p!=0){//判断是否发送成功
  //发送成功操作
  return 1;
  }else {
  //发送失败操作
  return 0;
  }
  }
  }

  该函数的基本思路是:首先发送命令,然后查找是否有“>”符号,如果有,则说明可以开始发送数据。一段延时之后查找接收缓冲区是否有“SEND OK”字眼,有则说明发送成功,没有则表示发送失败。可以根据判断作进一步的操作。命令的用法详见SIM900A配套的AT命令手册。有以下三点需要注 意:

  (1)在本文测试程序中需要先获取IP然后才能建立TCP连接,这是由SIM900A机制决定的。所以如果开发者不能建立TCP连接,除了测试网络是否正常、服务器是否正确配置之外,还需在程序中先获取IP,命令为AT+CIFSR.

  (2)可以先获取SIM900A的状态,命令为AT+CIPSTATUS.根据状态来判定进行哪些操作,可以减少运行量,简化代码,从而减少运行时间,提高运行效率。详见SIM900A配套的AT命令手册。

  (3)延时的设定需要具体问题具体分析。例如,初始化SIM900A模块的时候,只需延时500 ms,模块返回的信息就接收到了,而接收来自服务器的信息时,有时由于信号问题或者巨大的数据量可能要延时久一点,而此时就需要开发者自行进行测试。延时 的准确设置,可以在保证数据正确性的同时减少延时时间,从而提高程序的运行效率。

  本文通过对STM32微处理器串口的设置以及中断的配置来阐述 STM32微处理器底层的配置,再通过SIM900A的发送和接收数据实现GPRS的数据传输技术,从而实现STM32微处理器接入互联网。在接收检验实 现中,可以根据接收是否完成只作一次判断,从而减少中断运行时间。而SIM900A是GSM/GPRS双频模块,还可以实现通话、收发短信、HTTP及 FTP传输等诸多功能,通过更深入的研究,可以最大限度地挖掘出该模块的实用价值,从而为电子产品提供更多的应用功能。

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖