RS485通讯协议
https://blog.csdn.net/qq_29344757/article/details/71516037
1. 硬件層協議
通訊協議主要是實現兩個設備之間的數據交換功能,通訊協議分硬件層協議和軟件層協議。硬件層協議決定數據如何傳輸問題,比如要在設備1向設備2發送0x63,0x63的二進制數為0110 0011,這8個二進制數從設備1傳輸到設備2,涉及到1怎么傳,0怎么傳的問題,這就是硬件層要解決的問題。?
硬件層協議目前比較多見的有RS-232、RS-485、SPI、IIC等。RS-232規定,線上的電壓為x伏都表示傳輸的是0,y伏傳輸的則是1。再者,比如要選擇多少條線傳輸數據,選擇什么材質的線傳輸輸入,這些也屬于硬件層協議約束的。
2. RS-485通訊協議
MCU管腳輸出TTL電平,TTL電平的意思是,當MCU管腳輸出0電平時,一般情況下電壓是0V,當MCU管腳輸出1電平時,電壓是5V。因TTL電平的是由一條信號線,一條地線產生,信號線上的干擾信號會跟隨有效信號傳送到接收端,使得有效信號受到干擾,485通訊實際上是把MCU出來的TTL電平通過硬件層的一個轉換器芯片進行轉換:?
?
把MCU出來的一條的TTL信號經過芯片轉換為兩根線(線A、線B)上的信號。當MCU給轉換器輸入低TTL電平時,轉換器會使得B的電壓比A的電壓高,反之,A的電壓比B的電壓高。?
485協議規約兩條電平線上差值為多少表示0或者1,電壓是通過儀表可以測量得到的,所以說RS-485是硬件層協議。?
485協議的接收端可能是另一個MCU,MCU管腳也只接受TTL電平,轉換芯片過來的是兩條線的電壓,所以需要對此兩條線差分電壓轉換為TTL電平。?
?
把TTL轉為485,實質是一個集成芯片,其間無任何程序代碼,純粹硬件邏輯。同理,將485電平轉為TTL也是如此。現在很多芯片把接收和轉換都集成到一塊IC,注意,轉換器和接收器依舊是沒有同時工作的,常見的轉換芯片是MAX485。?
可以這樣理解,硬件層協議是公路,路的目的是為了讓車輛能夠過去。
3. 半雙工通訊
首先了解什么是單工通訊,單工通訊是指數據只能朝著一個方向傳輸的通訊方式。而半雙工通訊則是指對于通訊兩端,不能同時相對方法發送數據,必須錯開時間段發送。?
RS-485的通訊線只有2條,且這兩條通訊線在一次傳輸中都需要用到,因此485只可實現半雙工通訊。485實現半雙工通訊,會遇到一個問題,MCU1向MCU2發數據時,并不知道線上是否正傳來MCU2數據,因為沒有其他線可用來判斷對方的收發狀態,那么可能也會導致數據沖突。因此,RS-485要實現半雙工通訊,就需要上層的軟件協議加以規約,也就是做到”不能你想發數據就發數據”。可以理解,軟件層協議就好像交通規則,它能讓數據有序傳輸。
總結
- 上一篇: PHP输出100以内的质数(包括普通写法
- 下一篇: 《手把手教你学DSP》总结1