OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 综合技术 » 通讯及无线技术 » I2C总线从设备地址冲突

共3条 1/1 1 跳转至

I2C总线从设备地址冲突

菜鸟
2017-08-10 16:19:25    评分

I2C地址

I2C总线是最常用的总线之一。因为它占用的I/O资源少,总线结构简单。I2C总线上设备的关系是“一主多从”,所以I2C协议中最重要的一个组成部分是I2C从设备地址。从设备地址有两种格式:7bit和12bit。由于实际使用中基本上不会挂载如此多的从设备,所以很多从设备的地址都采用7bit的格式。但是随着提供I2C接口的从设备种类越来越多 ,不同功能的从设备地址就会产生重叠。


地址冲突现象

主设备无法正常读写总线上设备地址产生冲突的从设备。通过逻辑分析仪分析总线时序,发现主设备每次请求从设备时,总线上就会有两个从设备应答,接下来的时序就乱套了。


地址冲突的原因

人为因素

在从设备选型时没有考虑到从设备地址,选用了两个相同地址的从设备。

非固定的从设备地址

一般从设备的地址经硬件上的配置后,基本都是固定的7bit。但是有一些从设备地址不是固定,如EEPROM存储器CAT24C04 。当读取CAT24C04的地址0xFF以下的数据时,从设备地址为0xA1,当读取0xFF以上的数据时从设备地址为0xA5。当总线上同时挂载了一个时钟芯片PCA8563时,因为PCA8563的从设备读取地址是0xA5,所以这两个器件就会产生了地址冲突。很多人都会只看到CAT24C04的地址是0xA1,而忽略了0xA5,从而造成了总线地址冲突。

不可避免的地址冲突

当工程师门根据项目的需求选型了两个从设备。两个从设备的地址都是不可配置,并且两个从设备地址相同。


解决方法

当从设备地址可配置时

对设备地址进行配置,避免设备地址相同。

当从设备地址不可配置时

使用多路复用器

NXP的I2C总线多路复用器,如PCA9540B是现在市面上最主流的产品之一。

使用多路开关

NXP的I2C总线多路开关,如PCA9543A是现在市面上最主流的产品之一。

归为同一组的从设备地址都不相同,把存在地址冲突的从设备放到另外一组,每次只打开一个开关,主器件每个时刻只能和其中一组设备通信。这样同样可以解决地址冲突问题。

增加一条I2C总线

现在的MCU一般都提供2个以上的I2C接口,如果在从设备地址产生冲突,并且MCU资源有剩的情况下。可以通过增加一条I2C总线来解决地址冲突问题。





关键词: 总线     设备     地址     冲突    

专家
2017-08-11 05:47:43    评分
2楼

沙发


专家
2017-08-11 08:38:45    评分
3楼

谢谢楼主分享经验。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]