STM32物联网通讯GPRS

一、GPRS相关概念介绍  

  智能家居和物联网都是目前的新兴产业,智能家居和物联网都是通过无线通讯模块与服务端进行数据通讯。其中GPRS通讯是一种常见的方式。GPRS(通用分组无线业务)的简称,是在现有的GSM系统上新增新GGSM(网络支持节点)和SGSN(服务支持节点)节点发展出来的一种新的分组数据承载业务。GPRS网络传输的主要优点:永远在线、按流量计费、快速登陆、高速传输、覆盖范围内不受限制、数据传输可靠等。

  使用GPRS,一般会选择使用GPRS模块,在这里我选择的是广和通厂商的G510模块。GPRS安装到控制器中,主要功能为通过GPRS网络连接到Internet网络,并主动与监听中心建立通信链路,进行双向数据通讯。GPRS模块主要是由G510模块、天线、SIM卡、相关电平转换电路等组成,GPRS模块通过串口与STM32单片机进行数据通讯。

二、基本初始化流程

  (1)考虑到模块外围电路电容充电效应,建议上电5s后发送开机初始化在命令。

  (2)常用指令

     AT+MRST    OK           -------------  重启模块,应答

     AT+CPIN?         READY  -------------  检查SIM卡是否插好

     AT+CGREG?    OK    -------------  检查网络注册状态

       AT+CSQ     OK           -------------  信号查询

扫描二维码关注公众号,回复: 5746468 查看本文章

      AT+MIPCALL?         : 0            -------------- 查询网络连接状态(0:未连接;1:连接)

      AT+MIPCALL=1,\"cmnet\"    OK    ----------------连接网络

      AT+MIPOPEN=1,,\"47.105.162.0\",1883,0   -------------- 连接服务器

  (3)数据链路层数据处理:实现GPRS数据接收/发送控制,存储串口中断接收到的数据,发送GPRS数据长度和GPRS数据内容。串口收到数据之后会将数据存储到MIPRTCP_DataStreaming()中,这个函数会将接收到的数据进行解析处理。串口接收数据流程如下:

void USART1_IRQHandler(void) //串口1中断服务程序
{
  u8 Res;

  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
  {
    Res =USART_ReceiveData(USART1); //读取接收到的数据
    MIPRTCP_DataStreaming(Res);

    if((USART1_RX_STA&(1<<15))==0)//接收完的一批数据,还没有被处理,则不再接收其他数据
    {
      if(USART1_RX_STA<USART1_MAX_RECV_LEN) //还可以接收数据
      {
        TIM_SetCounter(TIM4,0); //计数器清空
        if(USART1_RX_STA==0) //使能定时器7的中断
        {
          TIM_Cmd(TIM4,ENABLE); //使能定时器7
        }
        USART1_RX_BUF[USART1_RX_STA++]=Res; //记录接收到的值
      }
      else
      {
        USART1_RX_STA|=1<<15; //强制标记接收完成
      }  
    }

    // USART_ClearITPendingBit(USART1,USART_IT_RXNE);
  }
}

猜你喜欢

转载自www.cnblogs.com/gzqblogs/p/10638377.html