I2C多从机通讯,从机越多通讯速录乘倍下降,请问怎么回事

Harbinger.Stark 2019-07-24 05:31:43
用MPU9250传感器,由于该传感器只有一个DA0地址引脚,所以常规情况下无法配置IIC地址。
我用74HC154给不同的MPU传感器的地址引脚配置电平,即选中传感器的地址引脚低电平为使能。
此方法读取数据正常,但发现速率很低。

例如与一个MPU通讯,一秒可读取100次数据。IIC轮询两个MPU,一秒可以读取90个数据,平均一个MPU一秒被读取45次。
IIC轮询是个MPU,一秒钟可以读取10个数据,平均一个MPU一秒被读取一次数据。

请问这是怎么回事,可能是什么原因?
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harbinger.Stark 2019-07-29
  • 打赏
  • 举报
回复
引用 4 楼 bsnow 的回复:
没有这么去用过MPU9250,因为Datasheet里面没有表述 AD0 这个管脚是何时被采样的。就是不知道什么时候I2C的地址会根据AD0进行重新配置。如果AD0改变了,但是地址需要过一段时间才Load到芯片里面的Logic,那回应的速率肯定也就下降了。(这个纯属于个人猜测,因为Datasheet根本没有说明这个是怎么做的

另外,如果你有很多MPU我个人建议使用SPI通过CS片选。

PS,这个芯片厂家已经不推荐了,做着玩没事,但是做产品就当注意。

感谢回复和讲解,如果这样的话也只能改硬件了,请问有没有其他9轴传感器芯片推荐?
bsnow 2019-07-27
  • 打赏
  • 举报
回复
没有这么去用过MPU9250,因为Datasheet里面没有表述 AD0 这个管脚是何时被采样的。就是不知道什么时候I2C的地址会根据AD0进行重新配置。如果AD0改变了,但是地址需要过一段时间才Load到芯片里面的Logic,那回应的速率肯定也就下降了。(这个纯属于个人猜测,因为Datasheet根本没有说明这个是怎么做的) 另外,如果你有很多MPU我个人建议使用SPI通过CS片选。 PS,这个芯片厂家已经不推荐了,做着玩没事,但是做产品就当注意。
Harbinger.Stark 2019-07-26
  • 打赏
  • 举报
回复
引用 1 楼 YGLeeeon 的回复:
额,我觉得是当设备增多的时候,你的中断也会增加,响应中断的时候数据就丢失了一部分,所以每次接受某一个设备的数据的时候之前先屏蔽中断,当传输完成再打开中断。

找到官方例程里的中断了,藏得太深了,我尝试改一下,谢谢
Harbinger.Stark 2019-07-26
  • 打赏
  • 举报
回复
引用 1 楼 YGLeeeon 的回复:
额,我觉得是当设备增多的时候,你的中断也会增加,响应中断的时候数据就丢失了一部分,所以每次接受某一个设备的数据的时候之前先屏蔽中断,当传输完成再打开中断。

感谢帮助,我这个设备目前没用到中断相关,IIC通讯也是模拟的,可能不是这方面问题。
YGLeeeon 2019-07-26
  • 打赏
  • 举报
回复
额,我觉得是当设备增多的时候,你的中断也会增加,响应中断的时候数据就丢失了一部分,所以每次接受某一个设备的数据的时候之前先屏蔽中断,当传输完成再打开中断。

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