打印
[其他ST产品]

STM32硬件IIC

[复制链接]
1191|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycamelaaa|  楼主 | 2024-4-24 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用STM32F103的硬件IIC,查询的方式,进行通讯,出现BUSY之后,去重新初始化IIC之后,之后为什么会每次卡在设备地址发送不出去啊。求教,求教


使用特权

评论回复
沙发
tpgf| | 2024-5-8 08:31 | 只看该作者
建议楼主看一下晶振是否已经起振了

使用特权

评论回复
板凳
tpgf| | 2024-5-8 09:35 | 只看该作者
为什么出现busy信号要对模块进行重新初始化呢

使用特权

评论回复
地板
keaibukelian| | 2024-5-8 10:38 | 只看该作者
使用示波器看看发送出来的波形是不是符合iic时序的要求

使用特权

评论回复
5
renzheshengui| | 2024-5-8 22:51 | 只看该作者
看一下总线上的波形 看看是不是因为硬件原因导致不能正常发送波形的

使用特权

评论回复
6
paotangsan| | 2024-5-8 23:24 | 只看该作者
楼主的意思就是无法将主设备 和从设备进行连接?还是说无法设置设备的地址呢?

使用特权

评论回复
7
guanjiaer| | 2024-5-8 23:57 | 只看该作者
总线上返回错误码吗 还是说什么信息都没有

使用特权

评论回复
8
纠结的那些年| | 2024-8-31 16:11 | 只看该作者
每次卡在设备地址发送不出去的问题,通常这是因为I²C总线在重新初始化后仍然处于"忙"的状态

使用特权

评论回复
9
公羊子丹| | 2025-4-3 07:36 | 只看该作者
STM32F103 的 IIC 硬件有时候会陷入 BUSY 状态,可能是总线被拉低了,试试在重新初始化之前手动释放 SCL 和 SDA?

使用特权

评论回复
10
周半梅| | 2025-4-3 07:37 | 只看该作者
你可以在重新初始化前加一个 I2C_DeInit(),然后再 I2C_Init(),看看能不能解决卡住的问题。

使用特权

评论回复
11
帛灿灿| | 2025-4-3 07:37 | 只看该作者
可能是 IIC 设备在上次通讯失败后没有释放总线,建议用 GPIO 模拟时钟线 SCL 拉高 9 次,强制清除 BUSY 状态。

使用特权

评论回复
12
童雨竹| | 2025-4-3 07:38 | 只看该作者
你检查过 IIC 外设的 SR2 寄存器吗?如果 BUSY 位一直为 1,说明总线可能是挂死了,需要手动复位 IIC 外设。

使用特权

评论回复
13
万图| | 2025-4-3 07:39 | 只看该作者
试试 __HAL_I2C_DISABLE() 之后再 __HAL_I2C_ENABLE(),有时候直接重新初始化 IIC 可能不会清掉 BUSY 状态。

使用特权

评论回复
14
Wordsworth| | 2025-4-3 07:40 | 只看该作者
你的 IIC 设备上电顺序有没有问题?有些 IIC 设备上电慢,STM32 可能在设备还没准备好时就开始通讯,导致总线异常。

使用特权

评论回复
15
Bblythe| | 2025-4-3 07:41 | 只看该作者
你可以尝试在初始化前加个 HAL_Delay(10),有些 IIC 设备需要一点时间才能稳定,太快初始化可能会导致错误。

使用特权

评论回复
16
Pulitzer| | 2025-4-3 07:42 | 只看该作者
如果你是用 HAL 库,试试 HAL_I2C_DeInit() 之后再 HAL_I2C_Init(),有时候 HAL 库初始化不彻底,需要先彻底释放。

使用特权

评论回复
17
Uriah| | 2025-4-3 07:43 | 只看该作者
你检查过 IIC 相关的 GPIO 复用模式了吗?可能是某次异常后 GPIO 配置出错,导致 IIC 无法正常工作。

使用特权

评论回复
18
Clyde011| | 2025-4-3 07:44 | 只看该作者
最后一个杀手锏,你可以试试 NVIC_SystemReset(); 直接软复位 STM32,看是不是能恢复 IIC 通讯

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

759

主题

3886

帖子

0

粉丝