串口半雙工與全雙工

怎麼這麼多人認爲485是半雙工?大家能不能看一下具體的定義啊?!不要認爲我們經常使用485的半雙工方式就認爲485是半雙工的。485、422、232都是全雙工的。但是實際使用過程中我們一直是把485設計成半雙工使用。其實485類似422,只不過在個別參數上比422更加靈活,也就是說485可以兼容422(一般情況下),但反過來就不一定了。485如果接成四線就是全雙工,如果把輸入和輸出並接,並且只接兩條線那麼就是半雙工的了。因爲實際使用半雙工的比較多。另外好多芯片內部就把輸入和輸出並接了。


半雙工:使用同一根線傳輸,既可發送又可以接收數據,但不能同時發送和接收。 
全雙工:分別由兩根同時發送和接收傳送,雙方都可以在同一時刻進行發送和接收。 
RS485 半雙工接法爲:RX+ 和TX+ 並聯爲Data+;RX- 和TX- 並聯爲Data-。 
RS485 全雙工接法爲:FULL 和GND 短接;信號線爲RX+,TX+,RX-,TX-,可根據需要連接GND。  
232:......
http://baike.baidu.com/view/1154433.htm



以前弄過一段時間串行通信,翻過一些讀物,我看到的情況大概是這樣: 
RS232,RS422,RS485是電氣標準,就是邏輯是如何表示的。 
RS232使用12V,0,-12V電壓來表示邏輯,(好象-12V表示邏輯1,12V表示邏輯0),全雙工,最少3條通信線(RX,TX,GND),因爲使用絕對電壓表示邏輯,由於干擾,導線電阻等原因,通訊距離不遠,低速時幾十米也是可以的。 
RS422,在RS232後推出,使用TLL差動電平表示邏輯,就是兩根的電壓差表示邏輯,RS422定義爲全雙工的,所以最少要4根通信線(一般要還要多拉一根地線),一個驅動器可以驅動(最多)10個接收器,通訊距離與通訊速率有關係,一般距離短時可以使用高速率進行通信,速率低時可以進行較遠距離通信,一般可達數百上千米。 
RS485,在RS422後推出,絕大部分繼承了422,主要的差別是RS485可以是半雙工的,而且一個驅動器的驅動能力至少可以驅動32個接收器,當使用阻抗更高的接收器時可以驅動更多的接收器。所以現在大多數全雙工485驅動/接收器對都是標:RS422/485的,因爲全雙工RS485的驅動/接收器對一定可以用在RS422網絡。 


很多人都認爲全雙工的是422,半雙工的是485,我不知道依據是什麼(要不是他們錯了就是我看到《串行端口大全》的作者Jan Axelson錯了)。 


串行通信,同步串行與異步串行 
串行通信就是數據位按時間順序一位一位地發送接收,其中同步串行通信數據的傳輸必須包含數據信號和時鐘信號,例如I2C,SPI等都有時鐘信號,所以一般速率高但通信距離短,甚至就是板內或板間通信。異步串行通信不包含時鐘信號,如何理解一個數據位是靠雙方預先協商,例如使用9600B的速率就定了一位數據的時間大概是100來us,再定一個法則就可以進行通信了,例如要起始通信,用一個0表示,然後就是n位數據,再就是校驗,停止之類表示一個完整數據幀,一般PC的232接口和MCU的UART都遵循兼容的法則,只要你決定如何使用就好了。 




多說一句:我是做軟件的,對硬件只希望能正確瞭解,知道其工作原理就行,所以不深究,最好有明白人詳細指明/正確或錯誤。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章