器件型号: TDA4VEN-Q1
尊敬的团队:
我们处理的是 SDK mcu_plus_sdk_j722s_11_00_00_12。 我尝试将 WUKP I2C0 速度从 400kHz 更改为 1MHz(HS 模式)。 但是、当我测量波形时、发现了一些意想不到的事情。
根据数据表(第 12.1.2.2.2.4.2 节、图 12-12)、HS 模式传输的第一阶段(控制器代码)应以 F/S 模式速度 (400kHz) 发送。 然后、在重复启动 (SR) 之后、目标地址和数据以 HS 模式速度 (1MHz) 发送。

但在我的测量中、第一个阶段大约以 5MHz 运行、而第二个阶段在 1MHz 是正确的。 我使用逻辑分析仪捕获波形并对其进行解码、第一个阶段比预期快得多。


我检查了 I2C 驱动程序代码。 当速度设置为 1MHz 时、F/S 模式时钟的配置寄存器设置为 0。 这似乎会导致第一阶段出现异常的 5MHz。 函数 I2CmasterInitExpClk() 中的代码:

数据表还指出、F/S 模式期间和 HS 模式第一阶段期间 SCL 的低电平和高电平时间由 SCLL 和 SCLH 寄存器 (I2C_SCLL[7:0]和 I2C_SCLH[7:0]) 的低 8 位决定。 代码似乎没有正确设置这些值。

我的问题:
-
这是 I2C 驱动程序中的错误吗?
- 该问题是否影响正常的 I2C 通信? (例如,器件仍然可以正常工作吗?)
附加观察: 即使不修改代码,通信也不会报告任何错误,效果很好。 但是、观察波形可以发现、起始位本身不符合 I2C 标准。