在生活中,經(jīng)常會碰到設(shè)備掉電的情況,像手機(jī),智能手環(huán),電腦等等;但是存儲的東西不會丟失,比如電話號碼,短信消息,記事本,微信,QQ信息等等均會被保存下來;恢復(fù)出廠設(shè)置后,這些東西才會消失;這是因?yàn)檫@些設(shè)備中都有一個“掉電保存”的器件,比如硬盤,U盤等等,他們的特點(diǎn)就是沒電了之后,存在他們上面的信息不會丟失,就像人的大腦,有記憶功能。
在工業(yè)領(lǐng)域也非常常見這種器件,一般有EEPROM和FLASH。它倆共同點(diǎn)是可讀可寫,斷電保存;不同點(diǎn)是EEPROM寫之前不用擦除,而FLASH寫之前一定要擦除,否則寫不成功;EEPROM一般都使用IIC總線來通信,而FLASH一般是使用SPI總線。
EEPROM存儲器系統(tǒng)架構(gòu)圖
今天筆者就和大家聊一聊IIC總線。
位傳輸
IIC總線是由飛利浦(Philips)公司開發(fā)的一種雙向二線制同步串行總線,實(shí)現(xiàn)有效的IC間的控制,它只需要兩根線(SDA和SCL)即可在連接于總線上的器件之間傳送信息。
IIC總線在傳輸數(shù)據(jù)都是按照bit來傳送。SCL為時鐘線,SDA為數(shù)據(jù)線;在SCL時鐘線為高電平時,SDA數(shù)據(jù)線上的電平不允許被修改,SCL時鐘線為低電平時,SDA數(shù)據(jù)線上的電平可為高/低。
IIC總線的位傳輸
起始條件:SCL為高電平時,SDA由高電平向低電平切換;表示開始傳送數(shù)據(jù)。
停止條件:SCL為高電平時,SDA由低電平向高電平跳變;表示結(jié)束傳送數(shù)據(jù)。
空閑條件:IIC總線的SDA和SCL兩條信號線同時處于高電平時;表示空閑狀態(tài)。
?
?p?起始和停止條件
?數(shù)據(jù)傳輸
字節(jié)傳輸
發(fā)送數(shù)據(jù)時,由主機(jī)先發(fā)送一個起始信號,再將SDA信號切換為輸出模式,然后將8位數(shù)據(jù)依次由高到低發(fā)送出去;發(fā)送完成后,主機(jī)將SDA信號切換為輸入模式,等待叢機(jī)回應(yīng)ACK或NAK;再發(fā)下一筆數(shù)據(jù)
IIC總線數(shù)據(jù)傳輸
叢機(jī)地址
在IIC總線系統(tǒng)中,每個設(shè)備都有它的固定地址,一般由芯片的A0,A1和A2決定。叢機(jī)地址字節(jié)由七位地址位(D7-D1位)和一位方向位(為D0位)組成。
器件地址的D7-D4一般都是被廠家固定了為1111,余下的D3,D2和D1連接到芯片的A2,A1和A0決定;D0為0x00表示寫,D0為0x01表示讀。大家看例程都是些0xA0和0xA1就是這個原因。
EEPROM的器件地址
讀寫過程
寫數(shù)據(jù)過程:
1.主機(jī)發(fā)送IIC總線停止信號,防止總線忙寫數(shù)據(jù)失敗
2.主機(jī)發(fā)送IIC總線復(fù)位信號,確保寫數(shù)據(jù)之前總線處于空閑狀態(tài)
3.主機(jī)發(fā)送IIC總線開始信號,啟動一次數(shù)據(jù)的寫入
4.主機(jī)發(fā)送IIC叢機(jī)地址和寫模式(W/R=0)信號,并且等待一個叢機(jī)的應(yīng)答信號
5.主機(jī)接收到ACK的應(yīng)答信號后,開始多個字節(jié)的寫入,每寫完一個字節(jié)需要等待一個叢機(jī)的應(yīng)答信號
6.主機(jī)接收到ACK的應(yīng)答信號后,發(fā)送IIC總線停止信號,確保總線處于空閑狀態(tài)
讀數(shù)據(jù)過程:
1.主機(jī)發(fā)送IIC總線停止信號,防止總線忙寫數(shù)據(jù)失敗
2.主機(jī)發(fā)送IIC總線復(fù)位信號,確保讀數(shù)據(jù)之前總線處于空閑狀態(tài)
3.主機(jī)發(fā)送IIC總線開始信號,啟動一次數(shù)據(jù)讀取
4.主機(jī)發(fā)送IIC叢機(jī)地址和讀模式(W/R=1)信號,并且等待一個叢機(jī)的應(yīng)答信號
5.主機(jī)接收到ACK的應(yīng)答信號后,開始多個字節(jié)的讀取,每讀完一個字節(jié)需要給叢機(jī)發(fā)送一個ACK應(yīng)答信號
6.主機(jī)接收到ACK的應(yīng)答信號后,發(fā)送IIC總線停止信號,確??偩€處于空閑狀態(tài)
主機(jī)讀/寫數(shù)據(jù)過程
結(jié)語
IIC總線在嵌入式應(yīng)用中非常廣泛,基本上所有的電力電子設(shè)備都會用到這個總線;筆者根據(jù)自身多年的工作經(jīng)驗(yàn),記錄下了我對它的理解,如果有寫的不對,希望大家能多多指出,今天的I2C總線就先寫到這里,希望大家喜歡。
-
總線
+關(guān)注
關(guān)注
10文章
2898瀏覽量
88261 -
EEPROM
+關(guān)注
關(guān)注
9文章
1030瀏覽量
81819 -
I2C
+關(guān)注
關(guān)注
28文章
1495瀏覽量
124202
發(fā)布評論請先 登錄
相關(guān)推薦
評論