你好,
我使用的是DA14531完成的一天工具包与IMU。我已经修改了ble_app_profile示例,以与IMU接口并传输IMU数据。
当我使用I2C_SPEED_FAST时,我注意到该行上只发送了0,并且我的代码在几秒钟后到达NMI处理程序。在peri_init()函数中,我初始化了I2C外设,并在循环中连续读取IMU的WHO_AM_I寄存器,直到接收到正确的值。我使用逻辑分析器,观察到只发送0。
我尝试了相同的事情,但使用I2C_SPEED_STANDARD,我观察到数据正在正确地写入SDA行,我能够读取WHO_AM_I寄存器。
任何对这个问题的帮助都将是伟大的。我附上了工作(I2C_SPEED_STANDARD)和错误(I2C_SPEED_FAST)场景的截图。
谢谢
关键词:
嗨tsgowtham,
我建议用示波器而不是逻辑分析仪来观察信号。您可能会发现上拉电阻对于快速模式通信来说太弱了。
致以最亲切的问候
IM_Dialog
嗨IM_Dialog,
快速I2C使用4.7 kOhms的外部上拉电阻。是否有任何官方推荐的外部上拉电阻值应该用于快速I2C?
谢谢
嗨tsgowtham,
上拉电阻的值很大程度上取决于总线电容。查看下面的详细信息:
https://electronics.stackexchange.com/questions/1849/is-there-a-correct-resistance-value-for-i2c-pull-up-resistors
致以最亲切的问候
IM_Dialog