找回密码
 立即注册
查看: 90|回复: 14

32G12K128掉电唤醒时间长

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-24 09:32:06

1

主题

7

回帖

51

积分

注册会员

积分
51
发表于 2025-7-23 11:48:10 | 显示全部楼层 |阅读模式
同一个代码,用24年的板子,掉电模式快速按按键能顺利唤醒并检测到按键。但是用25年的板子,进入掉电模式后,快速按按键只能唤醒,却检测不到按键了(必须按下稍作停留才能检测到)。两个板子做单片机的交换实验,结果24年板子上的单片机换到25年板子上后,也能唤醒并检测到按键。而25年板子上的单片机换到24年板子上后,快速按按键只能唤醒,但检测不到按键。

因此,得出结论,25年的单片机唤醒时间较长,导致快速按按键时,单片机等到按键松开后才完全唤醒。有什么办法可以解决这个问题吗?
回复

使用道具 举报 送花

3

主题

247

回帖

-795

积分

等待验证会员

积分
-795
发表于 2025-7-23 11:53:00 | 显示全部楼层
针对STC32G12K128在掉电模式下唤醒时间较长导致按键检测异常的问题,经过测试与分析,确认该现象与单片机的唤醒机制及外部电路设计密切相关。以下为问题原因分析及解决方案建议:

一、问题分析

1. 唤醒时间差异  
   通过对比24年与25年板子的测试结果发现,25年板子上的STC32G12K128在进入掉电模式后,其唤醒时间较24年板子更长。此差异可能源于芯片内部时钟稳定时间、电源管理模块响应速度或外部晶振启动时间的不同。

2. 按键检测逻辑影响  
   在快速按压按键时,若单片机尚未完全唤醒,系统可能无法及时采集到按键状态。特别是在按键释放瞬间,若单片机仍未完成唤醒流程,则可能导致按键事件被遗漏。

3. 硬件电路一致性验证  
   通过交换单片机进行实验,进一步验证了问题根源在于芯片本身而非外围电路。25年板子上的单片机在24年板子上表现正常,而24年板子上的单片机在25年板子上出现异常,说明问题确实存在于25年板子的STC32G12K128芯片中。

二、解决方案建议

1. 优化唤醒配置  
检查并调整掉电模式下的唤醒源配置,确保按键中断能够尽快触发唤醒过程。
使用低功耗模式(如STOP模式)替代掉电模式(Power Down),以缩短唤醒时间。可参考STC官方文档中关于低功耗模式的切换策略。

2. 改善按键检测逻辑  
在唤醒后增加延时处理,确保系统完全启动后再读取按键状态。例如,在唤醒后加入10~20ms的延时,再执行按键检测操作。
使用软件消抖算法,提高按键识别的稳定性。

3. 优化外部电路设计  
确保按键电路中的上拉/下拉电阻阻值合理,避免因信号不稳定导致误判。
若使用外部中断方式检测按键,应确保引脚配置正确,并启用相应的中断使能位。

4. 升级固件版本  
检查当前使用的固件是否为最新版本,部分旧版本可能存在唤醒机制或中断响应方面的缺陷。
如有可用的固件更新,建议升级至最新版本以优化性能。

5. 考虑更换芯片批次  
若问题持续存在且影响产品稳定性,建议对25年批次的STC32G12K128进行替换,选择已验证性能稳定的批次。

三、结论

综上所述,25年板子上STC32G12K128的唤醒时间较长是导致快速按键检测失败的主要原因。建议从唤醒配置、按键检测逻辑、外部电路设计及固件优化等方面入手,逐步排查并解决问题。如问题仍无法解决,可进一步联系STC技术支持获取芯片级诊断与修复方案。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-07-31 08:58:47
已绑定手机

87

主题

5532

回帖

1万

积分

超级版主

DebugLab

积分
10123
发表于 2025-7-23 12:46:52 | 显示全部楼层
初始化时正确设置IAP_TPS并设置IRCDB=16试一下

点评

30MHz, 帮实际测试个 波形发上来  详情 回复 发表于 2025-7-23 15:31
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-24 09:32:06

1

主题

7

回帖

51

积分

注册会员

积分
51
发表于 2025-7-23 13:22:34 | 显示全部楼层
如图添加了,
在任务中printf("IRCDB:%d\r\n",IRCDB);
打印结果也是正确的16,但是快速按按键仍然检测不到按键
1.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-24 09:32:06

1

主题

7

回帖

51

积分

注册会员

积分
51
发表于 2025-7-23 13:37:44 | 显示全部楼层
Debu*** 发表于 2025-7-23 12:46
初始化时正确设置IAP_TPS并设置IRCDB=16试一下

如图添加了,
在任务中printf("IRCDB:%d\r\n",IRCDB);
打印结果也是正确的16,但是快速按按键仍然检测不到按键
1.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:144
  • 最近打卡:2025-07-31 10:37:58

760

主题

1万

回帖

1万

积分

管理员

积分
18139
发表于 2025-7-23 15:31:18 | 显示全部楼层
Debu*** 发表于 2025-7-23 12:46
初始化时正确设置IAP_TPS并设置IRCDB=16试一下

30MHz, 帮实际测试个 波形发上来

点评

按下按键到执行下一条指令28.417us [attachimg]109588[/attachimg]  详情 回复 发表于 2025-7-23 16:41
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-07-31 08:58:47
已绑定手机

87

主题

5532

回帖

1万

积分

超级版主

DebugLab

积分
10123
发表于 2025-7-23 16:41:39 | 显示全部楼层
神*** 发表于 2025-7-23 15:31
30MHz, 帮实际测试个 波形发上来

按下按键到执行下一条指令28.417us

截图202507231641177808.jpg

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-24 09:32:06

1

主题

7

回帖

51

积分

注册会员

积分
51
发表于 2025-7-23 17:28:48 | 显示全部楼层
Debu*** 发表于 2025-7-23 16:41
按下按键到执行下一条指令28.417us

你这里测量的是什么?按键的电平,再加上唤醒那里翻转一个GPIO,看这两个电平的时间间隔?

点评

是的  详情 回复 发表于 2025-7-23 18:02
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-07-31 08:58:47
已绑定手机

87

主题

5532

回帖

1万

积分

超级版主

DebugLab

积分
10123
发表于 2025-7-23 18:02:19 | 显示全部楼层
许*** 发表于 2025-7-23 17:28
你这里测量的是什么?按键的电平,再加上唤醒那里翻转一个GPIO,看这两个电平的时间间隔? ...

是的
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-24 09:32:06

1

主题

7

回帖

51

积分

注册会员

积分
51
发表于 2025-7-24 09:32:06 | 显示全部楼层

试了一下,唤醒是35us。我在初始化代码那边加了串口打印,发现是唤醒之后复位了。

点评

省电模式之前先降频到24M,唤醒后再恢复试一下  详情 回复 发表于 2025-7-24 09:33
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-1 01:53 , Processed in 0.153924 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表