请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:66AK2H12 工具/软件:TI-RTOS
您好!
我有66ak2h12、CCS 7.2.0、 SDK_RTOS_k2hk 4_00_00_04和 PDK_k2hk 4_0_6。
我需要执行一个 i2c 探针来确定哪些器件物理连接到3总线中的每个器件。
过程如下:
调用 I2C_init:状态正常
初始化参数块、位速率为400kHz; 我已经尝试了分块和非分块
I2C_open (busNo、¶ms): 确定
对于128个可能地址中的每一个:
构建事务:
写入0字节、读取1字节
从器件 addr =地址
主机模式= true
IF (阻塞模式)
回调函数:向信标发布的函数
ARG =信标 ID
其他
超时= 2000
状态= I2C_TRANSFCTION (句柄、事务)
如果是阻塞模式、则等待 SEM 超时= 2000
报告状态
incr 器件地址
关闭设备
我确认了使用 uBoot 在0x4f、0x50和0x51处有器件。 但是、TI-RTOS 实现的行为如下:
- 前几个探测器返回的状态为-3
- 在达到超时周期后、接下来的几个探测器返回0状态
如果我在0x50开始扫描、那么我得到0x50和0x51的良好状态、然后是上面的行为。
问题:
- 驱动程序检测到 ACK 错误后、是否需要调用一些恢复函数来清除先前失败的事务?
- 我看到有一个 I2C 命令函数和一个用于"probe"的命令、但该命令返回了一个错误代码、指示它未实现。 是这样吗?
- 是否有一个我可以检查的 RTOS I2C 驱动程序探针示例?
非常感谢、
Tim
行为如下: