[STM32G0] 软件复位之后I2C就不工作是为啥?

[复制链接]
775|11
 楼主| Wordsworth 发表于 2025-5-9 07:37 | 显示全部楼层 |阅读模式
设备重新上电能用,但代码里NVIC_SystemReset后I2C就像死了一样,是硬件锁了?
Clyde011 发表于 2025-5-9 07:41 | 显示全部楼层
我以前只能靠硬复位清掉I2C锁死。
周半梅 发表于 2025-5-9 07:42 | 显示全部楼层
复位后有没有重新初始化I2C?
公羊子丹 发表于 2025-5-9 07:43 | 显示全部楼层
会不会是I2C没释放总线?
帛灿灿 发表于 2025-5-9 07:44 | 显示全部楼层
检查一下IO口是不是被锁了?
童雨竹 发表于 2025-5-9 07:44 | 显示全部楼层
是不是没加延时I2C刚上电还没准备好?
万图 发表于 2025-5-9 07:45 | 显示全部楼层
I2C状态寄存器你清了没?
 楼主| Wordsworth 发表于 2025-5-9 07:46 | 显示全部楼层
你加了跳转Bootloader那种代码没?
Bblythe 发表于 2025-5-9 07:47 | 显示全部楼层
NVIC_SystemReset有时候不清外设状态要注意。
Pulitzer 发表于 2025-5-9 07:48 | 显示全部楼层
你用LL还是HAL?试过互换吗?
Uriah 发表于 2025-5-9 07:49 | 显示全部楼层
是不是总线拉低了卡住了START?
温室雏菊 发表于 2025-6-14 08:39 | 显示全部楼层
在STM32G0中,软件复位后I2C不工作通常与硬件初始化、时钟配置、引脚状态或软件逻辑相关
西洲 发表于 2025-6-14 09:30 | 显示全部楼层
初始化代码未执行,复位后程序可能未执行到I2C初始化代码(如复位后直接进入主循环,未重新初始化外设)
将爱藏于深海 发表于 2025-6-14 10:00 | 显示全部楼层
复位后状态丢失,软件复位会重置所有外设寄存器,包括I2C的配置寄存器。若复位后未重新初始化I2C,其将处于默认状态(如禁用模式),导致无法工作
春日负喧 发表于 2025-6-14 11:00 | 显示全部楼层
在复位处理函数或主程序初始化部分,重新配置I2C外设(如波特率、模式、地址等)。在复位后调用I2C_Init()函数,确保I2C被重新配置
失物招領 发表于 2025-6-14 12:00 | 显示全部楼层
时钟未重新配置,软件复位后,I2C的时钟可能被禁用(如RCC寄存器被重置),导致I2C无法工作
白马过平川 发表于 2025-6-14 13:00 | 显示全部楼层
时钟配置错误,复位后未正确配置I2C时钟源或分频器,导致时钟频率不正确
风凉 发表于 2025-6-14 16:00 | 显示全部楼层
在复位处理函数或初始化代码中,重新使能I2C时钟
故意相遇 发表于 2025-6-14 18:00 | 显示全部楼层
检查时钟配置,确保I2C时钟源(如APB1)和分频器配置正确,满足I2C工作频率要求(通常为100kHz或400kHz)
她已醉 发表于 2025-6-14 20:00 | 显示全部楼层
引脚模式未重置,软件复位后,GPIO引脚可能被重置为默认模式(如输入模式),导致I2C无法正常通信
您需要登录后才可以回帖 登录 | 注册

本版积分规则

169

主题

6207

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部