主题中讨论的其他器件:CC3220SF
您好的支持团队。
我通过 I2C 将 CC3220SF 与 FRAM 存储器和 RTC 通信。
我使用的是 TI-RTOS 和德州仪器 I2C 驱动程序。
I2C 的频率为400KHz。
仅在几秒钟后与两个器件进行通信。
我正在使用 I2C_transferTimeout 函数、当错误发生时、该函数的返回值为 I2C_STATUS_ERROR。
我查看了 Texas I2C.c 驱动程序代码、但未找到问题的线索。
我将逻辑分析仪连接到 I2C 引脚、并在 LED 上连接了一个触发信号、我称之为"Blu"。
当 I2C_transferTimeout 函数返回 I2C_STATUS_ERROR 时、我将"Blu" LED 编程为上升。
此图来自使用 FRAM 的传输。
在此事务中、我配置了:
从器件地址= 0x50;
写入字节数= 2、这两个字节是要访问的 FRAM 存储器的地址0x00和0x18;
读取字节数= 6、在这种情况下、将读取地址0x0018的6个字节。
在下图中、当通信成功时、我在顶部放置了一个捕获、在底部放置了一个错误发生时。
图的两部分来自同一个捕获、上部大约为19.3ms、误差大约为49.9ms。
我注意到的不同之处在于、在将地址发送到 FRAM 后、:
1 -仅发生 ACK (A)、CC3220SF 不执行重复启动(SR);
2 -由于某种原因、I2C 总线在没有 SCL 时钟的情况下保持空闲;
3 -在一个几乎2字节的周期后、停止(P)发生;
4-一段时间后、启动(S)发生;
5 -从器件的地址被放置用于读取、并且 FRAM 发送顶部看到的相同数据;
6 -但是 I2C_transferTimeout 函数返回 I2C_STATUS_ERROR、从而触发蓝光信号。
出现此错误后、所有后续事务都会指示 I2C_STATUS_ERROR。
我注意到、即使重新启动调试、问题仍然存在、我需要执行上电复位。 我不知道任何器件都在保持 I2C 总线。
我还使用 I2C_transfer 函数进行了测试、并出现了相同的症状、一段时间后、该函数返回 false、查看逻辑分析仪、行为类似。
我使用的是 CCS 10.3.0.0000007和 SimpleLink CC32xx SDK 5.10.0.02。
我还在问题发生时放置了一个包含 I2C 寄存器的映像。
感谢你的任何帮助。


