UART通信中流控RTS和CTS的理解


一、流控,顧名思義就是流量控制的意思。目的是協調收發雙方,使數據不會丟失。

 

二、很多人用了串口很久都不知道這回事,這是因為很多場合確實沒有必要。收發雙方波特率固定,並且接受數組足夠大,這時不會出現接收方接受數組溢出導致數據丟失的情況,所以,以我的理解,使用流控的主要目的就是在數據量大,有可能出現接受數組溢出的時候,采取的一種協調收發雙方的措施。可能還要其他原因,我沒有理解到位。

 

三、流控設計到RTS和CTS兩個口,收發雙方都有各自的RTS和CTS,如通信雙方A,B。那么A的RTS就與B的CTS相連,A的CTS就與B的RTS相連。

RTS的作用是告訴對方我可以接受數據,是輸出口;CTS的作用是根據電平高低控制發送或不發生數據。

如:A與B通信,現在A給B發送數據,當B出現某種情況(可能是接受緩存快要滿了)的時候,B的RTS拉低(一般拉低表示有效,但也不一定),A的CTS是與B的RTS相連的,則A檢測到它的CTS拉低,就知道B在告訴他暫時不要再發了。他就乖乖地停止發送。等到B可以繼續接收數據的時候,B的RTS拉高,這時候A的CTS也拉高,A就知道可以繼續發送數據了。如果A和B收發情況換一下也是一樣的道理。

[在驗證拓普康串口數據的時候  RTS和CTS 的數據為同時被拉高,檢測拉高到5.5V]---》【一定要共地GND 🌏】

 

四、上面說的是硬件的流控,接收方通過引腳的高低來告知或叫做控制發送方的發送。這種方式不管發送的數據是二進制格式還是字符格式都試用。

另外跟硬件流控相對的還要軟件流控。軟件流控就不需要RTS和CTS兩引腳了,當接收方不想繼續接收數據時,通過接收方的TXD給發送方發送一個XOFF信號,發送方接收到這個字符就暫停發送數據;等到接收方可以繼續接收數據時,接收方再給發送方發送一個XON信號,於是發送方繼續發送數據。因為XON、XOFF信號也是通過數據信號線發送的,所以軟件流控在傳輸二進制數據時可能會出現錯誤,因為可能你發送的數據里面也有XON、XOFF對應的二進制值。但是這種情況也可以解決,比如對XON、XOFF進行轉義。

能在此遇見是我們的緣分,我願意幫助你,相信你一定可以取得成功!


歡迎關注最近新開的公眾號,里面有“你懂的”宅男程序員福利喲

微信掃碼觀看福利喲,不定期更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM