在生活中,經常會碰到設備掉電的情況,像手機,智能手環,電腦等等;但是存儲的東西不會丟失,比如電話號碼,短信消息,記事本,微信,QQ信息等等均會被保存下來;恢復出廠設置后,這些東西才會消失;
這是因為這些設備中都有一個“掉電保存”的器件,比如硬盤,U盤等等,他們的特點就是沒電了之后,存在他們上面的信息不會丟失,就像人的大腦,有記憶功能。 在工業領域也非常常見這種器件,一般有EEPROM和FLASH。它倆共同點是可讀可寫,斷電保存; 不同點是EEPROM寫之前不用擦除,而FLASH寫之前一定要擦除,否則寫不成功;EEPROM一般都使用I2C總線來通信,而FLASH一般是使用SPI總線。
EEPROM存儲器系統架構圖 今天就和大家聊一聊I2C總線:
位傳輸
I2C總線是由飛利浦(Philips)公司開發的一種雙向二線制同步串行總線,實現有效的IC間的控制,它只需要兩根線(SDA和SCL)即可在連接于總線上的器件之間傳送信息。
I2C總線在傳輸數據都是按照bit來傳送。SCL為時鐘線,SDA為數據線;在SCL時鐘線為高電平時,SDA數據線上的電平不允許被修改,SCL時鐘線為低電平時,SDA數據線上的電平可為高/低。
I2C總線的位傳輸 起始條件:SCL為高電平時,SDA由高電平向低電平切換;表示開始傳送數據。 停止條件:SCL為高電平時,SDA由低電平向高電平跳變;表示結束傳送數據。 空閑條件:I2C總線的SDA和SCL兩條信號線同時處于高電平時;表示空閑狀態。
?起始和停止條件 ?
數據傳輸
字節傳輸發送數據時,由主機先發送一個起始信號,再將SDA信號切換為輸出模式,然后將8位數據依次由高到低發送出去; 發送完成后,主機將SDA信號切換為輸入模式,等待叢機回應ACK或NAK;再發下一筆數據
I2C總線數據傳輸 叢機地址在I2C總線系統中,每個設備都有它的固定地址,一般由芯片的A0,A1和A2決定。叢機地址字節由七位地址位(D7-D1位)和一位方向位(為D0位)組成。 器件地址的D7-D4一般都是被廠家固定了為1111,余下的D3,D2和D1連接到芯片的A2,A1和A0決定;D0為0x00表示寫,D0為0x01表示讀。大家看例程都是些0xA0和0xA1就是這個原因。
EEPROM的器件地址
讀寫過程
1.寫數據過程1.主機發送I2C總線停止信號,防止總線忙寫數據失敗 2.主機發送I2C總線復位信號,確保寫數據之前總線處于空閑狀態 3.主機發送I2C總線開始信號,啟動一次數據的寫入 4.主機發送I2C叢機地址和寫模式(W/R=0)信號,并且等待一個叢機的應答信號 5.主機接收到ACK的應答信號后,開始多個字節的寫入,每寫完一個字節需要等待一個叢機的應答信號 6.主機接收到ACK的應答信號后,發送2IC總線停止信號,確保總線處于空閑狀態 2.讀數據過程1.主機發送I2C總線停止信號,防止總線忙寫數據失敗 2.主機發送I2C總線復位信號,確保讀數據之前總線處于空閑狀態 3.主機發送I2C總線開始信號,啟動一次數據讀取 4.主機發送I2C叢機地址和讀模式(W/R=1)信號,并且等待一個叢機的應答信號 5.主機接收到ACK的應答信號后,開始多個字節的讀取,每讀完一個字節需要給叢機發送一個ACK應答信號 6.主機接收到ACK的應答信號后,發送I2C總線停止信號,確保總線處于空閑狀態
主機讀/寫數據過程
結語
I2C總線在嵌入式應用中非常廣泛,基本上所有的電力電子設備都會用到這個總線;
文章出處:【微信公眾號:strongerHuang】
責任編輯:gt
-
電腦
+關注
關注
15文章
1749瀏覽量
69277 -
總線
+關注
關注
10文章
2910瀏覽量
88532 -
智能手環
+關注
關注
47文章
796瀏覽量
73184
原文標題:詳述I2C總線協議、時序,入門不再是難事
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論