I2C相關知識學習
阿新 • • 發佈:2017-09-07
電平 組成 內存 wid -1 ges 一個 發送數據 cin
- 通過I2C訪問的模塊:
SFP、XSFP、QSFP、QSFP28等等
通過MDIO訪問的模塊:
X2、CFP/CFP2/CFP4、XENPARK等等
- SDA:數據線,主機從機都能夠控制。
SCL:時鐘線,由主機控制
- 數據在時鐘為高電平時有效:
SCL |
H |
H |
H |
H |
L |
SDA |
H->L |
L->H |
L |
H |
ALL |
FLAG |
Start |
Stop |
0 |
1 |
invalid |
- I2C中一個完整的數據包由9個字節組成:
器件地址有7位,總共地址128個,預留16個地址(0xFxxx, 0x0xxx),剩余112個地址,也就是說最多可以有112個器件。
- I2C寫操作:
由主機控制start然後由器件地址尋址從機,從機下拉ack,由寄存器地址尋址寫入內存,每個字節應答,最後由主機控制stop結束寫操作。
- I2C讀操作:
當前地址讀:在I2C從機中存在一個當前地址寄存器,記錄當前寄存器地址,改地址是最近一次I2C讀寫操作的寄存器地址+1。主機控制start然後由器件地址尋址從機,從機應答然後從當前地址發送數據,沒字節主機應答一次,最後主機not ack並控制stop,結束讀操作。
隨機讀:在當前地址讀的方式前先將要讀取的寄存器地址寫入當前地址寄存器,然後主機控制restart(有些芯片需要先stop在start),緊著著進行當前地址讀操作。
I2C相關知識學習