求一个大神来指点我一下i2c

2019-07-20 06:14发布

求一个大神来指点我一下i2c四个i2c控制四个相同的模块还有一个i2c控制四个相同的模块
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
DreamWaterPro
2019-07-20 11:40
无论是一个I2C总线挂载四个I2C模块,还是四路I2C总线分别挂载一个I2C模块,其通讯过程都是类似的:

写过程:
1、发送I2C总线启动信号
2、发送要控制的器件的设备地址+写标志
3、等待从器件应答
4、接收到从器件应答,发送要写入数据的、这个器件上的寄存器地址
5、等待从器件应答
6、接收到应答,发送要写入的数据
7、等待从器件应答
8、接收到应答,发送停止信号,I2C总线挂起,写过程结束。


读过程:
0、发送I2C总线起始信号
1、发送要控制的I2C器件的设备地址和【写】标志位(至于为什么这里是写,见下文)
2、等待从器件应答
3、接收到应答后,发送要读取的这个I2C设备的寄存器地址(因为这里需要发送的过程相当于写从设备的过程,所以前面的读写标志位要设置为“写标志”)
4、等待从器件应答
5、再次发送I2C总线启动信号,注意没有发送停止信号,相当于重启I2C总线
6、发送要控制的I2C器件的设备地址和读标志位
7、等待从器件应答
8、接收从器件传输过来的数据
9、发送非应答信号(其实就是不应答)
10、发送停止信号,I2C总线挂起,读操作完成。

楼主想问的应该是如何使用一路I2C总线和多个挂载在该总线上的从设备进行通信。注意无论是读过程还是写过程,都需要发送欲操作器件的设备地址,所以在总线上只要发送的不用的设备地址,对应的I2C设备就可以工作了。一般地部分I2C从器件是有可编程的I2C地址的,楼主可以查看该器件的数据手册。如果四个器件完全相同并且只有2个I2C地址可以选,或者没有可编程地址的能力,那么就只能分别挂载在不同的I2C总线上了。

一周热门 更多>