Wednesday, June 7, 2017

【iTestGroup】I2C总线从设备地址冲突


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是现在市面上最主流的产品之一。工作原理如图 1。



图 1 多路复用器工作原理


使用多路开关

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



图 2 多路开关工作原理


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

增加一条I2C总线

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


iTestGroup】具备众多基于IIC总线的开发经验,如基于IIC总线的TMP75温度传感器、TCS3414颜色传感器等等,在测试测量领域有着众多的应用。自主开发功能模块,能大幅降低测试设备整体成本,也有着更高的灵活性,当然稳定性也有一定的挑战。【iTestGroup】所开发的功能模块大部分为自用,如果有需求,也可以联系sales@itestgroup.com商讨。如果有相关的技术爱好,也欢迎与support@itestgroup.com沟通联络。


<本文转载自周立功微信公众号,如有侵权,请联系admin@itestgroup.com处理>

No comments:

Post a Comment