很多物联网设备都是通过移动网络上网的,从GPRS到4G,现在最流行的是4G CAT1通信标准,此篇文章使用simcom公司生产的A7630C为例,介绍4G模块在充电桩领域的应用。
A7630C模块和其他的移动模块都是一样的,包含uart,usb,io等外围资源,和主控芯片主要是通过usb或者uart,使用AT指令实现通信,因为充电桩上的主控都是跑比较简单的RTOS或者是裸跑,实现usb驱动不是很容易,所以大多使用UART。因为充电桩使用4g模块只是传输简单的数据,数据量比较小,不需要太高的传输速率,UART接口足够满足要求。
A7630c主要脚位及功能
1.模块开机
用户通过拉低
PWRKEY
引脚使模块开机。此引脚已在模块内部上拉到
VBAT
。
推荐客户在设计时,模块引脚处增加
TVS
管可以有效的增强模块的抗静电能力,推荐电路如下图:
※ 特别注意
如客户不需要上电自动开机,请不要在 PWRKEY 和 RESET 上并联超过 10nF 的电容,否则上电检测到低电平会导致模块自动开机。 因 PWRKEY 和 RESET 都有拉低开机功能,禁止开机流程中短时间内先后拉 PWRKEY 和 RESET,否 则有可能导致开机异常。更详细的内容参考《硬件设计手册》
2.模块关机
强烈建议客户使用
PWRKEY
或者
AT+CPOF
进行关机,关机之后再对
VBAT 断电(特别是模块完全不需要工作的情况下),另外不能通过断开
VBAT
进行关机,这样可能会对
FLASH
造成损伤。
用户可以通过把
PWRKEY
信号拉低来关机,关机时序图如下图所示:
串口通信程序
mcu和a7630c之间使用串口通信,包括rx,tx,gnd。在软件上两种方式处理接收数据。
第一种 数据流
需要开辟一个足够大的BUF,缓存接收到的数据,设置读数据指针。如果mcu运行RTOS,使用rtos的设备文件系统,可以很好的实现。创建一个任务来接收数据,可以按照需要读取一定长度的数据,然后进行解析。以下是实例代码
void recvtask()
{
while(1)
{
read(uart); //读取数据
delay(100);//延时
parsedata(); //解析数据
}
}
第二种 数据帧
因为和A7630c之间是AT指令,At指令有一定的规范,它不是时刻在发送。一般是mcu主动发指令,a7630c才会相对应的回应。每次数据之间的有一定的时间间隔。我在资料里没有找到这个参数,我的项目里波特率115200,间隔时间取10ms。这样的话每收到一帧数据就按照a630c的格式取解析就可以了。当接收数据多,接收不过来,出现丢帧的情况,有两种办法解决,第一提供接收程序的运行速度,第二,可以设置多个接收buf。
A7630模块经常出现的问题及解决方案
- 断网重连
- 数据重发机制