【转载】RS232/UART
製作互動裝置少不了要使用RS2322的RXTX(UART)來進行傳送資料的工作,每天都要設定baud9600/n/8/1的設定針對這一串神秘的設定參數簡單說明如下
RS232 DB9 Male (Pin Side) RS232 DB9 Female (Pin Side) ------------- ------------- \ 1 2 3 4 5 / \ 5 4 3 2 1 / \ 6 7 8 9 / \ 9 8 7 6 / --------- ---------
- RS232(UART)傳送數據內容
-
STARTD0D1D2D3D4D5D6D7PSTOP起始位數 據校驗位停止位
-
- RS232特徵是
- 序列傳送(Serial Communication),將Word或Byte內的字元 (Bit) , 一個接一個依序傳送。意思就是當我送出X字會被拆解成 *01011000*(星號是StratBit and StopBit)傳送到接收端。這個原因我想應該就是在IC的世界哩,如果我們要傳送一剛剛的X,以並列傳送的話我們就需要8條TX線連到RX,而使用序 列傳送只要一條。
- 非同步資料傳送UART(Universal Asynchronous Receiver / Transmitter),既然是非同步所以RS232傳送的時候必須要有起始BIT和停止BIT,幫助接收者判斷資料已經開始或已經結束。如下圖所示 RS232正式使用上方非同步的方式將一串資料傳送給接收端。
- Full Duplex (全雙工),因為RS232有RXTX對街的關係,所以可以傳送的同時也接收。ps.單工例如收音機,半雙工如同對講機。
Asynchronous Communication (非同步傳輸)在傳送的資料內加上同步信號 , 當接收端收到同步信號 , 便知道接下來的信號是資料;而Synchronous Communication (同步傳輸)傳送與接收雙方共用一個時鐘脈衝 (Clock)。
- Baud Rate (每秒傳多少的bits):在RS232的規定中設定了以下速度給世界遵守 1150,300,1200,…,9600,19200,38400,115200 Parity(同位檢查)
- 同位檢察:
- Data Bit:每一次資料的長度有7和8的選擇。通常設定為8
- Stop Bit: 停止位元數有1和2的選擇。通常設定為1
- Start Bit: 同上,開始位元數有1和2的選擇。通常設定為1
- 流量控制(Handshaking): 這裡有軟體、硬體和無交握,三種模式。通常我們設定無,而軟體交握就是Xon/Xoff會在資料中一起傳輸。硬體交握就是使用RTS、CTS、DTR、DSR。
- DTR:通知對方我已經準備好了READY,通常我們的裝置會直接設定ON。
- DSR: 問對方是否READY
- RTS & CTS: 發送端在傳送資料前先送出RTS (Request to Send)要求封包,接收端在收到此一訊息時,會送出CTS (Clear to Send) 封包,告訴發送端可以送出資料並且告訴對方裝置在這段時間內不能傳送任何資料。
- 例如:接著我們打開電腦裝置管理員中的COM設定選單,實際套用以上的理論。
- RS232&RS485
- RS232:
- 發送端(DTE, Data Terminal Equipment): TD、DTR和RTS訊號是由DTE產生的
- 接收端(DCE, Data Communication Equipment): RD、DSR、CTS、DCD和RI訊號是由DCE產生的
- RS485: 是利用電壓的高低來達到溝通的目的,這樣的設計可以比RS232有更長傳送的距離。
- RS232:
訊號 | DB-25 | DB-9(常用) | EIA/TIA 561 | Yost |
---|---|---|---|---|
*公共地 | 7 | 5 | 4 | 4,5 |
*發送資料(TD) | 2 | 3 | 6 | 3 |
*接受資料(RD) | 3 | 2 | 5 | 6 |
*資料終端準備(DTR) | 20 | 4 | 3 | 2 |
*資料準備好(DSR) | 6 | 6 | 1 | 7 |
*請求發送(RTS) | 4 | 7 | 8 | 1 |
*清除並發送(CTS) | 5 | 8 | 7 | 8 |
資料載波檢測(DCD) | 8 | 1 | 2 | 7 |
振鈴指示(RI) | 22 | 9 | 1 | - |
下表RS485與RS232的比較可以發現,因為485傳送資料的方式是採用電壓的高低所以有些PIN被拿來當作負極。RS232欄中,被標示灰色(前打星號*)是在RS485中被取代成負極的腳位。
RS-485 | RS-232 | DB-25 | DE-9 |
RJ-50 |
---|---|---|---|---|
Common Ground | *Carrier Detect (DCD) | 8 | 1 | 10 |
Clear To Send + (CTS+) | Received Data (RD) | 3 | 2 | 9 |
Ready To Send + (RTS+) | Transmitted Data (TD) | 2 | 3 | 8 |
Received Data + (RxD+) | *Data Terminal Ready (DTR) | 20 | 4 | 7 |
Received Data - (RxD-) | Common Ground | 7 | 5 | 6 |
Clear To Send - (CTS-) | *Data Set Ready (DSR) | 6 | 6 | 5 |
Ready To Send - (RTS-) | Request To Send (RTS) | 4 | 7 | 4 |
Transmitted Data + (TxD+) | Clear To Send (CTS) | 5 | 8 | 3 |
Transmitted Data - (TxD-) | *Ring Indicator (RI) | 22 | 9 | 2 |
有時候因為手邊沒有RS232/485的9PIN梯形接頭或是不夠長,我們會用網路線(RJ45/CAT5)來當作資料傳輸線
注意下方左邊是發送端,右邊是接收端。例如:左邊的PIN7通往右方PIN2(RxD)
RJ45-Pin | DE9顏色 | Signal name | Remark | Signal source | |
---|---|---|---|---|---|
DTE (computer or terminal) | DCE (modem) | ||||
1 | Blue | DTR, HSKo | CD | Data on pin 3 is valid | Jack![]() |
2 | Orange | RTS | CTS | I am ready to receive on pin 6 | |
3 | Black | TxD | RxD | ||
4 | Red | Gnd | Gnd | ||
5 | Green | Return, Gnd | Gnd | Plug![]() |
|
6 | Yellow | RxD | TxD | ||
7 | Brown | CTS, HSKi | RTS | OK to send on pin 3 | |
8 | Gray | DSR | DTR | Data on pin 6 is valid |
常見三種通訊方式:
UART | SPI | I2C |
UART就是兩線,一根發送一根接收,可以全雙工通信,線數也比較少。數據是異步傳輸的,對雙方的時序要求比較嚴格,通信速度也不是很快。 | SPI接口和上面UART相比,多了一條同步時鐘線,上面UART的缺點也就是它的優點了,對通信雙方的時序要求不嚴格不同設備之間可以很容易結合,而且通信速度非常快。一般用在產品內部元件之間的高速數據通信上面,如大容量存儲器等。 | I2C接腳也是兩線接腳,它是兩根線之間通過複雜的邏輯關係傳輸數據的,通信速度不高,程序寫起來也比較複雜。一般單片機系統裡主要用來和24C02等小容易存儲器連接。 |