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

TMS32C5535的IIC问题

亲爱的TI官方

        我最近在开发TMS32C5535系列产品的遇到了IIC的在跑着跑着在六分钟的样子就经常读取数据超时的问题,我是用的CSL库的“c55_csl_3.08.01”的IIC轮询例程“CSL_I2C_PollExample”来开发的。

        是这样的我的IIC总线上挂载的两个设备,一个设备我1s使用IIC读取两次数据,另外一个设备我1s读取600包数据外加两个字节数据,一包数据为6个字节。程序运行了一段时间过后600包数据都读取不到了,而另外的两个字节的数据都可以读取得到。

        我设置我的IIC总线的频率为150Khz。

        希望TI的官方人员能帮我分析一下这个问题的所在。

Shine:

请问如果只挂载一个读600包数据的设备,可以长时间运行吗?

,

user6393475:

只挂载一个的话,我放在一个while(1)循环的跑的话是不会有问题的。我还试了在while(1)里面读同一个设备不同寄存器的数据的时候,会立马IIC总线出问题,数据获取不到。如果我在同一个设备轮询切换读不同的寄存器数据的话,加一个延时,hw_inlineDelay_us(500);  它也不会出现问题。也就是同一个设备读取不同寄存器的数据必须要加一个时间延迟。这是什么问题呢?为什么IIC必须要这样的呢。

,

user6393475:

问题1. 获取一个设备600包数据大概几分钟的样子数据再也获取不到了。但是这个设备的其他寄存器数据和其他设备的数据是正常的。

问题2. 在一个设备600包数据正常的情况下,给其发送一个停止获取两个IIC设备的数据的命令,间隔几秒再让IIC正常运行,获取一个设备600包数据挂了。但是这个设备的其他寄存器数据和其他设备的数据是正常的。

问题3. 运行很长一段时间后,整个IIC总线都会挂掉,IIC无法获取两个设备的所有数据。

,

user6393475:

下面这张图是IIC总线正常的时序图,都处于高点平。

下面这张图是整个IIC总线出现的图,蓝牙为SDA为低电平,在被谁一直占用,所以导致IIC总线有问题,请问有什么办法能比较好的解决这个问题吗?

,

user6393475:

/** I2C timeout value */#define CSL_I2C_MAX_TIMEOUT (0xFFFF)这是官方给的CSL_I2C_MAX_TIMEOUT 。我的CSL_I2C_MAX_TIMEOUT 设置为了 0x0300;

,

Shine:

请参考附件的i2c tips。

3021.I2C Tips – Texas Instruments Wiki.mht

,

user6393475:

亲爱的shine,谢谢你的帮助,我已进一步找到问题所在,但是还是没办法解决。针对这个问题我又开了新的帖,希望你能再帮我分析一下。

赞(0)
未经允许不得转载:TI中文支持网 » TMS32C5535的IIC问题
分享到: 更多 (0)