TI中文支持网
TI专业的中文技术问题搜集分享网站

请教:omapl138 两个i2c同时使用问题

因项目需要,在arm端使用I2C0访问eeprom1,dsp使用i2c1访问eeprom2。

单独对arm和dsp进行读写测试,写进去数据读出来,进行对比,没有问题。

在dsp进行读写测试的时候,同时测试arm的读写操作,dsp会有异常。

提示写数据时等不到 ICXRDY 寄存器的返回状态。

如果dsp正常,arm这边过一会儿就会出错。

请教各位大神,两个i2c不能同时使用吗?

Denny%20Yang99373:

理论上应该互相不会有影响

看看软件其他部分会不会互相有影响?比如初始化等

user4770590:

回复 Denny%20Yang99373:

谢谢您的回复!

这两天不断改进程序,发现dsp那边不出错误了,但是ARM这边会出现问题,赋值ICCNT寄存器值为64,每次for循环读64个字节,函数退出。

i2c控制器此时应该产生一个nack和一个stop。

读一个两个或单步运行,都没有问题。

在用测试程序连续操作多次之后,会出现主机没有发stop的情况。然后总线就是一直忙。for循环读出来的64个字节值是正确的,然后手动去读ICDRR,还是能连续读出64个值。

看现象应该是内部计数器有问题,没有往下减。但是ICCNT值一直是64。

1.目前系统启用了两个中断,关了中断之后,问题消失。

2.中断会导致无法及时读取ICDRR,但是如果不读ICDRR,主机就不会发下一个clock,想不通为什么会有影响。

3.中断会影响i2c总线的时序吗?理论上是不会影响的

Tony Tang:

回复 user4770590:

我比较倾向于你板子上I2C时钟线或信号线,更倾向于时钟线上受到了干扰。检查layout ,看I2C信号线周围是不是有大干扰源,比如电源,电感,时钟信号等。

赞(0)
未经允许不得转载:TI中文支持网 » 请教:omapl138 两个i2c同时使用问题
分享到: 更多 (0)