您當前的位置:首頁 > 繪畫

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

作者:由 小開心 發表于 繪畫時間:2022-05-02

在嵌入式系統中,板上通訊介面是指用於將各種積體電路與其他外圍裝置互動連線的通訊通路或匯流排。以下內容為常用板上通訊介面:包括I2C、SPI、UART、1-Wire:

I2C匯流排

I2C匯流排是一種

同步、雙向、半雙工的兩線式序列介面匯流排

。這裡,半雙工的含義是指在任意給定的時刻,只有一個方向上是可以通訊的。I2C匯流排最早由Philips半導體公司於20世紀80年代研發面市。I2C最初的設計目標是為微處理器/微控制器系統與電視機外圍晶片之間的連線提供簡單的方法。I2C匯流排由兩條匯流排組成:序列時鐘線SCL和序列資料線SDA。SCL線——負責產生同步時鐘脈衝。SDA線——負責在裝置間傳輸序列資料。I2C匯流排是共享的匯流排系統,因此可以將多個I2C裝置連線到該系統上。連線到I2C總線上的裝置既可以用作主裝置,也可以用作從裝置。主裝置負責控制通訊,透過對資料傳輸進行初始化/終止化,來發送資料併產生所需的同步時鐘脈衝。從裝置則是等待來自主裝置的命令,並響應命令接收。主裝置和從裝置都可以作為傳送裝置或接收裝置。無論主裝置是作為傳送裝置還是接收裝置,同步時鐘訊號都只能由主裝置產生。在相同的總線上,I2C支援多個主裝置的同時存在。圖1-1顯示了I2C總線上主裝置和從裝置的連線關係。

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

當匯流排空閒時,SDA 和SCL 都處於高電平狀態,當主機要和某個從機通訊時,會先發送一個開始條件,然後傳送從機地址和讀寫控制位,接下來傳輸資料(主機發送或者接收資料),資料傳輸結束時主機會發送停止條件。傳輸的每個位元組為8 位,高位在前,低位在後。

開始條件:SCL 為高電平時,主機將SDA 拉低,表示資料傳輸即將開始。

從機地址:主機發送的第一個位元組為從機地址,高7 位為地址,最低位為R/W 讀寫控制位,1 表示讀操作,0 表示寫操作。

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

3年嵌入式物聯網學習資源整理分享:C語言、Linux開發、資料結構;軟體開發,STM32微控制器、ARM硬體開發、物聯網通訊開發、綜合專案開發教程資料;筆試面試真題。點選下方外掛免費領取↓↓↓

一般從機地址有7 位地址模式和10 位地址模式兩種,如果是10 位地址模式,第一個位元組的頭7 位是11110XX 的組合,其中最後兩位(XX)是10 位地址的兩個最高位,第二個位元組為10 位從機地址的剩下8 位,如下圖所示:

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

應答訊號:每傳輸完成一個位元組的資料,接收方就需要回復一個ACK(acknowledge)。寫資料時由從機發送ACK,讀資料時由主機發送ACK。當主機讀到最後一個位元組資料時,可傳送NACK(Notacknowledge)然後跟停止條件。

資料:從機地址傳送完後可能會發送一些指令,依從機而定,然後開始傳輸資料,由主機或者從機發送,每個資料為8 位,資料的位元組數沒有限制。

重複開始條件:在一次通訊過程中,主機可能需要和不同的從機傳輸資料或者需要切換讀寫操作時,主機可以再發送一個開始條件。

停止條件:在SDA 為低電平時,主機將SCL 拉高並保持高電平,然後在將SDA 拉高,表示傳輸結束。

SPI匯流排

SPI匯流排是

同步、雙向、全雙工的4線式序列介面匯流排

,最早由Motorola公司提出。SPI是由“單個主裝置+多個從裝置”構成的系統。需要說明的是:在系統中,只要任意時刻只有一個主裝置是處於啟用狀態的,就可以存在多個SPI主裝置。常運用於EEPROM、FLASH、實時時鐘、AD轉換器、數字訊號處理器和數字訊號解碼器之間實現通訊。為了實現通訊,SPI共有4條訊號線,分別是:

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

(1)主裝置出、從裝置入(Master Out Slave In,MOSI):由主裝置向從裝置傳輸資料的訊號線,也稱為從裝置輸入(Slave Input/Slave Data In,SI/SDI)。(2)主裝置入、從裝置出(Master In Slave Out,MISO):由從裝置向主裝置傳輸資料的訊號線,也稱為從裝置輸出(Slave Output/Slave Data Out,SO/SDO)。(3)序列時鐘(Serial Clock,SCLK):傳輸時鐘訊號的訊號線。(4)從裝置選擇(Slave Select,SS):用於選擇從裝置的訊號線,低電平有效。SPI使用方法:

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

上圖所示晶片有2 個SPI 控制器,SPI 控制器對應SPI 主裝置,每個SPI 控制器可以連線多個SPI從裝置。掛載在同一個SPI 控制器上的從裝置共享3 個訊號引腳:SCK、MISO、MOSI,但每個從裝置的CS 引腳是獨立的。主裝置透過控制CS 引腳對從裝置進行片選,一般為低電平有效。任何時刻,一個SPI 主裝置上只有一個CS 引腳處於有效狀態,與該有效CS 引腳連線的從裝置此時可以與主裝置通訊。所以,SPI通訊方式可以使用“一主多從”的結構進行通訊。每個連線到總線上的器件都有唯一的地址,主裝置啟動資料傳輸併產生時鐘訊號,從裝置被主裝置定址,同一時刻只允許有一個主裝置。從裝置的時鐘由主裝置透過SCLK 提供,MOSI、MISO 則基於此脈衝完成資料傳輸。SPI 的工作時序模式由CPOL(Clock Polarity,時鐘極性)和CPHA(Clock Phase,時鐘相位)之間的相位關係決定,CPOL 表示時鐘訊號的初始電平的狀態,CPOL 為0 表示時鐘訊號初始狀態為低電平,為1 表示時鐘訊號的初始電平是高電平。CPHA 表示在哪個時鐘沿取樣資料,CPHA 為0 表示在首個時鐘變化沿取樣資料,而CPHA 為1 則表示在第二個時鐘變化沿取樣資料。根據CPOL 和CPHA 的不同組合共有4 種工作時序模式:CPOL=0,CPHA=0、CPOL=0,CPHA=1、CPOL=1,CPHA=0、CPOL=1,CPHA=1

