第一:硬件層協議
通訊協議主要是實現兩個設備之間的數據交換功能,通訊協議分硬件層協議和軟件層協議。硬件層協議決定數據如何傳輸問題,比如要在設備1向設備2發送0x63,0x63的二進制數為0110 0011,這8個二進制數從設備1傳輸到設備2,涉及到1怎麼傳,0怎麼傳的問題,這就是硬件層要解決的問題。
硬件層協議目前比較多見的有RS-232、RS-485、SPI、IIC等。RS-232規定,線上的電壓為x伏都表示傳輸的是0,y伏傳輸的則是1。再者,比如要選擇多少條線傳輸數據,選擇什麼材質的線傳輸輸入,這些也屬於硬件層協議約束的。
第二: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。 可以這樣理解,硬件層協議是公路,路的目的是為瞭讓車輛能夠過去。
第三:RS485半雙工通訊
首先瞭解什麼是單工通訊,單工通訊是指數據隻能朝著一個方向傳輸的通訊方式。而半雙工通訊則是指對於通訊兩端,不能同時相對方法發送數據,必須錯開時間段發送。 RS-485的通訊線隻有2條,且這兩條通訊線在一次傳輸中都需要用到,因此485隻可實現半雙工通訊。485實現半雙工通訊,會遇到一個問題,MCU1向MCU2發數據時,並不知道線上是否正傳來MCU2數據,因為沒有其他線可用來判斷對方的收發狀態,那麼可能也會導致數據沖突。因此,RS-485要實現半雙工通訊,就需要上層的軟件協議加以規約,也就是做到”不能你想發數據就發數據”。可以理解,軟件層協議就好像交通規則,它能讓數據有序傳輸。
第四:RS232通訊
RS-232是美國電子工業聯盟制定的串行數據通信接口。現在RS232接口常用於儀器儀表設備,PLC以及嵌入式領域當作調試口來使用。
第五:RS232接口形態
按照引腳數量分類有兩種:
25pin–DB25 協議標準推薦的接口類型
由於接口物理尺寸較大,很少使用,此處不做具體介紹。
9pin—DE9(通常誤叫做DB9) 自IBM PC/AT開始改用9針連接器起,目前是主流接口形態。9針RS232接口按照接口類型,又可以分為:
公頭(Male):帶針腳
0e1b02feb3e2b8de928a804495e9e4a3
母座(Female):帶孔座
671c7dc17d915b1934294a66a74f62e7
其中DTR/DSR和RTS/CTS用於硬件流控。
DTR/DSR狀態表明DTE和DCE處於可用狀態,有時候設備上電這兩個信號即有效,表示設備本身可用使用,但要開始進行數據傳輸通訊,則需要RTS/CTS流控信號。
RTS即DTE發送數據時,該信號有效(ON),向DCE請求發送數據;CTS是對請求發送RTS信號的響應,當DCE已經準備好接收數據時,該信號有效(ON),通知DTE可用使用TXD發送數據瞭。
比如A向B發送數據簡單如下邏輯:
A先設置RTS為1,表示要發數據給B
B檢測到RTS為1,先看看自己是否準備好:
如果準備好,就設置CTS為1表示A可用發數據給B瞭
如果沒有準備好,繼續處理自己的數據。弄完瞭,再將CTS設置為1,讓A發數據
A發現CTS置1瞭,將數據通過TXD信號線發送出去
A每發送一次數據給B之前,都會繼續上面的邏輯
A發送完數據後,就將RTS置0,表示數據發送完畢
第六:RS232硬件連接方式
連接分為3種
第一種:9線方式連接示意圖
ef555d8f50f6b8dd234a1ac0199618f9
第二種:5線方式連接示意圖
第三種:3線式連接示意圖
註:3線連接中,DTE使用TXD和RXD兩條數據線,無法實現硬件流控功能,在做大量數據傳輸應用時,建議使用5線或9線連接方式。
第七:電平及時序
下圖是使用RS232接口按照UART串口協議進行傳輸,UART協議具體請參考 UART詳解。圖中傳輸的數據為0100 1011b 即0x4B,按照1bit開始位,8bit數據位,1bit停止位格式傳輸。
第八:最大通訊距離及速率
協議最初規定設備最大速率為20kbps。
註:協議規定最大速率為20kbps,現在看來這個速率已經很低瞭。一些芯片制造商已經做出瞭高速率的芯片驅動,具體速率上限請查看器件手冊。
0. 序言 The CRH3 Hexie (simplified Chinese: 和谐号; traditional Chinese: 和谐号; pinyin: Héxié Hào; literally: " ...