I2C
Inter-Integrated Circuit Bus 的簡稱,
最初由飛利浦公司制定用來讓CPU與週邊低速裝置溝通的協定,
後來產權都轉移給NXP公司,
I2C匯流排很簡單,
只有兩條線SDA 與 SCL,
每一個I2C 裝置都有一個slave address,
slave address 通常以7 bit長度的十六進制表示,
也就是說除了保留的16的位址以外,
最多能夠連接112個裝置,
常見的I2C匯流排依照速率可分為
標準模式:
100K bit/s
低速模式:
10K bit/s
快速模式:
400K bit/s
高速模式:
3.4M bit/s
I2C 兩條訊號線 SDA與SCL,
通常有pull high 電阻,
用以讓其維持在高準位
一般狀況下,
SDA只有在SCL為LOW的時候才能改變資料,
SCL為HIGH時SDA必須維持訊號穩定,
只有在特殊情形時,
SDA會在SCL為HIGH時候改變
例如
訊號開始(START)與結束(STOP)
底下是一個標準的I2C 資料傳輸的簡圖
一個標準的I2C 封包除了start 與 stop 訊號以外,
由8個 bit 組成(1 byte),
加上一個ACK(low) /NACK (high) bit
才是一個完整的I2C封包
I2C傳輸的第一個byte最為重要,
因為前面提到的slave address 就在這個byte中,
最低位元為read /write 的控制bit
I2C的write傳輸如下圖:
I2C的read傳輸如下圖:
一個混合模式的I2C傳輸:
沒有留言:
張貼留言