串口數據通信,當通信速率較快時可能會出現丟包現象,如計算機和單片機之間,當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文章
3338瀏覽量
66238 -
uart
+關注
關注
22文章
1237瀏覽量
101419 -
串口通信
+關注
關注
34文章
1626瀏覽量
55537 -
利爾達
+關注
關注
1文章
203瀏覽量
9801
發布評論請先 登錄
相關推薦
評論