基于STM32的MC20模块GPRS+GPS的C语言驱动程序

本文介绍了基于STM32的MC20模块在项目中的应用,包括GPRS通信和GPS定位功能。硬件部分讲解了MC20与STM32的UART接口连接,软件部分详细阐述了MC20的初始化,包括GPRS的6步初始化过程,并提供了串口通信的函数处理。成功初始化后,可以通过TCP连接向服务器发送数据。
摘要由CSDN通过智能技术生成

 

  MC20 模块是一款集成了高性能GNSS 引擎和四频段GSM/GPRS 引擎的多功能无线模块,本次在项目中使用MC20作为通信网关,开发其与服务器通信的功能以及定位功能,稍微学习了一下。

  1.硬件部分

  GSM/GPRS 部分主要特性:

  

  

 

 

  MC20模块本身集成度较高,如果仅仅是使用的话其实非常简单,只需要了解模块内部的AT指令便可。

  MC20和STM32的接口采用UART,MC20上面有3个串口,分别用不同的功能,但我们项目的硬件设计把GPRS和GPS的串口都设计在了一起,因此只使用一个串口便可以实现通信与定位的功能。

  

    

  硬件不多讲,直接下载官方的手册参照设计即可,如果自己找不到手册,可以联系留下邮箱

  2.驱动部分

   初始化:

  MC20的初始化总体而言分为两个大部分:1.GRRS初始化 2.GPS初始化

  首先解释GPRS初始化:

  GPRS的初始化分为以下6个步骤:

  1.模块硬件检查

  2.SIM状态检查

  3.网络状态检查

  4.GPRS信号强度检查

  5.TCPIP传送模式选择

  6.建立TCP链接

 

  所谓硬件检查,按照手册上描述,其实就是检查一下硬件有没有正常启动,在已经给电,并且通过脉冲激活了MC20的情况下,使用串口向MC20发送一个字符串“AT\r”

  发送字符串以后,会存在3种状态,1.什么也没收到 2.收到“OK” 3.收到其他字符串。

  有且只有在第二种的情况下才代表通信正常,由于STM32与MC20的通信几乎都是这种一问一答的模式,因此特地做一个函数来进行这个工作的处理。

  函数功能:使用串口发送一个字符串:AT_CMD,然后等待,在wait_time_ms时间内如果串口有信息返回,那么就进行判断,判断返回信息中是否包含自己需要的字符串:return_value,如果有返回TRUE,如果没有返回FALSE。

 1 uint8_t MC20_SendAtCmd(char *AT_CMD, char *return_value, uint32_t wait_time_ms)
 2 {
     4     uint32_t time;
 5     uint8_t res;
 6 
 7     if(NULL == AT_CMD)
 8     {
 9         return 0;
10     }
11 
12     MC20_ClearFlag();
13     /* 发送命令 */
14     MC20_SendData((uint8_t *)AT_CMD, strlen(AT_CMD));
15     if(NULL == return_value)
16     {
17         return 1;
18     }
19 
20     time = u32SysTime;
21     
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值