OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3329|回复: 1

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

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2018-9-8
在线时间
0 小时
发表于 2018-9-8 19:06:09 | 显示全部楼层 |阅读模式
求一个大神来指点我一下i2c四个i2c控制四个相同的模块还有一个i2c控制四个相同的模块
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-9-8 21:48:41 | 显示全部楼层
无论是一个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总线上了。
十六进制带我飞。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 22:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表