找回密码
 立即注册
查看: 770|回复: 13

8H8K64U, P30 P31 休眠设置问题

[复制链接]

2

主题

6

回帖

33

积分

等待验证会员

积分
33
发表于 2024-9-29 13:49:42 | 显示全部楼层 |阅读模式
大家好

p30  p31   与蓝牙通信

p32  下降沿唤醒



        printf("休眠.\r\n");
                          P30=0;P31=0;
                        P32=1;
     IT0 = 0;                                    //使能INT0上升沿和下降沿中断
       //IT0 = 1;                                    //使能INT0下降沿中断
       EX0 = 1;                                    //使能INT0中断
       EA = 1;
                                        //不能配置高阻输入,不能休眠
                        
                                PCON |= 0x02;   //Powerdown
                                _nop_();
                                _nop_();
                                _nop_();
                                _nop_();
                                _nop_();
                                _nop_();
                                _nop_();
  printf("唤醒.\r\n");
                        
          P32=0;




现在能正常休眠  唤醒   但唤醒后不能与蓝牙通信。


不设置P30=0;P31=0;   休眠后耗电较大。怎样设置比较好


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15646
发表于 2024-9-29 13:56:59 | 显示全部楼层
8H8K64U的串口可以 9600以下正常唤醒,数据不丢失
回复 支持 反对

使用道具 举报 送花

2

主题

6

回帖

33

积分

等待验证会员

积分
33
发表于 2024-9-29 14:02:17 | 显示全部楼层
他的蓝牙芯片   耗电大   休眠后用mos管断电了。断正极,负极一直连着。但8h8k64u   p30  p31   开始漏电
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15646
发表于 2024-9-29 14:05:48 | 显示全部楼层
P30可以高阻输入,P31可以开漏
你没原理图的PDF发上来,大家不好帮你分析
回复 支持 反对

使用道具 举报 送花

2

主题

6

回帖

33

积分

等待验证会员

积分
33
发表于 2024-9-29 14:06:28 | 显示全部楼层
漏电400u    设p30=0;  P31=0:   电流极小        就是唤醒后   不能通信
试了唤醒 ((void (code *) (void)) 0x0000) ();   代码    也不能解决

点评

可以尝试更改io模式,都开高阻然后再休眠试试? 然后将通讯的发送部分,修改为发送前将txd改为准双向。  详情 回复 发表于 2024-9-29 14:18
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:460
  • 最近打卡:2025-05-03 07:38:35
已绑定手机
已实名认证

110

主题

2224

回帖

5470

积分

版主

积分
5470
发表于 2024-9-29 14:18:36 | 显示全部楼层
topof*** 发表于 2024-9-29 14:06
漏电400u    设p30=0;  P31=0:   电流极小        就是唤醒后   不能通信
试了唤醒 ((void (code *) (void) ...

可以尝试更改io模式,都开高阻然后再休眠试试?
然后将通讯的发送部分,修改为发送前将txd改为准双向。
回复 支持 反对

使用道具 举报 送花

2

主题

6

回帖

33

积分

等待验证会员

积分
33
发表于 2024-9-29 14:27:21 | 显示全部楼层
很神奇   P3M0 = 0x02; P3M1 = 0x03; 贴进去    休眠  唤醒   通信  都能正常了

电流还有40u

点评

检查外设是不是关的不彻底,比如ADC电源、USB电源、内部32K时钟、比较器 还有其他电路的耗电  详情 回复 发表于 2024-9-29 14:39
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4851

回帖

8390

积分

超级版主

DebugLab

积分
8390
发表于 2024-9-29 14:39:56 | 显示全部楼层
topof*** 发表于 2024-9-29 14:27
很神奇   P3M0 = 0x02; P3M1 = 0x03; 贴进去    休眠  唤醒   通信  都能正常了

电流还有40u ...

检查外设是不是关的不彻底,比如ADC电源、USB电源、内部32K时钟、比较器
还有其他电路的耗电
DebugLab
回复 支持 反对

使用道具 举报 送花

2

主题

6

回帖

33

积分

等待验证会员

积分
33
发表于 2024-9-29 14:44:21 | 显示全部楼层
王*** 发表于 2024-9-29 14:18
可以尝试更改io模式,都开高阻然后再休眠试试?
然后将通讯的发送部分,修改为发送前将txd改为准双向。 ...

刚试了下        printf("休眠.\r\n");
                 
         P3M0 = 0x00; P3M1 = 0x03;  
                        P32=1;
     IT0 = 0;                                    //使能INT0上升沿和下降沿中断
       //IT0 = 1;                                    //使能INT0下降沿中断
       EX0 = 1;                                    //使能INT0中断
       EA = 1;
                         PCON |= 0x02;  

程序中开高阻,单片机不能休眠了
回复 支持 反对

使用道具 举报 送花

2

主题

6

回帖

33

积分

等待验证会员

积分
33
发表于 2024-9-29 14:47:50 | 显示全部楼层
王*** 发表于 2024-9-29 14:18
可以尝试更改io模式,都开高阻然后再休眠试试?
然后将通讯的发送部分,修改为发送前将txd改为准双向。 ...

打印休眠后  直接打印唤醒了

点评

按照stc官方例程中,给休眠部分代码前后都加入4~6个nop指令试试呢? 感觉可能是切换模式引起电平切换,导致掉电被重新唤醒了 [attachimg]58640[/attachimg]  详情 回复 发表于 2024-9-29 14:50
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 17:15 , Processed in 0.196511 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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