在使用NUCLEO-L452RE开发版的IIC总线作为主机和其他设备从机通信时主机IIC在以下代码处返回HAL_ERROR.
/* Wait until TXIS flag is set */
if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK)
{
return HAL_ERROR;
}
在调试中发现如果使用模拟IIC,可以与从机正常通信,但是使用硬件IICHAL库函数读取从机,超时返回HAL_ERROR,对比发现模拟IIC,管脚配置为推挽输出,硬件I2C则是开漏,所以在从机和主机都没有接上拉电阻的情况下,硬件I2C通信失败。
解决办法:
1.主机或从机硬件电路修改,在IIC总线上接上拉电阻。
2.由于我使用的是开发板,从机电路也已固定,所以只能通过在从机配置中,配一个内部的弱上拉,在CUBEMAX中的配置如下:
文章来源:https://www.toymoban.com/news/detail-860801.html
经测试,I2C通信正常,本人也是小白,但还是希望能给调试I2C的同志一点启发。文章来源地址https://www.toymoban.com/news/detail-860801.html
到了这里,关于关于STM32硬件I2C HAL_I2C_Mem_Read,在I2C_WaitOnTXISFlagUntilTimeout返回HAL_ERROR的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!