打印
[STM32F4]

STM32CubeIDE 进入调试模式时,I2c 不工作

[复制链接]
475|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Hitomi22|  楼主 | 2025-4-19 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用 Nucleo STM32F446Re 上提供的 STM 库 (lsm6dsl) 读取 IKS01A2 板的加速度计和陀螺仪。修改了 I2c,以便能够与使用 CubeMx 的电路板一起使用。
现在,只有将 Nucleo 插入 USB 时,i2C 通信才有效。以调试模式启动时,I2c ***不会通信正常。从 USB 拔下板子并再次插入时,才会再次启动。此外,在调试模式下按下复位键也无法使 I2C正常通信。在网上搜索了很长时间,也没有找到类似的帖子。

使用特权

评论回复
沙发
回复就哭哭| | 2025-4-30 23:46 | 只看该作者
如果 LSM6DSL 或其他 I2C 设备在启动或复位时未被正确初始化,它可能会一直拉低 SDA 或 SCL,造成“总线忙(BUSY)”状态,从而让 STM32 的 HAL_I2C 初始化失败。

使用特权

评论回复
板凳
公羊子丹| | 2025-5-26 07:23 | 只看该作者
感觉像是调试模式下系统时钟没跑起来,I2C总线时序乱了。试试在CubeMX里确认下debug模式下的时钟配置。

使用特权

评论回复
地板
周半梅| | 2025-5-26 07:25 | 只看该作者
会不会是低功耗模式相关的设置影响了调试?调试模式下 MCU 不休眠,I2C就不走了。

使用特权

评论回复
5
帛灿灿| | 2025-5-26 07:26 | 只看该作者
我遇到过类似问题,最后发现是 HAL_Delay 在调试暂停时不准了,影响通信时序。

使用特权

评论回复
6
童雨竹| | 2025-5-26 07:27 | 只看该作者
看着像是调试状态下阻塞住了中断处理,I2C 中断方式的话调试态下经常不触发。

使用特权

评论回复
7
万图| | 2025-5-26 07:28 | 只看该作者
你可以试试在调试配置里关掉 "halt on reset",可能能绕过这个问题。

使用特权

评论回复
8
Wordsworth| | 2025-5-26 07:29 | 只看该作者
建议在调试器连接后,手动点一下 resume,看 I2C 通信是不是能继续跑。

使用特权

评论回复
9
Bblythe| | 2025-5-26 07:30 | 只看该作者
是不是用了ST的调试SWV trace或ITM通道?可能抢了I2C的引脚。

使用特权

评论回复
10
Pulitzer| | 2025-5-26 07:31 | 只看该作者
有时候 STLink 和目标板复位管理冲突,你可以试试用软件复位代替硬复位看是否有改善。

使用特权

评论回复
11
Uriah| | 2025-5-26 07:32 | 只看该作者
可能是你初始化I2C的代码依赖某些外设还没ready,在调试模式下执行顺序被打断了。

使用特权

评论回复
12
Clyde011| | 2025-5-26 07:32 | 只看该作者
实在不行可以在 main 函数加个 while (!HAL_I2C_IsDeviceReady(...)) 来等传感器准备好,调试状态下初始化顺序经常不对。

使用特权

评论回复
13
t60yz| | 2025-5-31 23:43 | 只看该作者
可以手动给传感器断电再上电试试,看看是否与复位不同。

使用特权

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

本版积分规则

23

主题

25

帖子

0

粉丝