I2C總線在嵌入式系統(tǒng)中很常見,今天就來給大家講講I2C總線的時序。
很多電子工程師都應(yīng)該從 EEPROM 通信了解到的I2C總線,其實,I2C總線遠(yuǎn)不止于 EEPROM 存儲器,它也有類似485、SPI等應(yīng)用場景。
EEPROM存儲器系統(tǒng)架構(gòu)圖
1、位傳輸
I2C總線是由飛利浦(Philips)公司開發(fā)的一種雙向二線制同步串行總線,實現(xiàn)有效的IC間的控制,它只需要兩根線(SDA和SCL)即可在連接于總線上的器件之間傳送信息。
I2C總線在傳輸數(shù)據(jù)都是按照bit來傳送。SCL為時鐘線,SDA為數(shù)據(jù)線;在SCL時鐘線為高電平時,SDA數(shù)據(jù)線上的電平不允許被修改,SCL時鐘線為低電平時,SDA數(shù)據(jù)線上的電平可為高/低。
I2C總線的位傳輸
起始條件:SCL為高電平時,SDA由高電平向低電平切換;表示開始傳送數(shù)據(jù)。
停止條件:SCL為高電平時,SDA由低電平向高電平跳變;表示結(jié)束傳送數(shù)據(jù)。
空閑條件:I2C總線的SDA和SCL兩條信號線同時處于高電平時;表示空閑狀態(tài)。
?起始和停止條件
2、數(shù)據(jù)傳輸
字節(jié)傳輸
發(fā)送數(shù)據(jù)時,由主機先發(fā)送一個起始信號,再將SDA信號切換為輸出模式,然后將8位數(shù)據(jù)依次由高到低發(fā)送出去;
發(fā)送完成后,主機將SDA信號切換為輸入模式,等待叢機回應(yīng)ACK或NAK;再發(fā)下一筆數(shù)據(jù)
I2C總線數(shù)據(jù)傳輸
叢機地址
在I2C總線系統(tǒng)中,每個設(shè)備都有它的固定地址,一般由芯片的A0,A1和A2決定。叢機地址字節(jié)由七位地址位(D7-D1位)和一位方向位(為D0位)組成。
器件地址的D7-D4一般都是被廠家固定了為1111,余下的D3,D2和D1連接到芯片的A2,A1和A0決定;D0為0x00表示寫,D0為0x01表示讀。大家看例程都是些0xA0和0xA1就是這個原因。
EEPROM的器件地址
3、讀寫過程
1.寫數(shù)據(jù)過程
1.主機發(fā)送I2C總線停止信號,防止總線忙寫數(shù)據(jù)失敗
2.主機發(fā)送I2C總線復(fù)位信號,確保寫數(shù)據(jù)之前總線處于空閑狀態(tài)
3.主機發(fā)送I2C總線開始信號,啟動一次數(shù)據(jù)的寫入
4.主機發(fā)送I2C叢機地址和寫模式(W/R=0)信號,并且等待一個叢機的應(yīng)答信號
5.主機接收到ACK的應(yīng)答信號后,開始多個字節(jié)的寫入,每寫完一個字節(jié)需要等待一個叢機的應(yīng)答信號
6.主機接收到ACK的應(yīng)答信號后,發(fā)送2IC總線停止信號,確保總線處于空閑狀態(tài)
2.讀數(shù)據(jù)過程
1.主機發(fā)送I2C總線停止信號,防止總線忙寫數(shù)據(jù)失敗
2.主機發(fā)送I2C總線復(fù)位信號,確保讀數(shù)據(jù)之前總線處于空閑狀態(tài)
3.主機發(fā)送I2C總線開始信號,啟動一次數(shù)據(jù)讀取
4.主機發(fā)送I2C叢機地址和讀模式(W/R=1)信號,并且等待一個叢機的應(yīng)答信號
5.主機接收到ACK的應(yīng)答信號后,開始多個字節(jié)的讀取,每讀完一個字節(jié)需要給叢機發(fā)送一個ACK應(yīng)答信號
6.主機接收到ACK的應(yīng)答信號后,發(fā)送I2C總線停止信號,確保總線處于空閑狀態(tài)
主機讀/寫數(shù)據(jù)過程
-
存儲器
+關(guān)注
關(guān)注
38文章
7528瀏覽量
164345 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3625瀏覽量
129756 -
EEPROM
+關(guān)注
關(guān)注
9文章
1033瀏覽量
81955 -
SDA
+關(guān)注
關(guān)注
0文章
124瀏覽量
28263
原文標(biāo)題:詳解I2C總線的時序
文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
利用數(shù)字示波器調(diào)試嵌入式I2C總線
調(diào)試嵌入式系統(tǒng)設(shè)計中的低速串行總線
嵌入式Linux怎么學(xué)?給大家推薦幾本學(xué)習(xí)嵌入式系統(tǒng)的書籍
有哪些方法能利用數(shù)字示波器調(diào)試嵌入式I2C總線?
講講嵌入式系統(tǒng)log模塊的基本設(shè)計框架
嵌入式系統(tǒng)總線
嵌入式系統(tǒng)的總線技術(shù)及其應(yīng)用
調(diào)試嵌入式系統(tǒng)設(shè)計中的串行總線應(yīng)用手冊
示波器解決嵌入式系統(tǒng)中串行總線設(shè)計
![示波器解決<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中</b>串行<b class='flag-5'>總線</b>設(shè)計](https://file.elecfans.com/web1/M00/45/5E/pIYBAFppiS6AClOoAAA0Dg5pJJI948.jpg)
嵌入式常用總線有哪些
物聯(lián)網(wǎng)嵌入式軟件中的I2C總線設(shè)計詳解
![物聯(lián)網(wǎng)<b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>中</b>的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>設(shè)計詳解](https://file1.elecfans.com//web2/M00/09/86/wKgaomb5DeCAG8XQAAufMwzzlhc100.jpg)
評論