UART

UART——

通用非同步收發傳輸器

,UART 作為非同步串列埠通訊協議的一種,工作原理是將傳輸資料的每個字元一位接一位地傳輸。在應用程式開發過程中使用頻率較高的資料匯流排。基於UART的資料傳輸是非同步形式的序列資料傳輸。基於UART的序列資料傳輸不需要使用時鐘訊號來同步傳輸的傳送端和接收端,而是依賴於傳送裝置和接收裝置之間預定義的配置。對於傳送裝置和接收裝置來說,兩者的序列通訊配置(波特率、單位字的位數、奇偶校驗、起始位數與結束位、流量控制)應該設定為完全相同。透過在資料流中插入特定的位元序列,可以指示通訊的開始與結束。當傳送一個位元組資料的時候,需要在位元流的開頭加上起始位,並在位元流的末尾加上結束位。資料位元組的最低位緊接在起始位之後。UART 串列埠的特點是將資料一位一位地順序傳送,只要2 根傳輸線就可以實現雙向通訊,一根線傳送資料的同時用另一根線接收資料。UART 串列埠通訊有幾個重要的引數,分別是波特率、起始位、資料位、停止位和奇偶檢驗位,對於兩個使用UART 串列埠通訊的埠,這些引數必須匹配。

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

起始位:表示資料傳輸的開始,電平邏輯為“0” 。

資料位:可能值有5、6、7、8、9,表示傳輸這幾個bit 位資料。一般取值為8,因為一個ASCII 字元值為8 位。

奇偶校驗位:用於接收方對接收到的資料進行校驗,校驗“1” 的位數為偶數(偶校驗) 或奇數(奇校驗),以此來校驗資料傳送的正確性,使用時不需要此位也可以。

停止位:表示一幀資料的結束。電平邏輯為“1”。

波特率:串列埠通訊時的速率,它用單位時間內傳輸的二進位制程式碼的有效位(bit) 數來表示,其單位為每秒位元數bit/s(bps)。常見的波特率值有4800、9600、14400、38400、115200 等,數值越大資料傳輸的越快,波特率為115200 表示每秒鐘傳輸115200 位資料。

1-Wire介面

1-Wire介面是由Maxim Dallas半導體公司(首頁為

http://www。

maxim-ic。com

)開發的

非同步半雙工通訊協議

,也稱為Dallas 1-Wire®協議。其中,按照主-從通訊模型,只使用單條訊號線DQ實現通訊。1-Wire匯流排的一個重要特徵在於,該匯流排允許在訊號線上傳輸能量。1-Wire介面支援在總線上連線單個主裝置以及一個或多個從裝置。

【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

並行介面

板上並行介面(parallel interface)通常用於系統與外圍裝置之間的通訊,其中,外圍裝置透過儲存器對映到系統的主控端。只要嵌入式系統的主控處理器/控制器含有並行匯流排,支援並行匯流排的裝置就可以直接連線到該匯流排系統上。外圍裝置與主控端之間具有控制訊號介面,可以控制並行總線上的資料通訊。這裡,通訊的控制訊號包括讀/寫訊號和裝置選擇訊號。一般說來,外圍裝置具有裝置選擇線;只有當主控處理器選通該線的時候,該裝置才是有效的。資料傳輸的方向可以是從主控端到外圍裝置,也可以是從外圍裝置到主控端;這是透過讀和寫控制訊號線進行控制的。只有主控處理器能夠控制讀控制訊號和寫控制訊號。一般說來,外圍裝置透過儲存器對映到主控處理器,從而可以訪問分配的地址範圍。此時,裝置需要使用地址譯碼電路來產生晶片選擇訊號。當處理器選擇的地址位於裝置指定範圍內的時候,譯碼電路對晶片選擇線進行觸發,從而啟用裝置。然後,處理器可以使能相應的控制線(分別是RD與WD),從而由裝置讀出資料,或者是向裝置寫入資料。為了實現並行通訊,系統需要嚴格遵循時序規範。前面已經提到過,並行通訊是由主控處理器啟動的。如果某外圍裝置想要對通訊進行初始化,那麼可以向處理器發出中斷,告知相關資訊。為了實現上述功能,裝置的中斷線需要連線到處理器的中斷線上,並且主控處理器需要觸發相應的中斷。需要說明的是,主控處理器的資料匯流排寬度決定了並行介面的寬度,可以是4位、8位、16位、32位、64位等。裝置支援的匯流排寬度應該與主控處理器完全相同。

轉載自:華妹

文章來源於華清遠見

原文連結:【乾貨分享】嵌入式開發中常用的幾種通訊介面總結

版權宣告:本文來源網路,免費傳達知識,版權歸原作者所有。如涉及作品版權問題,請聯絡我進行刪除。

標簽: 裝置  匯流排  SPI  時鐘  主控