串口数据通信,当通信速率较快时可能会出现丢包现象,如计算机和单片机之间,当MCU接收端的数据缓冲区已满,此时仍然有新的数据传输过来,接收端已没有时间进行处理,就会导致丢包(数据丢失)。实际应用中经常会遇到该类问题,本质原因是设备的通信速率与处理能力不匹配,导致数据传输时丢包。
利尔达Cat.1模组具有硬件流控的功能,用户可通过该功能来解决通信速率与MCU处理能力匹配失衡造成的丢包问题。硬件流控的原理非常简单,当接收端接收到的数据处理不过来时,就向发送端发送不再接收的信号,发送端接收到这个信号之后会停止发送,直到收到可以发送的信号再继续发送。因此硬件流控可以通过是否接收到指示信号防止数据丢失。
本文主要针对具有硬件流控功能的利尔达Cat.1模组,给出了对应的时序逻辑和测试方法,用户可根据本文对MCU程序进行开发,从而实现硬件流控串口通信。
环境搭建
01
软件环境
通过AT指令AT+IFC=2,2开启硬件流控。
注1:NT35E开启硬件流控后会自动保存,复位后硬件流控仍保持开启状态;
注2:NT26U和NT90则需要通过AT指令AT&W进行保存。
02
硬件环境
本次测试使用串口助手SSCOM模拟MCU对模组进行控制,USB转串口工具如图1所示。
图1 USB转串口工具
模组引脚连接示意图如图2所示。
图2 引脚连接示意图
硬件流控测试
CTS引脚是模组的输入端,用于主机(MCU)通知模组是否准备好,模组是否可向主机(MCU)发送信息,低电平有效。
RTS引脚是模组的输出端,用于模组通知主机(MCU)是否准备好,主机(MCU)是否可向模组发送信息,低电平有效。
01
模组CTS引脚测试
注:模组CTS引脚硬件流控测试,模组开启流控功能,sscom未开启流控功能。
硬件流控使能测试步骤如下:
1)悬空模组CTS、RTS引脚;
2)发送指令AT+IFC=2,2,开启模组硬件流控;
3)进行正常的AT交互;
通过上述流程开启硬件流控功能后,SSCOM将无法收到模组返回的消息。此时,使用万用表测量模组的CTS和RTS引脚:
1)CTS引脚为高电平,即模组不会发送消息;
2)RTS引脚为低电平,即允许主机(MCU)发送信息;
未连接模组CTS、RTS引脚时,模组会接收到AT指令并正常执行,但是由于模组认为主机没有做好接收的准备,AT指令的执行结果将暂存于模组的内部缓存中,不会进行数据发送,所以SSCOM无法接收模组返回的消息。
拉低模组CTS引脚后,模组会一次性把缓存的数据输出到SSCOM中,此时通过SSCOM进行AT指令通信(模组的CTS引脚接地),能够立即接收到来自模组返回的消息。
根据以上的测试过程和结果可以得出,模组开启硬件流控功能后CTS引脚功能正常。
02
模组RTS引脚测试
1)连接主机、模组CTS、RTS引脚;
2)发送指令AT+IFC=2,2,开启模组硬件流控;
3)配置SSCOM,模拟主机开启硬件流控;
4)进行正常的AT交互;
图3 勾选SSCOM左下角的RST选项
图4 使能sscom硬件流控
SSCOM按照配置完成后,确认模组AT通信正常,然后通过大数据交互触发模组硬件流控功能。如图5所示,创建一个txt文档,内部填入大量AT指令。
图5 创建一个填入大量AT指令的txt文档
通过SSCOM发送文件的功能,可快速向模组发送AT指令。在发送文件时把串口波特率修改为460800bps(AT+IPR=460800)以便触发高速率通信下的硬件流控指示。
图6 打开文件-发送文件
通过逻辑分析仪抓取模组TX、RX、RTS、CTS引脚波形,模组引脚与逻辑分析仪通道匹配如表1所示:
表1 模组引脚与逻辑分析仪通道匹配表
如图7所示为发送文件时模组引脚波形图,根据图示可知当模组的缓存已满,RTS引脚输出高电平,模组RX引脚保持高电平,此时SSCOM不会向模组发送AT指令;由于SSCOM运行在电脑上,速度、缓存远高于模组(不会发生阻塞),因此模组的CTS引脚始终保持低电平。
根据以上的测试过程和结果可以得出,模组开启硬件流控功能后RTS引脚功能正常。
图7 发送文件波形
-
硬件
+关注
关注
11文章
3306浏览量
66190 -
uart
+关注
关注
22文章
1235浏览量
101334 -
串口通信
+关注
关注
34文章
1623浏览量
55499 -
利尔达
+关注
关注
1文章
201浏览量
9782
发布评论请先 登录
相关推荐
评论