This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/66ak2h12:I2C 探针挂起

Guru**** 2587355 points
Other Parts Discussed in Thread: 66AK2H12

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/635586/rtos-66ak2h12-i2c-probe-hangs

器件型号: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、&params):  确定

 对于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的良好状态、然后是上面的行为。

问题:

  1. 驱动程序检测到 ACK 错误后、是否需要调用一些恢复函数来清除先前失败的事务?
  2. 我看到有一个 I2C 命令函数和一个用于"probe"的命令、但该命令返回了一个错误代码、指示它未实现。  是这样吗?
  3. 是否有一个我可以检查的 RTOS I2C 驱动程序探针示例?

非常感谢、

Tim

行为如下:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tim、

    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev