您好!
我目前正在尝试通过 I2C 控制显示器。 该功能在大部分时间都运行良好。 但是、有时 I2C 通信不能正常工作、因为未发送启动条件。 在调试过程中、相应的位(UCTXSTT)也不会被控制器清零、但保持置位状态。 当我拔下显示器、因此没有其他器件连接到 I2C 总线时、我也观察到这种行为。 但是、此问题并不总是发生、有时在连接和未连接显示器的情况下发送启动条件都有效。 启动条件有时未被发送的原因可能是什么?
非常感谢
托比亚斯·欣德尔
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.
您好!
我目前正在尝试通过 I2C 控制显示器。 该功能在大部分时间都运行良好。 但是、有时 I2C 通信不能正常工作、因为未发送启动条件。 在调试过程中、相应的位(UCTXSTT)也不会被控制器清零、但保持置位状态。 当我拔下显示器、因此没有其他器件连接到 I2C 总线时、我也观察到这种行为。 但是、此问题并不总是发生、有时在连接和未连接显示器的情况下发送启动条件都有效。 启动条件有时未被发送的原因可能是什么?
非常感谢
托比亚斯·欣德尔
您好!
没有重复的开始条件或 NACK、这是因为 I2C 命令在开始条件和地址的初始启动中没有发送、即使在调试时也是如此。 因此、在示波器上、SCLK 和 SDA 上没有任何活动。 只有在 I2C 引脚初始化之后才会保持恒定的高电平。 正如我所说的、有时它运行正常。
我仅将显示屏用于测试目的、而不使用任何 USS 应用。 我的项目基于示例项目"I2C 主机到多个从机的 TX 字节"、但我已经对其进行了调整、以便只发送到一个从机。
尊敬的 Tobias:
因此、当您执行 I2C 传输并探测这些线路时、根本看不到任何活动? 在我看来、这似乎是软件问题。 如果有一些活动、如果您可以对线条进行示波器捕获、将会非常有帮助。
话虽如此、我也认为22k 上拉电阻器对此非常弱。 应减小此值。 根据您所需的 I2C CLK 频率、您应该使用更接近4.7K 的频率。 请尝试实施此更改、并让我知道您的 I2C CLK 频率是多少。