源代碼;https://github.com/YuQiao0303/STM32F407-Examples/tree/master/24.IIC
概述
- I2C (IIC, Inter-Integrated Circuit),兩線式串行總線,
- 用於連接微控制器及其外圍設備。
- 它是由數據線SDA和時鍾SCL構成的串行總線
- 在CPU與被控IC之間、IC與IC之間進行雙向傳送
- IIC是半雙工通信方式
協議
①空閑狀態
②開始信號
③停止信號
④應答信號
- 發送器每發送一個字節(8位)
- 接收器在第九個時鍾脈沖前,將SDA拉低,
- 並在該時鍾的高電平期間保持穩定低電平
- 這就是一個有效應答位ACK,表示該字節接收成功
- 否則如果應答信號是低電平,則為非應答位(NACK),表示該字節沒有接收成功
⑤數據的有效性
時鍾信號為高電平期間,數據線上的數據必須保持穩定,只有在時鍾線上的信號為低電平期間,數據線上的高電平或低電平狀態才允許變化。
即:數據在SCL的上升沿到來之前就需准備好。並在在下降沿到來之前必須穩定。
⑥數據傳輸
- 在I2C總線上傳送的每一位數據都有一個時鍾脈沖相對應(或同步控制),
- 即在SCL串行時鍾的配合下,在SDA上逐位地串行傳送每一位數據。
- 數據位的傳輸是邊沿觸發。
EEPROM(24C02)
本次實驗,利用I2C通信協議,將數據寫入24C02存儲芯片。
芯片概述
芯片讀寫時的地址(device address)
芯片時序圖