加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • UART
    • I2C
    • SPI
    • RS232、RS485
    • CAN
    • I2S
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

一文總結(jié)嵌入式【七大通信總線協(xié)議】

05/19 10:55
1萬
閱讀需 14 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

本文深入而全面地概述了嵌入式領(lǐng)域內(nèi)七種經(jīng)典串行通信協(xié)議:UART、RS232、RS485、I2CSPI、CAN和I2S。這些協(xié)議能夠適應(yīng)不同的應(yīng)用需求,包括通信速度、傳輸距離、系統(tǒng)復(fù)雜度和成本等多個方面。通過了解每種協(xié)議的核心特性和差異,可以為電子系統(tǒng)設(shè)計中選擇最適宜的通信方式提供重要參考哦。

UART

通用異步收發(fā)器(Universal Asynchronous Receiver Transmitter),常見的串行、異步通信總線,兩條數(shù)據(jù)線Tx、Rx,實現(xiàn)全雙工通信,常用于主機與外設(shè)的通信,點對點。

UART幀格式:

在這里插入圖片描述

關(guān)鍵點:

  • 串行、異步
  • 需要雙方約定好傳輸?shù)?a class="article-link" target="_blank" href="/baike/497736.html">波特率(因為沒有時鐘線)
  • 空閑位是高位
  • 不能連續(xù)發(fā)數(shù)據(jù),一次最多發(fā)5-8位(防止誤差累計,因為沒有時鐘線)

TX接RX,RX接TX

在這里插入圖片描述

一般串口監(jiān)視器里面,設(shè)置好這幾個參數(shù)就行,默認是這樣,基本就改改波特率。

在這里插入圖片描述

I2C

