1. 程式人生 > >串口通訊(上)——基礎概念

串口通訊(上)——基礎概念

post itl 由於 targe -a data ctu http nop

通訊協議

通訊協議分為物理層和協議層。

  • 物理層:規定通訊系統中具有機械、電子功能部分的特性,確保原始數據在物理媒體的傳輸;
  • 協議層:規定通訊邏輯,統一收發雙方的數據打包、解包標準。

串口通訊物理層之RS-232

RS-232標準主要規定了信號用途、通訊接口和信號電平標準。如圖9-1為常見的設備間串口通訊結構圖。

技術分享圖片圖9-1

如上圖所示,每個設備都有一個DB9接口,通過DB9接口連接RS-232標準的串口線進行數據傳輸。由於通過RS-232標準傳輸的電平信號到達設備後,不能直接被識別,所以會通過電平轉換芯片(例如MAX3232、SP3232芯片等)轉換成能識別的TTL電平信號,實現通訊。

相互通訊的兩個設備間,一個設備發送數據,一個設備接收數據。一般情況下,發送數據的設備稱為DTE,如計算機;接收數據的設備稱為DCE,如調制解調器。

這裏需要介紹下DB9接口。如圖9-2為DB9標準的公頭、母頭接法(接線口以針式引出信號線為公頭,以孔式引出信號線為母頭)。

技術分享圖片圖9-2

如上圖,以公頭為例,有9條信號線,其中,

  • RXD:用於接收DCE發來的數據信號,即輸入;
  • TXD:用於發送DTE的信號,即輸出。公頭和母頭的RXD和TXD應交叉連接;
  • GND:用於平衡設備雙方的地電位,即共地。

其他信號線如DCD、DTR、DSR、RTS、CTS等,使用邏輯1表示有效信號,邏輯0表示無效信號。如DTE端的RTS信號線置1時,是為了告知DCE設備本機已準備好接收數據,而置0則表示未準備就緒。

串口通訊協議層

協議層規定了數據包的內容,內容包含了起始位、主體數據、校驗位及停止位,雙方需要約定一致的數據包格式才能正常收發數據。如圖9-3為數據包的基本組成。

技術分享圖片圖9-3

波特率

串口異步通訊中由於沒有時鐘信號,所以通訊雙方需要約定好波特率,即每個碼元的長度,以便對信號進行解碼。常見的波特率有4800、9600、115200等。


起始位、停止位

數據包從起始位開始,到停止位結束。起始信號用邏輯0的數據位表示,停止信號由0.5、1、1.5或2個邏輯1的數據位表示,只要雙方約定一致即可。

有效數據

起始位之後便是傳輸的主體數據內容了,也稱為有效數據,其長度一般被約定為5、6、7或8位長。

數據校驗

由於在通訊過程中易受到外部幹擾導致傳輸數據出現偏差,所以在有效數據之後加上校驗位解決。校驗方法有奇校驗(odd)、偶校驗(even)、0校驗(space)、1校驗(mark)及無校驗(noparity)。

奇校驗要求有效數據和校驗位中“1”的個數為奇數,比如一個8位長的有效數據為:01101001,此時共有4個“1”,為達到奇校驗效果,校驗位為“1”,最後傳輸的是8位有效數據加1位校驗位,共9位。

而偶校驗剛好相反,要求有效數據和校驗位的“1”數量為偶數,則此時為達到偶校驗效果,校驗位為“0”。

而0校驗則無論有效數據中是什麽數據內容,校驗位總是為“0”,1校驗校驗位總是為“1”。

串口通訊(上)——基礎概念