Wordsworth 发表于 2025-5-9 07:37

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

设备重新上电能用,但代码里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无法正常通信
页: [1]
查看完整版本: 软件复位之后I2C就不工作是为啥?