學習筆記 IIC匯流排

2021-08-29 14:14:03 字數 2305 閱讀 2070

iic(inter-integrated circuit)匯流排是一種由 philips 公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。它是由資料線 sda 和時鐘 scl 構成的序列匯流排,可傳送和接收資料。在 cpu 與被控 ic 之間、 ic 與 ic 之間進行雙向傳送, 高速 iic 匯流排一般可達 400kbps 以上。

iic 匯流排在傳送資料過程中共有三種型別訊號, 它們分別是:開始訊號、結束訊號和應答訊號。

開始訊號: scl 為高電平時, sda 由高電平向低電平跳變,開始傳送資料。

結束訊號: scl 為高電平時, sda 由低電平向高電平跳變,結束傳送資料。

應答訊號:接收資料的 ic 在接收到 8bit 資料後,向傳送資料的 ic 發出特定的低電平脈衝,表示已收到資料。 cpu 向受控單元發出乙個訊號後,等待受控單元發出乙個應答訊號, cpu 接收到應答訊號後,根據實際情況作出是否繼續傳遞訊號的判斷。若未收到應答訊號,由判斷為受控單元出現故障。

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

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

iic匯流排上傳送的資料訊號是廣義的,既包括位址訊號,又包括真正的資料訊號。

在起始訊號後必須傳送乙個從機的位址(7位),第8位是資料的傳送方向位(r/t),用「0」表示主機傳送資料(t),「1」表示主機接收資料(r)。每次資料傳送總是由主機產生的終止訊號結束。但是,若主機希望繼續占用匯流排進行新的資料傳送,則可以不產生終止訊號,馬上再次發出起始訊號對另一從機進行定址。

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

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

注:有陰影部分表示資料由主機向從機傳送,無陰影部分則表示資料由從機向主機傳送。

a表示應答, a非表示非應答(高電平)。s表示起始訊號,p表示終止訊號。

b、主機在第乙個位元組後,立即從從機讀資料

c、在傳送過程中,當需要改變傳送方向時,起始訊號和從機位址都被重複產生一次,但兩次讀/寫方向位正好反相。

開始訊號

void i2cstart()

void i2cstop()

unsigned char i2csendbyte(unsigned char dat)

sda=1;

delay10us();

scl=1;

while(sda)//等待從機應答即拉低sda

}scl=0;

delay10us();

return 1; //傳送成功

}

unsigned char i2creadbyte()

return dat;

}

eeprom (electrically erasable programmable read only memory),帶電可擦可程式設計唯讀儲存器–一種掉電後資料不丟失的儲存晶元。 eeprom 可以在電腦上或專用裝置上擦除已有資訊,重新程式設計。一般用在即插即用。

不同的從機有著不同的讀寫規則,這次學習的是at24c02儲存器

往at24c02中某個記憶體位址寫入乙個資料

void at24c02write(unsigned char addr,unsigned char dat)

從at24c02中某個記憶體位址讀取乙個資料

unsigned char at24c02read(unsigned char addr)

iic匯流排從機仲裁 IIC學習筆記

iic inter integrated circuit 積體電路匯流排 iic通訊協議是飛利浦公司於80年代初發明的一種運用於晶元與晶元之間進行資訊交換的序列 同步 半雙工通訊協議。應用場合 晶元與晶元之間。板間通訊。共模通訊。抗干擾能力很差。1 iic協議有兩根匯流排 時鐘匯流排sck,資料匯流...

匯流排 IIC匯流排

i2c匯流排是飛利浦 phlips 公司推出的一種半雙工序列匯流排,用於連線微控制器及其外圍裝置,i2c序列匯流排有兩根雙向訊號線。一根是資料線sda,另一根是時鐘線scl。它僅通過兩根訊號線就可以完成對所有掛載在i2c匯流排上的從器件進行操作。這樣的好處是可以大大的節省我們微處理器的io口資源。i...

IIC匯流排協議

i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。起始和終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電平的變化表示終止訊號。...