串行、半雙工。兩根線SDA(數(shù)據(jù)線)、SCL(時鐘線

近距離、低速,硬件結(jié)構(gòu)簡單,成本低。

最大特點:多主機!

在這里插入圖片描述

主機有權(quán)發(fā)起和結(jié)束一次通信,從機只能被主機呼叫。

主線上有多個主機時,IIC具備沖突檢測仲裁功能。

每個IIC總線上的器件都有一個唯一的地址(7bit),每個器件可以作為主機也可以作為從機(同一時間只能有一個主機)

I2C通信過程

  1. 主機發(fā)送起始信號啟用總線(其他主機收到后就知道現(xiàn)在總線被占用)
  2. 主機發(fā)送一個字節(jié)數(shù)據(jù)指明從機地址(7bit)和后續(xù)字節(jié)的傳送方向(1bit,0:主到從,1:從到主)
  3. 被尋址的從機發(fā)送應(yīng)答信號回應(yīng)主機
  4. 發(fā)送器發(fā)送一個字節(jié)數(shù)據(jù)
  5. 接收器發(fā)送應(yīng)答信號回應(yīng)發(fā)送器 (循環(huán)步驟4、5)
  6. 通信完成后主機發(fā)送停止信號釋放總線

尋址方式(主機給從機發(fā)的第一個字節(jié)數(shù)據(jù)):

在這里插入圖片描述

一次通信時發(fā)送器可以發(fā)任意多個字節(jié)數(shù)據(jù)給接收器。上面第一個字節(jié)數(shù)據(jù)的最后一位決定了發(fā)送器是主機還是從機。

IIC具體通信過程

空閑時SCL和SDA都是高電平

在這里插入圖片描述

規(guī)定每次傳一個字節(jié)(8bit),先發(fā)高位,

在這里插入圖片描述

發(fā)送器發(fā)完一個字節(jié)后,接收器必須發(fā)送1位應(yīng)答位,所以一幀共有9位。應(yīng)答位為低電平。

同步信號:

SCL為低電平時,發(fā)送器向數(shù)據(jù)線發(fā)一位數(shù)據(jù),在此期間數(shù)據(jù)線上信號允許發(fā)送變化。

SCL為高電平時,接收器從數(shù)據(jù)線讀取一位數(shù)據(jù),在此期間數(shù)據(jù)線上信號要穩(wěn)定。

典型I2C時序

在這里插入圖片描述
在這里插入圖片描述

A表示應(yīng)答,A非表示非應(yīng)答,S表示起始信號,P表示終止信號

SPI

Serial Peripheral Interface(SPI),串行外設(shè)接口高速、全雙工、同步一個主機,若干個從機

在這里插入圖片描述

在這里插入圖片描述

至少4根線:

MISO(master in server out)
MOSI(master out server in)
SCLK(時鐘)
CS (片選,通過使能它來選中不同的從機,有n個從機,主機就需要n條CS線)

SPI具體通信過程

先發(fā)高位 (MSB:most significant bit,LSB:least significant bit)

在這里插入圖片描述

SPI傳完一個字節(jié)后,不需要應(yīng)答!可以直接發(fā)下一個字節(jié)。

沒有起始信號,也沒有終止信號!

CLK下降沿發(fā)數(shù)據(jù),上升沿收數(shù)據(jù),或者? CLK上升沿發(fā)數(shù)據(jù),下降沿收數(shù)據(jù)(由極性和相位一起決定)

SPI極性和相位

SPI總線有四種不同的工作模式,取決于極性(CPOL)相位(CPHL) 這兩個因素。為了滿足不同場合,不同芯片的需求。

CPOL表示SCLK空閑時的狀態(tài)

CPOL=0,空閑時SCLK為低電平
CPOL=1,空閑時SCLK為高電平

CPHA表示采樣時刻

CPHA=0,每個周期的第一個時鐘沿采樣
CPHA=1,每個周期的第二個時鐘沿采樣

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

I2C與SPI異同

相同點

  1. 串行、同步
  2. TTL電平,傳輸距離不長
  3. 主從方式

不同點:

  1. I2C為半雙工,SPI全雙工
  2. I2C有應(yīng)答,SPI無應(yīng)答
  3. 尋址方式:I2C通過向總線廣播從機地址尋址,SPI通過使能不同CS引腳尋址
  4. I2C時鐘極性和相位固定,SPI有4種模式

因為SPI無應(yīng)答、快速尋址等優(yōu)勢,所以SPI速率比I2C快很多,幾M到幾十Mbps。

I2C一般幾百kbps,超高速模式下能5Mbps。

RS232、RS485

回顧一下UART串口通信,它其實在實際應(yīng)用中存在很多問題:

在這里插入圖片描述

UART的問題

1. 電氣接口不統(tǒng)一

UART只是對信號的時序進行了定義,而未定義接口的電氣特性;UART通信時一般直接使用處理器使用的電平,即TTL電平,但不同的處理器使用的電平存在差異, 高電平和低電平的具體定義不一樣,所以不同的處理器使用UART通信時一般不能直接相連。

2. 抗干擾能力差,通信距離短

TTL信號表示0和1,數(shù)據(jù)傳輸的時候很容易出錯,最多1、2m。

只能用于一個電路板上兩個不同芯片之間的通信。

RS232

用于串行通訊的標準。

依賴UART串口協(xié)議,在電氣層面做處理,統(tǒng)一了標準,能傳得更遠和更快。編程的話沒有任何區(qū)別,就是串口通信。

采用一個標準的連接器,且對9個引腳的作用和電平都做了規(guī)定。主要是用RX、TX和GND這三個引腳。

高電平:-3到-15v
低電平:+3到+15v
抗干擾能力增加,通信距離大致15m。

MCU通過TTL發(fā)出來的信號要接一個電平轉(zhuǎn)換芯片去轉(zhuǎn)成RS232的信號,比如MAX232芯片。類似usb-ttl芯片(ch340,cp2302)。

RS232的問題:

  1. 接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL電平不兼容,所以需要使用電平轉(zhuǎn)換芯片才能與TTL電路連接。
  2. 通信速度較低,易產(chǎn)生共模干擾,抗噪聲干擾性較弱,傳輸距離較短(15m)

RS485

與RS232類似,也是個基于串口的標準,但是是半雙工

與RS232相比最大特點:遠距離(1500m),抗干擾強,速度更快(幾百kbps到10 Mbps),允許接收多個收發(fā)器(可以組建設(shè)備網(wǎng)絡(luò))

在這里插入圖片描述

使用差分信號進行數(shù)據(jù)傳輸,有效減少共模干擾,因為外部電磁干擾會同時影響到這兩條線,而差分信號的接收方只關(guān)心兩條線之間的電壓差,從而有效抵消了干擾。(通信用雙絞線,抗干擾強)

高電平(邏輯1):兩線之間電壓差為+2v到+6v

低電平(邏輯0):兩線之間電壓差為-2v到-6v

采用兩線制,因為用的差分信號,所以兩根線表示一個信號,只能半雙工。是不是感覺和I2C很像?只是I2C規(guī)定好了主機怎么管理從機,在編程RS485時完全可以仿照I2C的主從邏輯,避免沖突。

一般也還是要在MCU后接一個TTL轉(zhuǎn)485的芯片(單端傳差分),比如MAX485

CAN

CAN(Controller Area Network,控制器局域網(wǎng))總線協(xié)議是一種高度可靠的、多主機的消息廣播系統(tǒng),廣泛用于汽車和工業(yè)自動化領(lǐng)域進行設(shè)備之間的通信。

在這里插入圖片描述

汽車中最小的控制模塊叫ECU

在這里插入圖片描述

CAN總線大大促進了ECU之間的高效通訊

 

CAN像RS485一樣采用差分信號通信,雙線制(CAN_High,CAN_Low)物理上用雙絞線,抗干擾強
在這里插入圖片描述

MCU與外界需要一個TTL轉(zhuǎn)CAN信號的芯片(單端轉(zhuǎn)差分)

在這里插入圖片描述

CAN總線數(shù)據(jù)幀

在這里插入圖片描述

有11位識別碼,區(qū)分多達2048個設(shè)備;

RTR為了區(qū)分數(shù)據(jù)幀或遠程請求幀;

控制碼有6位,第一位區(qū)分標準幀和拓展幀(識別位有29位),第二位是空閑位,接下來4為是DLC,控制數(shù)據(jù)碼的長度,0001表示數(shù)據(jù)有8位,1000表示數(shù)據(jù)有64位;

CRC是循環(huán)冗余校驗碼,檢測到錯誤時會自動重傳;

CRC界定符為了把后面信息隔開;

后面2位分別是ACK(接收1則發(fā)送0)和ACK界定符;

最后7位是結(jié)束位;

優(yōu)先級控制: CAN協(xié)議通過識別碼實現(xiàn)優(yōu)先級控制。ID較低的消息具有較高的優(yōu)先級,能夠在網(wǎng)絡(luò)忙時優(yōu)先傳輸。

CAN總線的數(shù)據(jù)傳輸速率可根據(jù)網(wǎng)絡(luò)長度和節(jié)點數(shù)進行調(diào)整,一般情況下,速率可以從幾kbps到1Mbps不等

位定時

數(shù)據(jù)在CAN總線上的傳輸和采樣過程涉及到位定時(Bit Timing),這是確保數(shù)據(jù)準確同步和傳輸?shù)年P(guān)鍵因素。

