幫助文檔
硬件串口通信概述 串口通信接口與協(xié)議
串口通信(Serial Communication),是指外設(shè)和計算機間通過數(shù)據(jù)信號線、地線等按位進(jìn)行傳輸數(shù)據(jù)的一種通信方式,屬于串行通信方式。串口是一種接口標(biāo)準(zhǔn),它規(guī)定了接口的電氣標(biāo)準(zhǔn),沒有規(guī)定接口插件電纜以及使用的協(xié)議。
(1)接口標(biāo)準(zhǔn)
串口通信的接口標(biāo)準(zhǔn)有很多,有 RS-232C、RS-232、RS-422A、RS-485 等。常用的就是 RS-232 和 RS-485。RS-232 其實是 RS-232C 的改進(jìn),原理是一樣的。這里我們就以 RS-232C 接口進(jìn)行講解,RS-485 在后面章節(jié)中會介紹。RS-232C 是 EIA(美國電子工業(yè)協(xié)會)1969 年修訂 RS-232C 標(biāo)準(zhǔn)。
RS-232C定義了數(shù)據(jù)終端設(shè)備(DTE)與數(shù)據(jù)通信設(shè)備(DCE)之間的物理接口標(biāo)準(zhǔn)。RS-232C 接口規(guī)定使用 25 針連接器,簡稱 DB25,連接器的尺寸及每個插針的排列位置都有明確的定義,如圖 21.2.1 所示:
RS-232C 還有一種 9 針的非標(biāo)準(zhǔn)連接器接口,簡稱 DB9。串口通信使用的大多都是 DB9 接口。DB25 和 DB9 接頭有公頭和母頭之分,其中帶針狀的接頭是公頭,而帶孔狀的接頭是母頭。9 針串口線的外觀圖如圖 21.2.2 所示:
從圖 21.2.2 中可以看到公頭和母頭的管腳定義順序是不一樣,這一點需要特別注意。這些管腳都有什么作用呢?9 針串口和 25 針串口常用管腳的功能說明如圖 21.2.3 所示:
在串口通信中,通常我們只使用 2、3、5 三個管腳,即 TXD、RXD、SGND,其他管腳功能大家看不明白也沒關(guān)系。RS-232C 對邏輯電平也做了規(guī)定,如下
在 TXD 和 RXD 數(shù)據(jù)線上:
1、邏輯 1 為-3~-15V 的電壓
2、邏輯 0 為 3~15V 的電壓
在 RTS、CTS、DSR、DTR 和 DCD 等控制線上:
1、信號有效(ON 狀態(tài))為 3~15V 的電壓
2、信號無效(OFF 狀態(tài))為-3~-15V 的電壓
由此可見,RS-232C 是用正負(fù)電壓來表示邏輯狀態(tài),與晶體管-晶體管邏輯集成電路(TTL)以高低電平表示邏輯狀態(tài)的規(guī)定正好相反。而我們 STM32 芯片使用的就是 TTL 電平,所以要實現(xiàn) STM32 與計算機的串口通信,需要進(jìn)行 TTL與 RS-232C 電平轉(zhuǎn)換,通常使用的電平轉(zhuǎn)換芯片是 MAX3232。
在串口通信中通常 PC 機的 DB9 為公頭,單片機上使用的串口 DB9 為母頭,通過一根直通串口線進(jìn)行相連。上圖 21.2.2 即為直通型串口線,串口線(COM)母頭連接計算機 DB9 的公頭,串口線公頭連接單片機上使用的 DB9 母頭,這樣就是將 2、3、5 管腳直接相連。如果你要實現(xiàn)兩臺計算機串口通信,那么就需要一根交叉串口線,將 2 對 3、3 對 2、5 對 5 連接,交叉串口線一般兩頭都是母頭。
串口通信中還需要注意的是,串口數(shù)據(jù)收發(fā)線要交叉連接,計算機的 TXD要對應(yīng)單片機的 RXD,計算機的 RXD 要對應(yīng)單片機的 TXD,并且共 GND,如下圖:
有的朋友就會問了,在計算機與單片機進(jìn)行串口通信時,使用的不是直通線嗎,這時候怎么讓TXD與RXD交叉連接?前面我們說了單片機處理的是TTL電平,需要使用 RS232 電平轉(zhuǎn)換芯片,將 RS232 電平轉(zhuǎn)換芯片串行數(shù)據(jù)輸出管腳交叉連接在 DB9 母頭上即可。
(2)通信協(xié)議
RS232 的通信協(xié)議比較簡單,通常遵循 96-N-8-1 格式。
“96”表示的是通信波特率為 9600。串口通信中通常使用的是異步串口通信,既沒有時鐘線,所以兩個設(shè)備要通信,必須要保持一致的波特率,當(dāng)然,波特率常用值還有 4800、115200 等。
“N”表示的是無校驗位,由于串口通信相對更容易受到外部干擾導(dǎo)致傳輸數(shù)據(jù)出現(xiàn)偏差,可以在傳輸過程加上校驗位來解決這個問題。校驗方法有奇校驗(odd)、偶校驗(even)、 0 校驗(space)、1 校驗(mark)以及無校驗(noparity)。具體的介紹,大家可以百度下串口通信了解。
“8”表示的是數(shù)據(jù)位數(shù)為 8 位,其數(shù)據(jù)格式在前面介紹異步通信中已講過。當(dāng)然數(shù)據(jù)位數(shù)還可以為 5、6、7 位長度。
“1”表示的是 1 位停止位,串口通訊的一個數(shù)據(jù)包從起始信號開始,直到停止信號結(jié)束。數(shù)據(jù)包的起始信號由一個邏輯 0 的數(shù)據(jù)位表示,而數(shù)據(jù)包的停止信號可由 0.5、 1、 1.5 或 2 個邏輯 1 的數(shù)據(jù)位表示,只要雙方約定一致即可。

閩公網(wǎng)安備 35021102001331號