STM32L4-HAL_I2C_状态_忙碌_接收问题

STM32L4-HAL_I2C_状态_忙碌_接收问题,stm32,i2c,Stm32,I2c,我的i2c通讯有问题。在我的i2c总线中,我有4块板STM32L4 SensorTile,有时其中一块板会阻塞总线,而其他板会因此停止通信。当我重新设置阻塞总线的电路板时,所有的电路板都重新开始工作 在我的调试中,当HAL_I2C_GetState&hi2c3返回HAL_I2C_STATE_BUSY_RX时,甚至我的其他I2C函数HAL_I2C_Slave_Receive_和HAL_I2C_Slave_Transmit_返回HAL_OK: 你知道我做错了什么吗?谢谢。使用像HAL这样的库会导致类

我的i2c通讯有问题。在我的i2c总线中,我有4块板STM32L4 SensorTile,有时其中一块板会阻塞总线,而其他板会因此停止通信。当我重新设置阻塞总线的电路板时,所有的电路板都重新开始工作

在我的调试中,当HAL_I2C_GetState&hi2c3返回HAL_I2C_STATE_BUSY_RX时,甚至我的其他I2C函数HAL_I2C_Slave_Receive_和HAL_I2C_Slave_Transmit_返回HAL_OK:


你知道我做错了什么吗?谢谢。

使用像HAL这样的库会导致类似这样的问题。为什么?

HAL用户不必了解您的硬件,因为magic library将为您做一切。 HAL用户通常不知道外设如何工作以及如何调试。 HAL用户不必费心通过magic HAL函数来查看问题所在。 从调试器发布某些图像将没有帮助

您需要做的是:

在易趣上购买最便宜的逻辑分析仪,价格为10美元,并记录通信。查看从机是否将时钟或数据线保持在低位。如果是,则将时钟插针拨9次以解锁线路 如果使用RCC寄存器重置I2C外围设备没有任何帮助,则必须在所有连接的板上实现。