器件型号: TMS320F280039
您好:
我已经根据 i2c_ex2_eeprom.c 编写了 I2C 驱动程序、但我遇到了 SCL 线路一直处于低电平的问题。 这是一个间歇性问题、在某种程度上是随机发生的。
发生这种情况时、我会注意到在错误之前的最后一条消息是正确的(使用逻辑分析仪)、但不会出现停止条件。
我已经注意到、当 SYSCLK 为 120MHz 时、不会出现此问题。 不过、我遇到的是 72MHz 的 SYSCLK。
此问题是否曾在内部解决过? 提前感谢您。

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.
器件型号: TMS320F280039
您好:
我已经根据 i2c_ex2_eeprom.c 编写了 I2C 驱动程序、但我遇到了 SCL 线路一直处于低电平的问题。 这是一个间歇性问题、在某种程度上是随机发生的。
发生这种情况时、我会注意到在错误之前的最后一条消息是正确的(使用逻辑分析仪)、但不会出现停止条件。
我已经注意到、当 SYSCLK 为 120MHz 时、不会出现此问题。 不过、我遇到的是 72MHz 的 SYSCLK。
此问题是否曾在内部解决过? 提前感谢您。

Ardan、
我仍在调查这个问题。 您是否有一个示波器镜头可以更清楚地显示上升、设置、保持、下降等时间。 您能否确认 I2C FSM 时钟、波特率和相关的时钟配置? @时钟应在 7 –12MHz 范围内以正确满足时序要求、并且使用时钟分频器可以做到、FSM 时钟值@120MHz 比 Δ V 72MHz 更精确。 I2C_initController () 函数还假定一个标称 FSM 时钟频率= 10MHz。

此外、请确保将任何 CPU 周期超时循环(即,对于循环)替换为 I2C 状态检查(例如 while (I2C_getStopConditionStatus (myI2C0_BASE)))、因为这也会导致变化。
此致、
Aishwarya
Ardavan、
根据上述要求、您能否向我发送您的确切时钟配置、并通过示波器屏幕截图确认是否满足时序要求? 您能否尝试使用精确的 FSM 时钟?因此 PSC = 8 并尝试计算结果?
另外、我尝试了无限轮询 I2C 停止条件状态(就像您在此处添加的那样)、但这并不能完全解决问题。
您能否详细说明“它无法完全解决问题“的含义? 是否仍在使用任何 device_delay_us() 或循环计数器?
很遗憾、我现在无法在我这边运行示例。
此致、
Aishwarya