0

嘿伙计们,我已经连续工作了 72 小时,但我找不到错误,我正在研究 PIC16F1719 我正在尝试设置 3 个外围设备,一个 ADC,一个 I2C 协议和一个用于与 BT 通信的 USART但是 ADC 很简单,但是我在 I2C 上遇到了困难,尽管事实上我已经检查了好几次代码,由于某种原因,当我得到 ACK 时,一切似乎都很好,但是当我去参加关于传感器(MPU6050)什么都没有显示,但我上次放在缓冲区上的值,有什么想法为什么会发生这种情况?就像缓冲区不会自行清除,我想我无法通过软件清除它,谢谢。

4

1 回答 1

0

如果主设备无法与它正确通信,i2c 从设备有能力锁定总线(几种可能的情况......)这在电气上是可能的,因为 2 根线是有线的,这意味着如果任何从设备拉时钟(例如) 下来,并保持这种状态,公共汽车被锁定。

  • 始终首先检查两条线上的值(使用范围或 dvm),如果“0”表示总线锁定。
  • 接下来测试你的 i2c 控制器的状态寄存器,它可能会显示仲裁错误或类似的东西。
  • 如果有任何错误,请仔细阅读 i2c 从器件数据表,以检查它预期的读/写协议类型并修复您的代码。
于 2017-04-15T18:16:48.033 回答