嵌入式開發(fā)的通信協(xié)議

UART

定義

  • UART是一種非常常見(jiàn)的接口或協(xié)議,幾乎在每臺(tái)計(jì)算機(jī)或微處理器上都可以找到它,UART是英文Universal Asynchronous Receiver and Transmitter 的縮寫,中文一般稱為通用異步收發(fā)傳輸器,也稱其為RS-232標(biāo)準(zhǔn)。該協(xié)議是全雙工協(xié)議,它也是一種包括特定通信的電子,機(jī)械和物理特性的全面標(biāo)準(zhǔn)。
  • UART允許菊花鏈拓?fù)洌ㄔ谶@種拓?fù)浣Y(jié)構(gòu)中,可以將第一個(gè)傳感器的發(fā)送引腳連接到第二個(gè)傳感器的接收引腳,再將第二個(gè)傳感器的發(fā)送引腳連接到第三個(gè)傳感器的接收引腳,以此類推,最多可以接8個(gè))

接口

  • UART TX:發(fā)送
  • UART RX:接收

數(shù)據(jù)傳輸

  • UART作為異步串口通信協(xié)議的一種,工作原理是將傳輸數(shù)據(jù)的每個(gè)字符一位接一位地傳輸。
  • 數(shù)據(jù)傳輸
UART數(shù)據(jù)傳輸圖

1.起始位:先發(fā)出一個(gè)邏輯”0”的信號(hào),表示傳輸字符的開始。

2.數(shù)據(jù)位:緊接著起始位之后。資料位的個(gè)數(shù)可以是4、5、6、7、8等,構(gòu)成一個(gè)字符。通常采用ASCII碼。從最低位開始傳送,靠時(shí)鐘定位。

3.奇偶校驗(yàn)位:資料位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗(yàn))或奇數(shù)(奇校驗(yàn)),以此來(lái)校驗(yàn)資料傳送的正確性。

4.停止位:它是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志??梢允?位、1.5位、2位的高電平。

5.空閑位:處于邏輯“1”狀態(tài),表示當(dāng)前線路上沒(méi)有資料傳送。

波特率(每秒傳送的字符數(shù))

波特率時(shí)UART協(xié)議中的一個(gè)關(guān)鍵數(shù)據(jù),即發(fā)送數(shù)據(jù)的速度。
發(fā)送器和接受器的波特率應(yīng)該匹配,通常,我們將波特率定為9600或115200。

SPI

定義

  • SPI(串行外圍設(shè)備接口),英文Serial Peripheral Interface.是一種全雙工短距單主設(shè)備通信協(xié)議,與UART不同,它是一種同步通信協(xié)議。SPI簡(jiǎn)單的連接方式之一是主從連接,如下圖
簡(jiǎn)單的主從SPI連接圖

接口

  • SCLK:串行時(shí)鐘,用來(lái)同步數(shù)據(jù)傳輸,由主機(jī)輸出

  • MISO:主機(jī)輸入從機(jī)輸出(Master In Slave Out)

  • MOSI:主機(jī)輸出從機(jī)輸入(Master Out Slave In)

  • CS:片選線,低電平有效,由主機(jī)輸出

  • 在SPI總線上,某一時(shí)刻可以出現(xiàn)多個(gè)從機(jī),但只能存在一個(gè)主機(jī),主機(jī)通過(guò)片選線來(lái)確定要通信的從機(jī)。這就要求從機(jī)的MISO口具有三態(tài)特性,使得該口線在器件未被選通時(shí)表現(xiàn)為高阻抗。

數(shù)據(jù)傳輸

在一個(gè)SPI時(shí)鐘周期內(nèi),會(huì)完成如下操作:

  1. 主機(jī)通過(guò)MOSI線發(fā)送1位數(shù)據(jù),從機(jī)通過(guò)該線讀取這1位數(shù)據(jù);

  2. 從機(jī)通過(guò)MISO線發(fā)送1位數(shù)據(jù),主機(jī)通過(guò)該線讀取這1位數(shù)據(jù)。

這是通過(guò)移位寄存器來(lái)實(shí)現(xiàn)的。如下圖,主機(jī)和從機(jī)各有一個(gè)移位寄存器,且二者連接成環(huán)。隨著時(shí)鐘脈沖,數(shù)據(jù)按照從高位到低位的方式依次移出主機(jī)寄存器和從機(jī)寄存器,并且依次移入從機(jī)寄存器和主機(jī)寄存器。當(dāng)寄存器中的內(nèi)容全部移出時(shí),相當(dāng)于完成了兩個(gè)寄存器內(nèi)容的交換。

I2C

定義

  • I2C(Inter-Integrated Circuit)是一種用兩條連線工作的半雙工協(xié)議(半雙工是通信的一種類型,即只要發(fā)送端在發(fā)送數(shù)據(jù),接收端只能監(jiān)聽兒不能發(fā)送數(shù)據(jù))。

接口

  • SDA:數(shù)據(jù)線
  • SCL:時(shí)鐘線
  • I2C的連線總是要通過(guò)電阻上拉至輸入電壓,I2C的連線工作于三種速度:高速,快速,慢速。

工作原理

  • 如果主機(jī)要發(fā)送數(shù)據(jù)給從器件,則主機(jī)首先尋址從器件,然后主動(dòng)發(fā)送數(shù)據(jù)至從器件,最后由主機(jī)終止數(shù)據(jù)傳送;如果主機(jī)要接收從器件的數(shù)據(jù),首先由主器件尋址從器件.然后主機(jī)接收從器件發(fā)送的數(shù)據(jù),最后由主機(jī)終止接收過(guò)程。在這種情況下.主機(jī)負(fù)責(zé)產(chǎn)生定時(shí)時(shí)鐘和終止數(shù)據(jù)傳送。

數(shù)據(jù)傳輸

字節(jié)格式

  • 每個(gè)字節(jié)必須是8位,最后一位為響應(yīng)位
  • 每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制
  • 最開始發(fā)送的是從機(jī)地址

應(yīng)答響應(yīng)

  • 地址匹配完成會(huì)得到響應(yīng)信號(hào)(ACK),說(shuō)明這個(gè)設(shè)備是存在的

  • 開始信號(hào):主機(jī)讓時(shí)鐘SCL保持高電平,數(shù)據(jù)SDA由高電平調(diào)轉(zhuǎn)到低電平

  • 停止線號(hào):主機(jī)讓式中SCL保持高電平,數(shù)據(jù)SDA由低電平跳轉(zhuǎn)到高電平。

  • 響應(yīng)信號(hào)(ACK):接收器在接收到8位數(shù)據(jù)后,在第9個(gè)時(shí)鐘周期,拉低SDA為低電平。

  • SDA上傳輸?shù)臄?shù)據(jù)必須在SCL為高電平的期間保持穩(wěn)定,外部設(shè)備會(huì)在SCL在高電平的時(shí)候讀取數(shù)據(jù)

  • SDA上的數(shù)據(jù)只能在SCL為低電平期間發(fā)生變化

I2C數(shù)據(jù)傳輸圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容