如何解决STM32L4-HAL_I2C_STATE_BUSY_RX问题
我无法进行i2c通信。在我的i2c总线中,我有4个板卡(STM32L4 Sensortiles),有时其中一个板卡阻塞了总线,其他板卡因此停止了通信。当我重置阻塞总线的那块板时,所有板子都重新开始工作。
在我的调试中,此错误发生在 HAL_I2C_GetState(&hi2c3)返回 HAL_I2C_STATE_BUSY_RX ,甚至是我的其他i2c函数 HAL_I2C_Slave_Receive_IT 和 HAL_I2C_Slave 返回 HAL_OK :
任何想法我在做什么错?谢谢。
解决方法
使用类似HAL的库会导致类似这样的问题。为什么?
- HAL用户无需了解您的硬件,因为魔术库将为您做一切。
- HAL用户通常不知道外围设备如何工作以及如何对其进行调试。
- HAL用户不必费心地使用神奇的HAL功能来查看问题所在。
通过调试器发布一些图像将无济于事。
您需要做什么:
-
甚至获得最便宜的逻辑分析仪(在ebay上有10美元)并记录通信。查看从机是否将时钟或数据线保持在低电平。如果是,则将时钟针脚拨动9次以解锁线路
- 如果没有帮助使用RCC寄存器复位I2C外设的方法(必须在所有连接的板上实现)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。