天天看點

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

作者:西安華清遠見

很多學嵌入式的同學是不是經常被各種協定搞的暈頭轉向,都分不清是幹嘛的?

今天華妹就給大家好好捋捋嵌入式常用的5大協定,全是幹貨,話不多說,趕緊上車!

01

UART總線通信協定

1. 原理

序列槽通訊的資料包由發送裝置通過自身的TXD接口傳輸到接收裝置的RXD接口。在序列槽通訊的協定層中,規定了資料包的内容,它由啟始位、主體資料、校驗位以及停止位組成, 通訊雙方的資料包格式要約定一緻才能正常收發資料。

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

2. 波特率

今天主要講解的是序列槽異步通訊,異步通訊中由于沒有時鐘信号,是以兩個通訊裝置之間需要約定好波特率, 即每個碼元的長度,以便對信号進行解碼,上圖中用虛線分開的每一格就是代表一個碼元。常見的波特率為4800、9600、115200等。

3. 通訊的起始和停止信号

序列槽通訊的一個資料包從起始信号開始,直到停止信号結束。資料包的起始信号由一個邏輯0的資料位表示,而資料包的停止信号可由0.5、1、1.5或2個邏輯1的資料位表示,隻要雙方約定一緻即可。

4. 有效資料

在資料包的起始位之後緊接着的就是要傳輸的主體資料内容,也稱為有效資料,有效資料的長度常被約定為5、6、7、8位長。

5. 資料校驗

在有效資料之後,有一個可選的資料校驗位,由于資料通信相對更容易受到外部幹擾導緻傳輸資料出現偏差,可以在傳輸過程加上校驗位來解決這個問題。校驗方法有奇校驗(odd)、偶校驗(even)、0校驗(space)、1校驗(mark)以及無校驗(noparity)。

  • 奇校驗要求有效資料和校驗位中"1"的個數為奇數,比如一個8位長的有效資料為:01101001,此時總共有4個"1",為達到奇校驗效果,校驗位為"1", 最後傳輸的資料将是8位的有效資料加上1位的校驗位總共9位。
  • 偶校驗與奇校驗要求剛好相反,要求幀資料和校驗位中"1"的個數為偶數,比如資料幀:11001010,此時資料幀"1"的個數為4個,是以偶校驗位為"0"。
  • 0校驗是不管有效資料中的内容是什麼,校驗位總為"0"。
  • 1校驗是校驗位總為"1"。
  • 在無校驗的情況下,資料包中不包含校驗位。

02

IIC總線通信協定

1. IIC總線簡介

I2C是Inter-Integrated Circuit的簡稱,讀作:I-squared-C。由飛利浦公司于1980年代提出,為了讓主機闆、嵌入式系統或手機用以連接配接低速周邊外部裝置而發展。主要用途:SOC和周邊外設間的通信(如:EEPROM,電容觸摸晶片,各種Sensor等)。

2. 實體接口

I2C總線隻使用兩條雙向漏極開路的信号線(串行資料線:SDA,及串行時鐘線:SCL),并利用電阻上拉。

  • SCL(Serial Clock):串行時鐘線,傳輸CLK信号,一般是主裝置向從裝置提供;
  • SDA(Serial Data):串行資料線,傳輸通信資料 I2C使用一個7bit的裝置位址,一組總線最多和112個節點通信。最大通信數受限于位址空間及400pF的總線電容。

I2C總線廣泛應用在EEPROM、實時時鐘、LCD及其他晶片的接口。

I2C允許相當大的工作電壓範圍,典型的電壓基準為:+3.3V或+5V。

常見的I2C總線以傳輸速率的不同分為不同的模式:标準模式(100Kbit/s)、低速模式(10Kbit/s)、快速模式(400Kbit/s)、高速模式(3.4Mbit/s), 時鐘頻率可以被下降到零,即暫停通信。該總線是一種多主要總線,即可以在總線上放置多個主裝置節點,在停止位(P)發出後,即通訊結束後,主裝置節點可以成為從裝置節點。

主裝置節點:産生時鐘并發起通信的裝置節點。

從裝置節點:接收時鐘并響應主裝置節點尋址的裝置節點。

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

(1) I2C通信雙方地位不對等,通信由主裝置發起,并主導傳輸過程,從裝置按I2C協定接收主裝置發送的資料,并及時給出響應。

(2) 主裝置、從裝置由通信雙方決定(I2C協定本身無規定),既能當主裝置,也能當從裝置(需要軟體進行配置)。

(3) 主裝置負責排程總線,決定某一時刻和哪個從裝置通信。同一時刻,I2C總線上隻能有一對主裝置、從裝置通信。

(4) 每個I2C從裝置在I2C總線通訊中有一個I2C從裝置位址,該位址唯一,是從裝置的固有屬性,通信中主裝置通過從裝置位址來找到從裝置。

