找回密码
 立即注册
楼主: QQ624353765

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

[复制链接]
已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
 楼主| 发表于 2026-10-28 11:53:38 | 显示全部楼层
jrc*** 发表于 2026-10-28 10:50
“掉电之后用串口唤醒,串口9600,我依旧用发送两个字节,间隔5毫秒”
唤醒后,这一句“while(i)i--;//延时 ...

都测过了,发一个字节不会返回复位信号,在下发一条指令没反应,要发第二次才有反应
所以索性发送两个字节,发送两个字节依旧收不到复位信号
但一次发送两个字节后串口通讯是正常的
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
 楼主| 发表于 2026-10-28 12:15:46 | 显示全部楼层
梁*** 发表于 2026-10-28 09:32
应该是程序逻辑有问题,STC的睡眠,只是关停时钟,并不会改变别的程序,MCU因为没有时钟驱动而停止执行程 ...

截图202610281213487624.jpg




按一下发送命令向串口发送一字节数据,连续按了三下才回0x12
只要唤醒一次,下次再唤醒只需要发送一次就行了


回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
 楼主| 发表于 2026-10-28 12:24:44 | 显示全部楼层
梁*** 发表于 2026-10-28 09:32
应该是程序逻辑有问题,STC的睡眠,只是关停时钟,并不会改变别的程序,MCU因为没有时钟驱动而停止执行程 ...

FOC.zip (775.59 KB, 下载次数: 8)

直接拿我的代码去跑,XiuMian.c--DiaoDian()这个函数放到主函数寄存器初始化最下面,第一次唤醒最起码串口要发送两个字节

点评

PD=1;//掉电模式 NOP(5); //至少5个NOP SBUF=0x12;  详情 回复 发表于 2026-10-28 13:58
回复

使用道具 举报 送花

已绑定手机

2

主题

154

回帖

470

积分

中级会员

积分
470
发表于 2026-10-28 13:36:28 | 显示全部楼层
        PD=1;//掉电模式
        SBUF=0x12;
刚唤醒,立刻发送串口不行,时钟还没稳定。

回复

使用道具 举报 送花

83

主题

8317

回帖

1万

积分

超级版主

积分
17932
发表于 2026-10-28 13:58:16 | 显示全部楼层
QQ6243*** 发表于 2026-10-28 12:24
直接拿我的代码去跑,XiuMian.c--DiaoDian()这个函数放到主函数寄存器初始化最下面,第一次唤醒最起码 ...

PD=1;//掉电模式
NOP(5);   //至少5个NOP
SBUF=0x12;
回复

使用道具 举报 送花

已绑定手机

2

主题

154

回帖

470

积分

中级会员

积分
470
发表于 2026-10-28 14:19:52 | 显示全部楼层
串口好像收发逻辑也有问题。如下图。

进这个函数的UART1()时有可能是发送中断,然后启动DMA接收, “UR1R_DATA[0]=SBUF”可能是旧值,可能导致JieShouZiChang越界,并且DMA可能也乱;TI也没清,

截图202610281359106855.jpg

回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
 楼主| 发表于 2026-10-28 15:36:56 | 显示全部楼层
jrc*** 发表于 2026-10-28 14:19
串口好像收发逻辑也有问题。如下图。

进这个函数的UART1()时有可能是发送中断,然后启动DMA接收, “UR1R_ ...

注意我问的问题是串口唤醒,跟这个代码无关
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
 楼主| 发表于 2026-10-28 15:45:00 | 显示全部楼层
梁*** 发表于 2026-10-28 13:58
PD=1;//掉电模式
NOP(5);   //至少5个NOP
SBUF=0x12;

截图202610281543453083.jpg

没用,依旧要用发送两字节才能唤醒

会不会跟串口IO模式是开漏,我试了下双向口也这样

点评

检测MCU电流,只一个字节,看电流是否增大,增大就是醒过来了。 MCU内部的硬件检测下降沿,一旦出现下降沿,一定会唤醒的。  详情 回复 发表于 2026-10-28 15:49
回复

使用道具 举报 送花

83

主题

8317

回帖

1万

积分

超级版主

积分
17932
发表于 2026-10-28 15:49:14 | 显示全部楼层
QQ6243*** 发表于 2026-10-28 15:45
没用,依旧要用发送两字节才能唤醒

检测MCU电流,只一个字节,看电流是否增大,增大就是醒过来了。
MCU内部的硬件检测下降沿,一旦出现下降沿,一定会唤醒的。
回复

使用道具 举报 送花

已绑定手机

2

主题

154

回帖

470

积分

中级会员

积分
470
发表于 2026-10-28 16:24:05 | 显示全部楼层
根据12楼的视频图,你判断唤醒的方式是,看上位机是否收到0x12;
同时视频中有出现 在收到0x12后输出"验证码错误“
由此猜测,是不是上拉机有在等接收足够的字节行为?
超时后,最后按一个包处理,发现crc错误。

你可以改一下代码,唤醒后,如果有条件亮个灯试试、或振一下电机也行,等可以从板上观察的方式。
回复

使用道具 举报 送花

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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