I2C相关知识学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I2C相关知识学习相关的知识,希望对你有一定的参考价值。

  1. 通过I2C访问的模块:

SFP、XSFP、QSFP、QSFP28等等

通过MDIO访问的模块:

X2、CFP/CFP2/CFP4、XENPARK等等

  1. SDA:数据线,主机从机都能够控制。

SCL:时钟线,由主机控制

  1. 数据在时钟为高电平时有效:

SCL

H

H

H

H

L

SDA

H->L

L->H

L

H

ALL

FLAG

Start

Stop

0

1

invalid

  1. I2C中一个完整的数据包由9个字节组成:

 

 技术分享

 

器件地址有7位,总共地址128个,预留16个地址(0xFxxx, 0x0xxx),剩余112个地址,也就是说最多可以有112个器件。

  1. I2C写操作:

由主机控制start然后由器件地址寻址从机,从机下拉ack,由寄存器地址寻址写入内存,每个字节应答,最后由主机控制stop结束写操作。

  1. I2C读操作:

当前地址读:在I2C从机中存在一个当前地址寄存器,记录当前寄存器地址,改地址是最近一次I2C读写操作的寄存器地址+1。主机控制start然后由器件地址寻址从机,从机应答然后从当前地址发送数据,没字节主机应答一次,最后主机not ack并控制stop,结束读操作。

随机读:在当前地址读的方式前先将要读取的寄存器地址写入当前地址寄存器,然后主机控制restart(有些芯片需要先stop在start),紧着着进行当前地址读操作。

 

以上是关于I2C相关知识学习的主要内容,如果未能解决你的问题,请参考以下文章

树莓派学习之I2C通信

Smart210学习记录-----Linux i2c驱动

初探linux子系统集之i2c子系统

linux驱动之i2c学习

十i2c子系统

STM32学习笔记—I2C通信