找回密码
 立即注册
查看: 270|回复: 27

进入掉电模式用串口唤醒为什么要发两次串口数据

[复制链接]
已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
发表于 2026-10-27 19:33:09 | 显示全部楼层 |阅读模式
进入掉电模式用串口唤醒为什么要发两次串口数据,是我设置的不对还是有什么办法解决
回复

使用道具 举报 送花

已绑定手机

2

主题

154

回帖

470

积分

中级会员

积分
470
发表于 2026-10-27 21:20:24 | 显示全部楼层
你是怎么知道是要发两次才唤醒
是指发了两字节,才收到一字节吗?
高波特下,唤醒后第一字节容易丢。
因为刚唤醒时,波特率的定时器时钟不稳,时钟边沿没对齐上。
回复

使用道具 举报 送花

83

主题

8317

回帖

1万

积分

超级版主

积分
17932
发表于 2026-10-27 22:28:44 | 显示全部楼层
只需要一个起始位就能唤醒,但是唤醒后需要大约100us时钟才能稳定并启动PC运行,所以从唤醒到接收会延时几十一百us,如果波特率大于2400,通常会延后接收1个bit或超过1个bit,导致收到数据不正确,不是没唤醒。
回复

使用道具 举报 送花

已绑定手机

24

主题

701

回帖

2731

积分

金牌会员

积分
2731
发表于 2026-10-28 08:30:15 | 显示全部楼层
唤醒需要时间,且时间一般比较固定,波特率高了自然丢失数据
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
 楼主| 发表于 2026-10-28 08:44:08 | 显示全部楼层
jrc*** 发表于 2026-10-27 21:20
你是怎么知道是要发两次才唤醒
是指发了两字节,才收到一字节吗?
高波特下,唤醒后第一字节容易丢。

截图202610280839395971.jpg

掉电之后用串口唤醒,串口9600,我依旧用发送两个字节,间隔5毫秒,唤醒后并延时100毫秒,到上面的复位函数,这个函数复位前需要发送复位信息给串口,我的上位机始终接收不到复位指令
也就是唤醒后后面的代码都运行不正常
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
 楼主| 发表于 2026-10-28 08:44:44 | 显示全部楼层
Ayb_*** 发表于 2026-10-28 08:30
唤醒需要时间,且时间一般比较固定,波特率高了自然丢失数据
截图202610280845588346.jpg

掉电之后用串口唤醒,串口9600,我依旧用发送两个字节,间隔5毫秒,唤醒后并延时100毫秒,到上面的复位函数,这个函数复位前需要发送复位信息给串口,我的上位机始终接收不到复位指令
也就是唤醒后后面的代码都运行不正常

回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
 楼主| 发表于 2026-10-28 08:45:27 | 显示全部楼层
梁*** 发表于 2026-10-27 22:28
只需要一个起始位就能唤醒,但是唤醒后需要大约100us时钟才能稳定并启动PC运行,所以从唤醒到接收会延时几 ...



截图202610280845455416.jpg
掉电之后用串口唤醒,串口9600,我依旧用发送两个字节,间隔5毫秒,唤醒后并延时100毫秒,到上面的复位函数,这个函数复位前需要发送复位信息给串口,我的上位机始终接收不到复位指令
也就是唤醒后后面的代码都运行不正常

点评

应该是程序逻辑有问题,STC的睡眠,只是关停时钟,并不会改变别的程序,MCU因为没有时钟驱动而停止执行程序,唤醒就是恢复时钟,程序继续执行。 所以,请仔细检查程序,睡眠唤醒的程序是经常使用的,没遇到有问题的  详情 回复 发表于 2026-10-28 09:32
回复

使用道具 举报 送花

83

主题

8317

回帖

1万

积分

超级版主

积分
17932
发表于 2026-10-28 09:32:33 | 显示全部楼层
QQ6243*** 发表于 2026-10-28 08:45
掉电之后用串口唤醒,串口9600,我依旧用发送两个字节,间隔5毫秒,唤醒后并延时100毫秒,到上面的复位 ...

应该是程序逻辑有问题,STC的睡眠,只是关停时钟,并不会改变别的程序,MCU因为没有时钟驱动而停止执行程序,唤醒就是恢复时钟,程序继续执行。
所以,请仔细检查程序,睡眠唤醒的程序是经常使用的,没遇到有问题的。
回复

使用道具 举报 送花

已绑定手机

24

主题

701

回帖

2731

积分

金牌会员

积分
2731
发表于 2026-10-28 09:42:12 | 显示全部楼层
QQ6243*** 发表于 2026-10-28 08:45
掉电之后用串口唤醒,串口9600,我依旧用发送两个字节,间隔5毫秒,唤醒后并延时100毫秒,到上面的复位 ...

手册有例程吧,建议参考一下
回复

使用道具 举报 送花

已绑定手机

2

主题

154

回帖

470

积分

中级会员

积分
470
发表于 2026-10-28 10:50:27 | 显示全部楼层
“掉电之后用串口唤醒,串口9600,我依旧用发送两个字节,间隔5毫秒”
唤醒后,这一句“while(i)i--;//延时100毫秒”
而你发送间隔是5毫秒,
是不是这个原因:第一次发送,其实已经唤醒了,只是在等100毫秒,
之后过5毫秒你再发送,误以为是要两次?
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-8 02:40 , Processed in 0.073774 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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