我已经使用 cube-mx 生成了 I2C 代码。我的从属设备是基于 I2C 的 DIGI-POT。
当我检查 HAL_I2C_IsDeviceReady() 函数时 - 它总是出现忙标志。
以下是我所做的硬件和固件检查:
硬件检查 -
- DIGIPOT 获得 5v 电压。
- 检查上拉电阻值 - 很好 - 使用 4.7kohm
Fw 检查 -
1. 地址 - 0101 1000 - 0x58
2. 读取 SCL 和 SDA 引脚的状态 - 均为逻辑高电平。
3. 两个引脚上的电压 - 3.3v
4.有些人面临同样的问题 - 在互联网上建议先启用 I2C 时钟,然后再启用 GPIO - 效果不佳。这是链接
https://electronics.stackexchange.com/questions/272427/stm32-busy-flag-is-set-after-i2c-initialization。