串口數(shù)據(jù)通信,當(dāng)通信速率較快時(shí)可能會(huì)出現(xiàn)丟包現(xiàn)象,如計(jì)算機(jī)和單片機(jī)之間,當(dāng)MCU接收端的數(shù)據(jù)緩沖區(qū)已滿,此時(shí)仍然有新的數(shù)據(jù)傳輸過來,接收端已沒有時(shí)間進(jìn)行處理,就會(huì)導(dǎo)致丟包(數(shù)據(jù)丟失)。實(shí)際應(yīng)用中經(jīng)常會(huì)遇到該類問題,本質(zhì)原因是設(shè)備的通信速率與處理能力不匹配,導(dǎo)致數(shù)據(jù)傳輸時(shí)丟包。
利爾達(dá)Cat.1模組具有硬件流控的功能,用戶可通過該功能來解決通信速率與MCU處理能力匹配失衡造成的丟包問題。硬件流控的原理非常簡(jiǎn)單,當(dāng)接收端接收到的數(shù)據(jù)處理不過來時(shí),就向發(fā)送端發(fā)送不再接收的信號(hào),發(fā)送端接收到這個(gè)信號(hào)之后會(huì)停止發(fā)送,直到收到可以發(fā)送的信號(hào)再繼續(xù)發(fā)送。因此硬件流控可以通過是否接收到指示信號(hào)防止數(shù)據(jù)丟失。
本文主要針對(duì)具有硬件流控功能的利爾達(dá)Cat.1模組,給出了對(duì)應(yīng)的時(shí)序邏輯和測(cè)試方法,用戶可根據(jù)本文對(duì)MCU程序進(jìn)行開發(fā),從而實(shí)現(xiàn)硬件流控串口通信。
環(huán)境搭建
01
軟件環(huán)境
通過AT指令A(yù)T+IFC=2,2開啟硬件流控。
注1:NT35E開啟硬件流控后會(huì)自動(dòng)保存,復(fù)位后硬件流控仍保持開啟狀態(tài);
注2:NT26U和NT90則需要通過AT指令A(yù)T&W進(jìn)行保存。
02
硬件環(huán)境
本次測(cè)試使用串口助手SSCOM模擬MCU對(duì)模組進(jìn)行控制,USB轉(zhuǎn)串口工具如圖1所示。
圖1 USB轉(zhuǎn)串口工具
模組引腳連接示意圖如圖2所示。
圖2 引腳連接示意圖
硬件流控測(cè)試
CTS引腳是模組的輸入端,用于主機(jī)(MCU)通知模組是否準(zhǔn)備好,模組是否可向主機(jī)(MCU)發(fā)送信息,低電平有效。
RTS引腳是模組的輸出端,用于模組通知主機(jī)(MCU)是否準(zhǔn)備好,主機(jī)(MCU)是否可向模組發(fā)送信息,低電平有效。
01
模組CTS引腳測(cè)試
注:模組CTS引腳硬件流控測(cè)試,模組開啟流控功能,sscom未開啟流控功能。
硬件流控使能測(cè)試步驟如下:
1)懸空模組CTS、RTS引腳;
2)發(fā)送指令A(yù)T+IFC=2,2,開啟模組硬件流控;
3)進(jìn)行正常的AT交互;
通過上述流程開啟硬件流控功能后,SSCOM將無法收到模組返回的消息。此時(shí),使用萬用表測(cè)量模組的CTS和RTS引腳:
1)CTS引腳為高電平,即模組不會(huì)發(fā)送消息;
2)RTS引腳為低電平,即允許主機(jī)(MCU)發(fā)送信息;
未連接模組CTS、RTS引腳時(shí),模組會(huì)接收到AT指令并正常執(zhí)行,但是由于模組認(rèn)為主機(jī)沒有做好接收的準(zhǔn)備,AT指令的執(zhí)行結(jié)果將暫存于模組的內(nèi)部緩存中,不會(huì)進(jìn)行數(shù)據(jù)發(fā)送,所以SSCOM無法接收模組返回的消息。
拉低模組CTS引腳后,模組會(huì)一次性把緩存的數(shù)據(jù)輸出到SSCOM中,此時(shí)通過SSCOM進(jìn)行AT指令通信(模組的CTS引腳接地),能夠立即接收到來自模組返回的消息。
根據(jù)以上的測(cè)試過程和結(jié)果可以得出,模組開啟硬件流控功能后CTS引腳功能正常。
02
模組RTS引腳測(cè)試
1)連接主機(jī)、模組CTS、RTS引腳;
2)發(fā)送指令A(yù)T+IFC=2,2,開啟模組硬件流控;
3)配置SSCOM,模擬主機(jī)開啟硬件流控;
4)進(jìn)行正常的AT交互;
圖3 勾選SSCOM左下角的RST選項(xiàng)
圖4 使能sscom硬件流控
SSCOM按照配置完成后,確認(rèn)模組AT通信正常,然后通過大數(shù)據(jù)交互觸發(fā)模組硬件流控功能。如圖5所示,創(chuàng)建一個(gè)txt文檔,內(nèi)部填入大量AT指令。
圖5 創(chuàng)建一個(gè)填入大量AT指令的txt文檔
通過SSCOM發(fā)送文件的功能,可快速向模組發(fā)送AT指令。在發(fā)送文件時(shí)把串口波特率修改為460800bps(AT+IPR=460800)以便觸發(fā)高速率通信下的硬件流控指示。
圖6 打開文件-發(fā)送文件
通過邏輯分析儀抓取模組TX、RX、RTS、CTS引腳波形,模組引腳與邏輯分析儀通道匹配如表1所示:
表1 模組引腳與邏輯分析儀通道匹配表
如圖7所示為發(fā)送文件時(shí)模組引腳波形圖,根據(jù)圖示可知當(dāng)模組的緩存已滿,RTS引腳輸出高電平,模組RX引腳保持高電平,此時(shí)SSCOM不會(huì)向模組發(fā)送AT指令;由于SSCOM運(yùn)行在電腦上,速度、緩存遠(yuǎn)高于模組(不會(huì)發(fā)生阻塞),因此模組的CTS引腳始終保持低電平。
根據(jù)以上的測(cè)試過程和結(jié)果可以得出,模組開啟硬件流控功能后RTS引腳功能正常。
圖7 發(fā)送文件波形
-
硬件
+關(guān)注
關(guān)注
11文章
3328瀏覽量
66218 -
uart
+關(guān)注
關(guān)注
22文章
1235瀏覽量
101387 -
串口通信
+關(guān)注
關(guān)注
34文章
1626瀏覽量
55526 -
利爾達(dá)
+關(guān)注
關(guān)注
1文章
203瀏覽量
9792
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論