OpenEdv-开源电子网

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

多个IIC器件干扰

[复制链接]

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
发表于 2017-9-9 15:50:14 | 显示全部楼层 |阅读模式
5金钱
   一条IIC总线挂接了AT24C02、PCF8563、PCF8591,发现AT24C02干扰其他两个器件正常工作,无论如何修改AT24C02的器件地址其他两个设备都不能正常工作,拆掉24C02后就就正常了(AT24C02可以正常工作不受其他两个芯片影响)。大家有没有遇到同样问题?我记得以前用过24LCxx系列IIC可以。

最佳答案

查看完整内容[请看2#楼]

问题已经解决了,将AT24CXX系列的EEPROM换成PIC24XX系列的EEPROM问题就解决了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-9 15:50:15 | 显示全部楼层
问题已经解决了,将AT24CXX系列的EEPROM换成PIC24XX系列的EEPROM问题就解决了。
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2017-9-9 15:54:26 | 显示全部楼层
IIC总线上拉电阻阻值有没有调整?
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-9 16:05:28 | 显示全部楼层
本帖最后由 shuaigew88 于 2017-9-9 16:08 编辑
a3748622 发表于 2017-9-9 15:54
IIC总线上拉电阻阻值有没有调整?

阻值4.7k,原来是10k。不过我用逻辑分析仪发现有AT24C02时总线读其他两个器件全0,操作AT24C02时可以正常读写24C02
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-9-9 16:56:34 | 显示全部楼层
AT24C02是不是水货
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-9 17:10:12 | 显示全部楼层

应该不会吧,AT24C02可以正常读写。
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-9 21:07:31 | 显示全部楼层

1.jpg     2.jpg


好像别人也有这样的问题。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2017-9-9 21:46:03 | 显示全部楼层

应当进一步查,看问题出在哪一步,然后才好判断。

回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-9-9 21:48:06 | 显示全部楼层
1、i2c挂多个外设时,注意总线阻容 匹配,适当把电阻减小,电阻降为1.5K试试;本人产品上i2c挂3——4个外设正常使用;
2、地址不能重复,如pcf8563的0x51(不包括读写位)与AT24c02的地址(0x50——0x58)不能重复。
回复

使用道具 举报

15

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1276
金钱
1276
注册时间
2016-5-31
在线时间
499 小时
发表于 2017-9-9 22:01:12 | 显示全部楼层

回复楼主:

1、请看PCF8563的DataSheet,PCF8563的I2C 总线从地址:读,0A3H;写,0A2H。
2、请看AT24C02,04,08等的器件地址选择:【地址选择引脚:A2,A1,A0】

      AT24C02_04_08器件地址选择.jpg
      见上图,假设器件选择引脚的A2=0,A1=0; A0=1;  
      就会有这个问题:
         在读的时候R/W=0; AT24C02的器件地址就是:0A2H;

         在写的时候R/W=1; AT24C02的器件地址就是:0A3H;


         这样一来ATC02的器件地址,就会同PCF8563的读,写器件地址,有了冲突!!!
   这就是产生干扰的问题所在!!!


        最好的解决方法就是: 把ATC02_04_08的A2引脚拉高,一直为高电平,也就不会产生上边提到的问题了。


请看下图:

    ATC02_04_08高级选择.jpg

       最后祝: 大家生活、工作愉快!




回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-9-9 23:11:55 | 显示全部楼层
xfcjava3 发表于 2017-9-9 22:01
回复楼主:

1、请看PCF8563的DataSheet,PCF8563的I2C 总线从地址:读,0A3H;写,0A2H。

同意你的做法
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-9-9 23:12:37 | 显示全部楼层
shuaigew88 发表于 2017-9-9 21:07
好像别人也有这样的问题。

我没遇到过,你也可以这样测试一下看下,将I2C总线上的其他设备去掉,只保留24c02在上面
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-10 07:24:29 | 显示全部楼层

目前确认很有可能是水货,(A2、A1、A0=0)我进一步测试发现程序中器件地址随便写多少都可以正常读写EEPROM,而且数据还是正确的。PIC24CL02就不会出现这些问题。
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-10 07:24:53 | 显示全部楼层
xuande 发表于 2017-9-9 21:46
应当进一步查,看问题出在哪一步,然后才好判断。

买的AT24C02应该是假货。
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-10 07:32:59 | 显示全部楼层
xfcjava3 发表于 2017-9-9 22:01
回复楼主:

1、请看PCF8563的DataSheet,PCF8563的I2C 总线从地址:读,0A3H;写,0A2H。

低级错误肯定是不会犯的,24C02器件地址是0xA0和0xA1,其他IIC器件地址分别是0xA2,0xA3,0xAE,0xAF,操作24C02时数据读写一切正常,操作其他两个器件时数据读写错误,拆掉24C02后其他两个器件一切正常!所以猜测是24C02的问题进一步测试发现对24C02无论发送的器件地址是多少都能进行正常的数据读写。(比如A0,A1,A2接低电平时发送A6,A7或AD,AC等等都可以正常读写24C02)所以目前可以肯定的是24c02有问题。在网上也看到别人跟我有同样问题就是AT24Cxx不分辨器件地址!以前用PIC24CXX系列没出现过任何问题。
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-10 07:35:53 | 显示全部楼层
本帖最后由 shuaigew88 于 2017-9-10 07:43 编辑
八度空间 发表于 2017-9-9 23:12
我没遇到过,你也可以这样测试一下看下,将I2C总线上的其他设备去掉,只保留24c02在上面

       总线挂接3个IIC设备时只有AT24C02能正常读写,去掉AT24C02后其他两个器件就可以正常读写。3个IIC设备的器件地址不重复分别是(0XA0,0XA1)  (0XA2,0XA3  (0XAE,0XAF)。核心问题是无论发送器件地址是多少AT24C02都可以正常读写数据而其他两个设备必须发送正确的器件地址才会回应!所以是24C02影响了其他两个IIC设备通讯。
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-10 07:40:40 | 显示全部楼层
Acuity 发表于 2017-9-9 21:48
1、i2c挂多个外设时,注意总线阻容 匹配,适当把电阻减小,电阻降为1.5K试试;本人产品上i2c挂3——4个外设 ...

电阻修改过不行,只有拆掉AT24C02其他器件才正常。
回复

使用道具 举报

13

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1897
金钱
1897
注册时间
2016-8-20
在线时间
238 小时
发表于 2017-9-10 10:03:31 | 显示全部楼层
你这个问题是最近一段时间常出现的问题,这个是厂家那批货的原因,好多公司都反映过这个问题的,我们公司也遇到过
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-9-10 13:02:19 | 显示全部楼层
shuaigew88 发表于 2017-9-10 07:35
总线挂接3个IIC设备时只有AT24C02能正常读写,去掉AT24C02后其他两个器件就可以正常读写。3个IIC ...

买到假货或者次品了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-9-10 13:02:33 | 显示全部楼层
shuaigew88 发表于 2017-9-10 07:24
目前确认很有可能是水货,(A2、A1、A0=0)我进一步测试发现程序中器件地址随便写多少都可以正常读写EEPR ...

换货吧
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
 楼主| 发表于 2017-9-10 13:37:00 | 显示全部楼层
ChaserMCU 发表于 2017-9-10 10:03
你这个问题是最近一段时间常出现的问题,这个是厂家那批货的原因,好多公司都反映过这个问题的,我们公司也 ...

好的,谢谢。目前用PIC的替换了就可以了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 02:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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