3. 總線狀态

空閑态:沒有裝置發生通信。

忙态:其中一個從裝置和主裝置通信,I2C總線被占用,其他從裝置處于等待狀态。

4. 通信協定

時序:在通信中時序是通信線上按時間順序發生的電平變化,及這些電平變化對通信的意義。

每個通信周期都由一個起始位開始通信,由一個結束位結束通信,中間部分是傳遞的資料。

4.1 起始位和停止位

I2C總線通訊由起始位開始通訊,結束位停止通訊,并釋放I2C總線。起始位和結束位都由主裝置發出。

起始位(S):在SCL為高電平時,SDA由高電平變為低電平。

結束位(P):在SCL為高電平時,SDA由低電平變為高電平。

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

4.2 資料格式與應答

I2C資料以位元組(即8bits)為機關傳輸,每個位元組傳輸完後都會有一個ACK應答信号。應答信号的時鐘是由主裝置産生的。

應答(ACK):拉低SDA線,并在SCL為高電平期間保持SDA線為低電平。

非應答(NOACK):不要拉低SDA線(此時SDA線為高電平),并在SCL為高電平期間保持SDA線為高電平。

在傳輸期間,如果從裝置來不及處理主裝置發送的資料,從裝置會保持SCL線為低電平,強迫主裝置等待從裝置釋放SCL線,直到從裝置處理完後,釋放SCL線,接着進行資料傳輸。

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

5. 資料傳輸通訊

5.1 寫資料

開始資料傳輸後,先發送一個起始位(S),主裝置發送一個位址資料, 然後主裝置釋放SDA線,并等待從裝置的應答信号(ACK)。每一個位元組資料的傳輸都要跟一個應答信号位。資料傳輸以停止位(P)結束,并且釋放I2C總線。

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

5.2 讀資料

開始通訊時,主裝置先發送一個起始信号(S),主裝置發送一個位址資料, 然後主裝置釋放SDA線,并等待從裝置的應答信号(ACK)。從裝置應答主裝置後,主裝置再發送要讀取的寄存器位址,從裝置應答主裝置(ACK)。主裝置再次發送起始信号(Sr),主裝置發送裝置位址(包含讀标志),從裝置應答主裝置,并将該寄存器的值發送給主裝置。

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

03

SPI總線通訊協定

1. 什麼是SPI

SPI接口是Motorola首先提出的全雙工同步串行總線,采用主從模式(Master Slave)架構,支援多slave模式應用。

在實際開發過程中,大多數采用單Master。多slave模式時鐘由Master控制,在時鐘移位脈沖下,資料按位傳輸,高位在前,低位在後;也可以低位在前,高位在後。

SPI接口有2根單向資料線,為全雙工通信,目前應用中的資料速率可達幾Mbps的水準。

2. SPI總線硬體連接配接

SPI四根信号線

  • 裝置選擇線:NSS
  • 時鐘線:SCL
  • 串行輸出資料線:MOSI
  • 串行輸入資料線:MISO

M:master O:output S:slave I:input

(1) MOSI:主器件資料輸出(寫),從器件資料輸入(讀)

(2) MISO:主器件資料輸入,從器件資料輸出

(3) SCLK :時鐘信号,由主器件産生

(4) /SS:從器件使能信号,由主器件控制(片選線)

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

3. SPI優點

支援全雙工通信、通信簡單、資料傳輸速率快。

4. SPI缺點

沒有指定的流控制、沒有應答機制确認是否接收到資料,是以跟IIC總線協定比較在資料,可靠性上有一定的缺陷。

5. 協定通信時序詳解

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)
  • 起始信号: NSS信号線由高變低,是SPI通訊的起始信号。
  • 結束信号:NSS信号由低變高,是SPI通訊的停止信号。
  • 資料傳輸:SPI使用MOSI及MISO信号線來傳輸資料,使用SCK信号線進行資料同步。MOSI及MISO資料線在SCK的每個時鐘周期傳輸一位資料,且資料輸入輸出是同時進行 的。SPI每次資料傳輸可以 8 位或 16 位為機關,每次傳輸的機關數不受限制。

6. SPI總線通信模式

筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)
筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)
筆試常考:嵌入式5大常用協定(UART、RS232、RS485、IIC、SPI)

04

RS232總線描述

1. 概述

RS-232接口符合電子工業聯盟(EIA)建立的串行資料通信接口标準。原始編号是EIA-RS-232(簡稱232,RS232),它廣泛用于計算機串行接口外設連接配接。連接配接電纜以及機械、電氣、信号和傳輸過程。RS-232-C标準規定的資料傳輸速率為每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。

2. 特性 

RS-232是現在主流的串行通信接口之一。由于RS232接口标準出現較早,難免有不足之處,主要有以下四點:

(1) 接口的信号電平值較高,易損壞接口電路的晶片。RS232接口任何一條信号線的電壓均為負邏輯關系。即:邏輯“1”為-3—-15V;邏輯“0”:+3—+15V,噪聲容限為2V。即要求接收器能識别高于+3V的信号作為邏輯“0”,低于-3V的信号作為邏輯“1”,TTL電平為5V為邏輯正,0為邏輯負。與TTL電平不相容故需使用電平轉換電路方能與TTL電路連接配接。

(2) 傳輸速率較低,在異步傳輸時,比特率為20Kbps;是以在51CPLD開發闆中,綜合程式波特率隻能采用19200,也是這個原因。

(3) 接口使用一根信号線和一根信号傳回線而構成共地的傳輸形式,這種共地傳輸容易産生共模幹擾,是以抗噪聲幹擾性弱。

(4) 傳輸距離有限。最大傳輸距離标準值為50英尺,實際上也隻能用在15米左右。

05

RS485概述

1. 場景

在要求通信距離為幾十米到上千米時,廣泛采用RS-485串行總線,RS-485采用平衡發送和差分接收,是以具有抑制共模幹擾的能力。加上總線收發器具有高靈敏度,能檢測低至200mV的電壓,故傳輸信号能在千米以外得到恢複。RS-485采用半雙工工作方式,任何時候隻能有一點處于發送狀态,是以,發送電路須由使能信号加以控制。

2. RS485特點

RS-485用于多點互連時非常友善,可以省掉許多信号線。應用RS-485可以聯網構成分布式系統,其允許最多并聯32台驅動器和32台接收器。針對RS-232-C的不足,新标準RS-485具有以下特點:

(1) RS-485的電氣特性:邏輯“1”以兩線間的電壓差+2V~+6V表示,邏輯“0”以兩線間的電壓差-6V~-2V表示。接口信号電平比RS-232-C降低了,就不容易損壞接口電路晶片,且該電平與TTL電平相容,刻友善與TTL電路連接配接。

(2) 資料最高傳輸速率為:10Mbps。

(3) RS-485接口采用平衡驅動器和差分接收器的組合,抗共模幹擾能力強,即抗噪聲性能好。

(4) RS-485接口的最大傳輸距離标準值4000英尺,實際上可達3000米。

(5) RS-232-C接口在總線上隻允許連接配接一個收發器,即單站能力;而RS-485接口在總線上隻允許連接配接多達128個收發器,即具有多站能力,這樣使用者可以利用單一的RS-485接口友善地建立裝置網絡。

06

IIC總線和SPI總線對比

1. 相同點

均采用串行同步總線、都采用TTL電平、主從模式架構。

2. 不同點

  • IIC總線為半雙工通信,因為IIC總線隻有一根SDA資料線。
  • SPI總線為全雙工通信,因為SPI總線有兩個單向的資料線(MOSI和MISO)。
  • IIC總線有應答信号,SPI總線沒有應答信号。
  • IIC總線通過尋址進行選擇和哪一個從機進行通信。
  • SPI總線通過片選線選擇和哪一個從機進行通信,片選線向從機發送使能信号。
  • 比如說有10個從機裝置,需要10根片選線,比較浪費硬體引腳資源。
  • IIC總線通過高低電平的變化進行資料傳輸。
  • SPI總線邊沿觸發,邊沿采樣。

07

RS232和RS484總線對比

工作模式:RS232 為全雙工,RS485 為半雙工。

傳輸方式:RS485和RS232隻是實體協定的通信(即接口标準),RS485是差分傳輸方式,RS232是單端傳輸方式,但通信程式沒有太大差別

信号線:RS485接口組成的半雙工網絡,一般隻需二根信号線。RS-232 口一般隻使用 RXD、TXD、GND 三條線

抗幹擾性:RS485接口是采用平衡驅動器和差分接收器的組合,抗噪聲幹擾性好。RS232接口使用一根信号線和一根信号傳回線而構成共地的傳輸形式,這種共地傳輸容易産生共模幹擾

傳輸距離:RS485接口的最大傳輸距離标準值為1200米(9600bps時),實際上可達3000米。RS232傳輸距離有限,最大傳輸距離标準值為50米,實際上也隻能用在15米左右。

通信能力:RS485接口在總線上是允許連接配接多達128個收發器,使用者可以利用單一的 RS485 接口友善地建立起裝置網絡。RS232隻允許一對一通信

傳輸速率:RS232傳輸速率較低,在異步傳輸時,波特率為20Kbps。RS485的資料最高傳輸速率為10Mbps。

電氣電平值:RS485的邏輯"1"以兩線間的電壓差為+(2-6)V 表示;邏輯"0"以兩線間的電壓差為-(2-6)V表示。在 RS232中任何一條信号線的電壓均為負邏輯關系,即:邏輯"1",-(5-15)V;邏輯"0 " +(5- 15)V 。

繼續閱讀