位定時包括若干部分,如同步段、傳播時間段、相位緩沖段1和相位緩沖段2,其中采樣點(Sample Point)是位時間內(nèi)的一個特定點,用于決定何時對傳輸?shù)奈贿M行采樣。

在CAN協(xié)議中,數(shù)據(jù)位的采樣通常發(fā)生在位時間的某個固定點上,這個點被配置為盡可能靠近位時間結(jié)束前,以允許信號在總線上傳播并穩(wěn)定。這意味著數(shù)據(jù)的采樣不直接依賴于時鐘信號的上升沿或下降沿,而是依賴于位時間內(nèi)預(yù)先配置的采樣點。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

由于CAN總線使用非歸零(Non-Return to Zero, NRZ)編碼,連續(xù)的位之間沒有自動的同步點(例如,沒有時鐘信號的顯式傳輸),因此,CAN總線協(xié)議通過硬件和位定時配置來確保所有節(jié)點在位時間內(nèi)正確地同步和采樣數(shù)據(jù)。

詳細位定時知識建議參考這篇博客 《CAN通信位定時與同步》

CAN與RX485異同

他倆都是串行半雙工,且基于差分信號和多設(shè)備,但有較大差異:

  1. CAN總線使用唯一標識符(ID)為每條消息指定優(yōu)先級,具有自動仲裁功能。RS485總線是一種常規(guī)的通信總線,它不能夠做總線的自動仲裁,也就是不能夠同時發(fā)送數(shù)據(jù)以避免總線競爭。
  2. CAN支持復(fù)雜的網(wǎng)絡(luò)拓撲,如星型、樹型和總線型結(jié)構(gòu)。RS485主要支持總線型拓撲,所有設(shè)備通過兩條信號線相連。
  3. CAN內(nèi)置復(fù)雜的錯誤檢測、報告和恢復(fù)機制,包括位級錯誤檢測、重傳和錯誤限制等功能。RS485作為一種電氣標準,本身不提供錯誤處理機制。需要通過高層協(xié)議來實現(xiàn)錯誤控制
  4. 數(shù)據(jù)傳輸時同步方式不同。

I2S

主要用于音頻數(shù)據(jù)傳輸? 串行,同步,半雙工

三根線

SCK(時鐘線)
WS(左右時鐘線,選擇左右聲道)
SD(數(shù)據(jù)線,數(shù)據(jù)可以是單聲道或立體聲,格式通常是線性PCM編碼)

在這里插入圖片描述

時鐘上升沿時發(fā)數(shù)據(jù),下降沿時讀數(shù)據(jù)

WS的高低表示不同的聲道,在一個SCK時鐘周期內(nèi),一半的時間用于傳輸左聲道數(shù)據(jù),另一半時間用于傳輸右聲道數(shù)據(jù)。

WS跳轉(zhuǎn)表示一字節(jié)數(shù)據(jù)傳輸?shù)淖詈笠晃?/p>

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
TJA1055T/C,518 1 NXP Semiconductors TJA1055 - Enhanced fault-tolerant CAN transceiver SOIC 14-Pin
$2.67 查看
CAT24C256WI-GT3 1 onsemi EEPROM Serial 256-Kb I2C, SOIC 8, 150 mils, 3000-REEL

ECAD模型

下載ECAD模型
$0.44 查看
PLR135/T2 1 Everlight Electronics Co Ltd Receiver, 16Mbps, Surface Mount,
暫無數(shù)據(jù) 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