I2c序列匯流排組成及其工作原理

2022-04-06 18:41:40 字數 2788 閱讀 8877

採用序列匯流排技術可以使系統的硬體設計大大簡化,系統的體積減小,可靠性提高,同時系統更容易更改和擴充

常用的序列擴充套件匯流排有:i2c匯流排,單匯流排,spi匯流排,以及microwire、plus等等

i2c匯流排只有兩根雙向訊號線,一根是資料線sda,另一根是時鐘線scl

i2c匯流排通過上拉電阻接正電源。因此i2c匯流排的裝置都要接上拉電阻

當匯流排閒置的時候,兩根線均為高電平,連線到匯流排上的任何乙個器件輸出的低電平,都將使得匯流排得到訊號變低,及各個器件的sda和scl都是線與的關係

每個接入到i2c匯流排都有唯一的位址,主機與其他器件間的資料傳送可以是由主機傳送資料到其他器件,這時主機即是傳送器,由匯流排上接收資料的器件稱為是接收器。

在多主機系統中,可能同時由幾個主機企圖啟動匯流排傳送資料,為了避免混亂,i2c匯流排要通過匯流排仲裁,已決定由哪台主機控制匯流排

資料位的有效性

i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有時鐘線上的訊號為低電平期間,資料線上的高電平和低電平狀態才允許變化

起始訊號和終止訊號

scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號,scl線為高電平期間,sda線由低電平向高電平變化表示終止訊號

資料傳送的格式

(1)位元組傳送與應答

每乙個位元組必須保證是8位長度,資料傳送時,先傳送的是最高位(msb),每乙個被傳送的位元組後面都必須跟隨一位應答位,即(一幀共有9位),應答訊號由從機傳送給主機

每次資料傳送總是由主機產生的終止訊號結束,但是若主機希望繼續占用匯流排進行新的資料傳送,則可以不產生終止訊號,馬上再次發出起始訊號對另乙個從機進行定址

在匯流排的乙個資料傳上過程中,可以有一下幾種傳送方式的組合方式

a,主機向從機傳送資料,資料傳送的方向在整個傳送過程中不變

a表示應答,a非表示非應答,s表示其實訊號,p表示終止訊號

主機傳送位址時,匯流排上的每乙個從機都將這7位位址碼與自己的位址進行比較,如果相同,則認為自己正在被主機定址,根據r/t位將自己確定為傳送器或接收器

從機位址由固定部分和可程式設計部分組成,可程式設計的部分決定了可接入匯流排該器件的最大數目。

由操作時序可知要進行必要的延時

起始操作示例**:

void t2cstart(void

)

view code

終止指令:

void i2cstop(void

)

view code

i2c匯流排擴充套件

序列e2prom的擴充套件

微控制器進行寫操作的時候,首先

傳送該器件的7位位址嗎和寫方向的方向碼0,傳送完以後釋放sda線並在scl線上產生第九個時鐘訊號,被選中的儲存器再確認自己的位址後,在sda上產生乙個應答訊號作為響應

,微控制器接收到訊號就可以傳送資料了

傳送資料時,微控制器首先傳送乙個位元組的被寫入器件的儲存區的首位址,收到儲存器器件的應答後,微控制器就逐個傳送各個資料的位元組,但是每次傳送乙個位元組後都要等待應答

收到每個位元組的位址後,晶元上的位址會自動加一

寫入n個位元組的資料格式

讀出過程

微控制器首先傳送該器件的7位位址碼和寫方向位0(偽寫),傳送完後釋放sda線並在scl線上產生9個時鐘訊號,被選中的儲存器器件在確認自己的位址之後,在sda上產生乙個應答訊號作為回應

然後在傳送乙個位元組的要讀出儲存去的首位址,收到應答,微控制器要重複一次起始訊號並發出器件位址的讀方向位(1),收到器件應答就可以讀出位元組,每次讀出乙個位元組,微控制器都要回覆乙個應答訊號,但最後讀出乙個位元組,微控制器應返回非應答訊號(高電平)並發出終止訊號以結束讀出操作

示例**:

#include#define uchar unsigned char

#define uint unsigned intsbit sda = p2^3

;sbit scl = p2^2

;sbit wp = p2^1

;void delay()//

微妙級別的延時函式

void start()//

開始訊號

void stop()//

停止訊號

void respons()//

應答訊號

scl = 0;}

void

init()

void

write_byte(uchar date)

sda = 1;//

注意養成釋放匯流排的習慣

delay();

}uchar read_byte()

return

k;

}uchar read_add(uchar address)

void

write_add(uchar address,uchar date)

void delay1(uint

z)void

main()

view code

(筆記總結)I2C序列匯流排的組成及工作原理

常用的序列擴充套件匯流排有 i2c匯流排,spi匯流排,單匯流排,microwire plus。i2c序列匯流排概述 i2c序列匯流排,是具備多主機系統所需的包括匯流排裁決和高低速器件同步功能的高效能序列匯流排。i2c匯流排只有兩根雙向訊號線。一根是資料線sda,另一根是時鐘線scl。i2c匯流排通...

序列匯流排之I2C

一 i2c簡介 1 i2c匯流排是 philip 公司開發的,雙向二線制同步序列匯流排,它只需要兩根線即可,單主機多從機。2 i2c兩根線分別為 序列時鐘線 scl和序列資料線 sda,scl由主機發出。3 每個連線到匯流排上的器件都有乙個位址,位址由器件內部硬體電路和外部位址引腳共同決定,避免了片...

I2C序列匯流排協議

i2c 序列匯流排協議 一 i2c 序列匯流排概述 i2c匯流排是 philips 公司推出的一種序列資訊匯流排,用於連線微控制器及外圍裝置,是具備多主系統所需的包括匯流排裁決和高低速器件同步功能的高效能序列匯流排。i2c匯流排只有兩根雙向訊號線,一根是資料線 sda,一根是時鐘線 scl。微控制器...