一、UART協(xié)議
1.UART簡介
通用異步收發(fā)器,是一種通用的串行、異步通信總線,該總線有兩條數據線,可以實現全雙工的發(fā)送和接收在嵌入式系統(tǒng)中常用于主機與輔助設備之間的通信。
2.UART接口
TXD:發(fā)送數據;RXD:接收數據;CTS:清除發(fā)送、允許發(fā)送;RTS:請求發(fā)送。
RTS/CTS協(xié)議即請求發(fā)送/允許發(fā)送協(xié)議,相當于一種握手協(xié)議,主要用來解決"隱藏終端"問題。"隱藏終端"是指,基站A向基站B發(fā)送信息,基站C未偵測到A也向B發(fā)送,故A和C同時將信號發(fā)送至B,引起信號沖突,最終導致發(fā)送至B的信號都丟失了。"隱藏終端"多發(fā)生在大型單元中(一般在室外環(huán)境),這將帶來效率損失,并且需要錯誤恢復機制。當需要傳送大容量文件時,尤其需要杜絕“隱藏終端”現象的發(fā)生。IEEE802.11提供了如下解決方案。在參數配置中,若使用RTS/CTS協(xié)議,同時設置傳送上限字節(jié)數,一旦待傳送的數據大于此上限值時,即啟動RTS/CTS握手協(xié)議:首先,A向B發(fā)送RTS信號,表明A要向B發(fā)送若干數據,B收到RTS后,向所有基站發(fā)出CTS信號,表明已準備就緒,A可以發(fā)送,其余基站暫時“按兵不動”,然后,A向B發(fā)送數據,最后,B接收完數據后,即向所有基站廣播ACK確認幀,這樣,所有基站又重新可以平等偵聽、競爭信道了。
3.UART幀格式
空閑位:數據線在空閑的時候,數據線的狀態(tài)為高電平;
起始位:表示一次通信的開始;
數據位:串口協(xié)議規(guī)定,先發(fā)低位、后發(fā)高位;可以發(fā)送5-8位數據;
校驗位:校驗數據的正確性,若數據位1的個數為偶數,則檢驗位為1,否則為0;檢驗位只能發(fā)現錯誤,但不能糾錯。
停止位:表示一次通信的結束,數據線的狀態(tài)為高電平。
二、I2C協(xié)議
1.I2C物理層特點
(1)它是一個支持設備的總線。“總線”指多個設備共用的信號線。在一個 I2C 通訊總線中,可連接多個I2C通訊設備,支持多個通訊主機及多個通訊從機。
(2)一個I2C總線只使用兩條總線線路,一條雙向串行數據線(SDA) ,一條串行時鐘線(SCL)。數據線即用來表示數據,時鐘線用于數據收發(fā)同步。
(3)每一個連接總線的設備都有一個獨立的地址,主機可以通過這個地址進行選擇連接總線的設備與之通信。
(4)總線通過上拉電阻接到電源。當I2C設備空閑時,會輸出高阻態(tài),而當所有設備都空閑,都輸出高阻態(tài)時,由上拉電阻把總線拉成高電平。
(5)多個主機同時使用總線時,為了防止多個設備發(fā)送數據沖突,會利用仲裁方式決定由哪個設備占用總線。
(6)具有三種傳輸模式:標準模式傳輸速率為100kbit/s,快速模式為400kbit/s,快速模式+為1Mbit/s,高速模式下可達3.4Mbit/s,但目前大多I2C設備尚不支持高速模式。
(7)連接到相同總線的 IC 數量受到總線的最大電容 400pF限制。
2.字節(jié)格式
SDA數據線上的每個字節(jié)必須是8位,每次傳輸的字節(jié)數量沒有限制。每個字節(jié)后必須跟一個響應位(ACK)。首先傳輸的數據是最高位(MSB),SDA上的數據必須在SCL高電平周期時保持穩(wěn)定,數據的高低電平翻轉變化發(fā)生在SCL低電平時期。
3.7-bit尋址數據傳輸
常見的傳輸方向及格式有如下兩種:
(1)主機寫數據——從機接收,傳輸方向不變
要進行數據寫入從機,首先主機發(fā)送START條件+從機地址+R/W=0(寫操作,設置為0),從機讀取到該地址后回應ACK,主機將繼續(xù)發(fā)送需要操作的寄存器地址,從機繼續(xù)回應ACK,表示從機準備完畢。之后主機發(fā)送寄存器的數據(可能是1byte也可能是多個byte),每個byte從機都會回應ACK,發(fā)送完成后,主機發(fā)送STOP命令,將總線釋放,完成寫操作。如下圖示意:
(2)主機讀數據-從機發(fā)送,傳輸方向改變
讀數據與寫數據相似,但讀數據會多幾個步驟。要想從從機讀取數據,首先要知道從機地址以及寄存器地址,這兩部需要進行讀操作來實現,和寫操作一致。讀操作完成后,主機發(fā)送重復開始+從機地址+R/W=1(讀操作,設置為1),從機返回ACK,此時主機釋放SDA線轉由從機控制,主機讀取SDA總線進行數據接收,每發(fā)送1 byte數據,主機會響應ACK表示還需要再接收數據。當主機接收完想要的數據后,主機將會返回NACK,告訴從機釋放SDA總線,隨后主機發(fā)送STOP命令,將總線釋放,完成讀操作。如下圖示意:
4.SCL同步和SDA仲裁
SCL線的同步(時鐘同步)
SCL同步是由于總線具有線“與”的邏輯功能,即只要有一個節(jié)點發(fā)送低電平時,總線上就表現為低電平。當所有的節(jié)點都發(fā)送高電平時,總線才能表現為高電平。正是由于線“與”邏輯功能的原理,當多個節(jié)點同時發(fā)送時鐘信號時,在總線上表現的是統(tǒng)一的時鐘信號。這就是SCL的同步原理。
SDA仲裁
SDA線的仲裁也是建立在總線具有線“與”邏輯功能的原理上的。節(jié)點在發(fā)送1位數據后,比較總線上所呈現的數據與自己發(fā)送的是否一致。是,繼續(xù)發(fā)送;否則,退出競爭。SDA線的仲裁可以保證I2C總線系統(tǒng)在多個主節(jié)點同時企圖控制總線時通信正常進行并且數據不丟失。總線系統(tǒng)通過仲裁只允許一個主節(jié)點可以繼續(xù)占據總線。
三、SPI協(xié)議
1.SPI簡介
SPI是串行外設接口,也是一種單片機外設芯片串行擴展接口,是一種高速、全雙工、同步通信總線,所以可以在同一時間發(fā)送和接收數據,SPI沒有定義速度限制,通常能達到甚至超過10M/bps。
SPI有主、從兩種模式,通常由一個主模塊和一個或多個從模塊組成(SPI不支持多主機),主模塊選擇一個從模塊進行同步通信,從而完成數據的交換。提供時鐘的為主設備(Master),接收時鐘的設備為從設備(Slave),SPI接口的讀寫操作,都是由主設備發(fā)起,當存在多個從設備時,通過各自的片選信號進行管理。
MISO:主設備數據輸入,從設備數據輸出;
MOSI:主設備數據輸出,從設備數據輸入;
SCLK:時鐘信號,由主設備產生;
CS/SS:從設備使能信號,由主設備控制,一主多從時,CS/SS是從芯片是否被主芯片選中的控制信號,只有片選信號為預先規(guī)定的使能信號時(高電位或低電位),主芯片對此從芯片的操作才有效。一主設備一從設備模式
SPI主設備和從設備都有一個串行移位寄存器,主設備通過向它的SPI串行寄存器寫入一個字節(jié)來發(fā)起一次傳輸。
SPI數據通信的流程
主設備發(fā)起信號,將CS/SS拉低,啟動通信。
主設備通過發(fā)送時鐘信號,來告訴從設備進行寫數據或者讀數據操作(采集時機可能是時鐘信號的上升沿(從低到高)或下降沿(從高到低)),它將立即讀取數據線上的信號,這樣就得到了一位數據(1bit)。
主機(Master)將要發(fā)送的數據寫到發(fā)送數據緩存區(qū)(Menory),緩存區(qū)經過移位寄存器(緩存長度不一定,看單片機配置),串行移位寄存器通過MOSI信號線將字節(jié)一位一位的移出去傳送給從機,同時MISO接口接收到的數據經過移位寄存器一位一位的移到接收緩存區(qū)。
從機(Slave)也將自己的串行移位寄存器(緩存長度不一定,看單片機配置)中的內容通過MISO信號線返回給主機。同時通過MOSI信號線接收主機發(fā)送的數據,這樣,兩個移位寄存器中的內容就被交換。
SPI只有主模式和從模式之分,沒有讀和寫的說法,外設的寫操作和讀操作是同步完成的。若只進行寫操作,主機只需忽略接收到的字節(jié)(虛擬數據);反之,若主機要讀取從機的一個字節(jié),就必須發(fā)送一個空字節(jié)來引發(fā)從機的傳輸。也就是說,你發(fā)一個數據必然會收到一個數據;你要收一個數據必須也要先發(fā)一個數據。
SPI時鐘特點
主要包括:時鐘速率、時鐘極性和時鐘相位三方面。
時鐘速率
SPI總線上的主設備必須在通信開始時候配置并生成相應的時鐘信號。從理論上講,只要實際可行,時鐘速率就可以是你想要的任何速率,當然這個速率受限于每個系統(tǒng)能提供多大的系統(tǒng)時鐘頻率,以及最大的SPI傳輸速率。
時鐘極性
根據硬件制造商的命名規(guī)則不同,時鐘極性通常寫為CKP或CPOL。時鐘極性和相位共同決定讀取數據的方式,比如信號上升沿讀取數據還是信號下降沿讀取數據。
CKP可以配置為1或0。可以根據需要將時鐘的默認狀態(tài)(IDLE)設置為高或低。極性反轉可以通過簡單的邏輯逆變器實現
CKP = 0:時鐘空閑IDLE為低電平 0;
CKP = 1:時鐘空閑IDLE為高電平1。
時鐘相位
根據硬件制造商的不同,時鐘相位通常寫為CKE或CPHA。顧名思義,時鐘相位/邊沿,也就是采集數據時是在時鐘信號的具體相位或者邊沿;
CKE = 0:在時鐘信號SCK的第一個跳變沿采樣;
CKE = 1:在時鐘信號SCK的第二個跳變沿采樣。
4.SPI四種MODE
根據SPI的時鐘極性和時鐘相位特性可以設置4種不同的SPI通信操作模式,它們的區(qū)別是定義了在時鐘脈沖的哪條邊沿轉換輸出信號,哪條邊沿采樣輸入信號,還有時鐘脈沖的穩(wěn)定電平值(就是時鐘信號無效時是高還是低),詳情如下所示:
Mode0:CKP=0,CKE =0:當空閑態(tài)時,SCK處于低電平,數據采樣是在第1個邊沿,也就是SCK由低電平到高電平的跳變,所以數據采樣是在上升沿(準備數據),(發(fā)送數據)數據發(fā)送是在下降沿。
Mode1:CKP=0,CKE=1:當空閑態(tài)時,SCK處于低電平,數據發(fā)送是在第2個邊沿,也就是SCK由低電平到高電平的跳變,所以數據采樣是在下降沿,數據發(fā)送是在上升沿。
Mode2:CKP=1,CKE=0:當空閑態(tài)時,SCK處于高電平,數據采集是在第1個邊沿,也就是SCK由高電平到低電平的跳變,所以數據采集是在下降沿,數據發(fā)送是在上升沿。
Mode3:CKP=1,CKE=1:當空閑態(tài)時,SCK處于高電平,數據發(fā)送是在第2個邊沿,也就是SCK由高電平到低電平的跳變,所以數據采集是在上升沿,數據發(fā)送是在下降沿。
5.SPI優(yōu)缺點
優(yōu)點:
無起始位和停止位,因此數據位可以連續(xù)傳輸而不會被中斷;
沒有像I2C這樣復雜的從設備尋址系統(tǒng);
數據傳輸速率比I2C更高(幾乎快兩倍);
分離的MISO和MOSI信號線,因此可以同時發(fā)送和接收數據;
極其靈活的數據傳輸,不限于8位,它可以是任意大小的字;
非常簡單的硬件結構。從站不需要唯一地址(與I2C不同)。從機使用主機時鐘,不需要精密時鐘振蕩器/晶振(與UART不同)。不需要收發(fā)器(與CAN不同)。
缺點:
使用四根信號線(I2C和UART使用兩根信號線);
無法確認是否已成功接收數據(I2C擁有此功能);
沒有任何形式的錯誤檢查,如UART中的奇偶校驗位;
只允許一個主設備;
沒有硬件從機應答信號(主機可能在不知情的情況下無處發(fā)送);
沒有定義硬件級別的錯誤檢查協(xié)議;
與RS-232和CAN總線相比,只能支持非常短的距離。
CAN協(xié)議
1.CAN簡介
CAN總線簡稱——控制器局域網絡,是一種串行的差分總線,并且這種差分總線只傳遞數據信息。CAN總線已經是國際上的一種通信標準(ISO11519),它具有高可靠性、良好的錯誤檢測能力、總線仲裁等優(yōu)良特點,被廣泛應用在汽車控制系統(tǒng)、環(huán)境惡劣場所、電磁輻射強、干擾性大等場所中。
CAN是一種異步的通信方式,它的通訊不需要時鐘進行同步,線路上只有CAN_H、CAN_L兩根通信線,數據以差分信號的方式進行傳輸。
CAN的閉環(huán)通信網絡
CAN控制器 -- CAN收發(fā)器 -- 濾波電路
最高速度可達1Mbps,總線最大長度為40m;總線的兩端要求各有一個120歐姆的電阻。
CAN的開環(huán)通信網絡
最高的通信速度為125Kbps,是一種低速通信的連接方式;最大的通信距離可達1Km;兩根總線獨立,且要求每根總線上要串聯(lián)一個2.2K歐姆的電阻。
CAN總線
CAN總線的數據傳輸使用的是差分信號的方式進行的。這兩根線中的信號振幅相等,相位相反,邏輯1 和 邏輯0 通過兩根信號線的電壓差值表示出來。在CAN的應用中,邏輯1也稱為隱性電平,邏輯0也稱為顯性電平。
CAN總線上,在同一個時刻只能處于隱性電平(邏輯1)或者顯性電平(邏輯0)中的一個狀態(tài),且顯性電平相比隱性電平具有優(yōu)先權。比如:CAN總線上有兩個節(jié)點,在同一個時刻,一個輸出隱性電平,一個輸出顯性電平,這個時候總線上是顯性電平狀態(tài)。
CAN 的位同步
在CAN中使用了 “位同步” 的方式來抵抗干擾、吸收誤差,實現對總線電平信號的正常采樣,確保通訊正常進行。同時,這個位同步也是用于調節(jié)通信過程中的采樣點的。
CAN實現位同步的過程中,會把每一個數據位的時序進行分解,會分解成SS段、PTS段、PBS1段、PBS2段,這四個段加起來就是一個CAN的數據位長度。分解后的最小時間單位為Tq。它們分別如下:
同步段(SS段):該段的大小固定為1Tq。
當總線上的節(jié)點在SS段的范圍內檢測到總線上信號發(fā)生了跳變,就認為該節(jié)點與總線的時序是同步的。當節(jié)點與總線同步時,在采樣點采集到的總線電平即可以確認為該位的電平。
傳播時間段(PTS段):該段的大小為 1Tq ~ 8Tq。
這個時間段是用于補償網絡的物理延時時間。是總線上輸入比較器延時和輸出驅動器延時總和的兩倍。
相位緩沖段1(PBS1):該段的大小為 1Tq ~ 8Tq。
主要用來補償邊沿階段的誤差,它的時間長度在重新同步的時候可以加長。
相位緩沖段2(PBS2):該段的大小為 1Tq ~ 8Tq。
是用來補償邊沿階段誤差的,它的時間長度在重新同步時可以縮短。
上圖是對CAN通信中的邏輯0進行分解的說明示意圖。圖中就表示每個數據位的長度為19Tq(SS 段占 1Tq,PTS 段占 6Tq,PBS1 段占 5Tq,PBS2 段占 7Tq),信號的采樣點位于 PBS1 段與 PBS2 段之間,通過控制各段的長度,可以改變采樣點的位置。
CAN的幀種類和用途
CAN總線的數據幀
數據幀一般由 7 個段構成,即:
(1) 幀起始。表示數據幀開始的段。
(2) 仲裁段。表示該幀優(yōu)先級的段,即ID信息。
(3) 控制段。表示數據的字節(jié)數及保留位的段。
(4) 數據段。數據的內容,一幀可發(fā)送 0~8 個字節(jié)的數據。
(5) CRC 段。檢查幀的傳輸錯誤的段。
(6) ACK 段。表示確認正常接收的段。
(7) 幀結束。表示數據幀結束的段。
RS485簡介
RS485是通信物理層的標準接口,一種信號傳輸方式,OSI(開放系統(tǒng)互連)模型的第一級。創(chuàng)建 RS-485 是為了擴展 RS-232 接口的物理功能。RS485采用半雙工工作方式。
關鍵特性:
(1)接口電平低,不易損壞芯片。RS485的電氣特性:邏輯“1”以兩線間的電壓差為+(2–6)V表示;邏輯“0”以兩線間的電壓差為-(2–6)V表示。接口信號電平比RS232降低了,不易損壞接口電路的芯片。
(2)傳輸速率高。最高傳輸速率為:10Mbps
(3)抗干擾能力強。RS485接口是采用平衡驅動器和差分接收器的組合,抗共模干擾能力增強,即抗噪聲干擾性好。
(4)傳輸距離遠,支持節(jié)點多。RS485總線最長可以傳輸1200m以上(速率≤100Kbps)一般最大支持32個節(jié)點,如果使用特制的485芯片,可以達到128個或者256個節(jié)點,最大的可以支持到400個節(jié)點。
2.RS232簡介
RS232接口被廣泛用于計算機串行接口外設連接。連接電纜和機械、電氣特性、信號功能及傳送過程。
RS232特點:
(1)接口的信號電平值較高,易損壞接口電路的芯片。
(2)傳輸速率較低,在異步傳輸時,比特率為20Kbps。
(3)接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這種共地傳輸容易產生共模干擾,所以抗噪聲干擾性弱
(4)傳輸距離有限,最大傳輸距離標準值為50英尺,實際上也只能用在15米左右。
RS422簡介
RS422標準全稱是"平衡電壓數字接口電路的電氣特性"”,它定義了接口電路的特性。實際上還有一根信號地線,共5根線。由于接收器采用高輸入阻抗和發(fā)送驅動器比RS232更強的驅動能力,故允許在相同傳輸線上連接多個接收節(jié)點,最多可接10個節(jié)點。一個主設備(Master),其余為從設備(Slave),從設備之間不能通信,所以RS422支持點對多的雙向通信。
RS422和RS485電路原理基本相同,都是以差動方式發(fā)送和接收,不需要數字地線。差動工作是同速率條件下傳輸距離遠的根本原咽,這正是二者與RS232的根本區(qū)別,因為RS232是單端輸入輸出,雙工工作時至少需要數字地線。發(fā)送線和接受線三條線(異步傳輸),還可以加其它控制線完成同步等功能。
RS422通過兩對雙絞線可以全雙工工作收發(fā)互不影響,而RS485只能半雙工工作,發(fā)收不能同時進行,但它只需要一對雙絞線。
RS422的電氣性能與RS485完全一樣。主要的區(qū)別在于:RS422有4根信號線:兩根發(fā)送(Y、Z)、兩根接收(A B)。由于RS422的收與發(fā)是分開的所以可以同時收和發(fā)(全雙工)﹔RS485有2根信號線:發(fā)送和接收。
4.RS485,RS422,RS232的接口協(xié)議的區(qū)別
(1)RS232是全雙工的,RS485是半雙工的,RS422是全雙工的。
(2)RS485與RS232僅僅是通訊的物理協(xié)議(即接口標準)有區(qū)別,RS485是差分傳輸方式,RS232是單端傳輸方式,但通訊程序沒有太多的差別。
(3)PC機上已經配備有RS232,直接使用就行了,若使用RS485通訊,只要在RS232端口上配接一個RS232轉RS485的轉換頭就可以了,不需要修改程序。
(4)RS-232只允許一對一通信(單站能力),RS-485接口在總線上是允許連接多達128個收發(fā)器(具有多站能力)。
-
CAN
+關注
關注
57文章
2715瀏覽量
463364 -
SPI
+關注
關注
17文章
1700瀏覽量
91312 -
uart
+關注
關注
22文章
1227瀏覽量
101170
原文標題:UART、SPI、I2C、CAN、RS485、RS232、RS422通信協(xié)議總結
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論