[请教]GD32F130G8U6有时无法进入standby模式

[复制链接]
1088|9
手机看帖
扫描二维码
随时随地手机跟帖
aozima|  楼主 | 2017-8-23 20:13 | 显示全部楼层 |阅读模式
本帖最后由 aozima 于 2017-8-23 20:15 编辑

芯片是 GD32F130G8U6 ,使用电池供电,需要低功耗待机。

通过如下步骤进入  standby :https://bbs.21ic.com/icview-1706014-1-1.html
3. 使能 SCB->SCR 的 SLEEPDEEP 位
5. 使能 PWR 的时钟
5. 使能 PWR->CTLR的SDBM位
6. 通过向 PWR->CTLR的SBFR写1,来清除 PWR->STR的WUF位
7.使能 PWR->STR 的 WUPE1 位
8. WFI
9.  printf("没能成功进入standby")
10 跳转到程序开头,重新进入



长时间拷机测试,
正常现象是执行WFI 后,芯片就进入standby了,然后按PA0能唤醒。

但有极小的概率(几天甚至一周才能复现1次),
会执行到步骤  9,10,如此循环几十次,然后不再打印出东西了。
此后也无法拉高PA0来唤醒,只能拉低RESET引脚才能重启。

angerbird| | 2017-8-23 23:11 | 显示全部楼层
这是怎么回事,,我先研究下的

使用特权

评论回复
angerbird| | 2017-8-23 23:32 | 显示全部楼层
这个是硬件上影响了?

使用特权

评论回复
aozima|  楼主 | 2017-8-24 09:06 | 显示全部楼层
angerbird 发表于 2017-8-23 23:32
这个是硬件上影响了?

怀疑有这个可能。

GD32工作在3V,另外一个模块通过工作在3.3V,通过UART连接(UART使用PA2 PA3,非FT引脚)。
RXD引脚用了电阻分压,但TX引脚没有。
在另一个模块开关机时,有极小的概率,会有3.3V通过TX引脚倒灌进来。
此时GD32的VCC有时会被拉到3.3V去,

但我专门用串了电阻,一直向TX漏电,测试多次,并没有引起这个问题。
暂时也不能确认发生问题时,刚好发生了倒灌。

新版硬件,TX脚也有了分压,这样即使3.3V这边不正常,也不会发生倒灌现象。
同时继续在老版硬件上拷机测试。

使用特权

评论回复
aozima|  楼主 | 2017-8-24 09:12 | 显示全部楼层
鉴于出现问题后,可以按RESET重启。

所以打算在原来基础上,当出现问题后,启动并饿死狗,以实现按RESET的效果。
同时记录日志,看是否有用。

1. 芯片启动什么也不做
2. 所有IO配置为下拉输入(浮空输入也测试过,结果一样)
3. 使能 SCB->SCR 的 SLEEPDEEP 位
5. 使能 PWR 的时钟
5. 使能 PWR->CTLR的SDBM位
6. 通过向 PWR->CTLR的SBFR写1,来清除 PWR->STR的WUF位
7.使能 PWR->STR 的 WUPE1 位
8. WFI
9. 打印出错日志,同时启动看门狗,并死等狗被饿死,以实现硬重启的目的。

正常情况下是不会执行到步骤9的,
如果执行到步骤9,但被看门狗给复位成功,也算是变通的解决了问题。

同时进一步对比新硬件,争取找到问题根源吧。

使用特权

评论回复
aozima|  楼主 | 2017-8-24 13:11 | 显示全部楼层
添加上面的看门狗后,当发生无法进入 standby 时,就放狗咬,现成成功复现了问题。
然后看门狗让MCU重启,根据启动原因,悄悄睡下去,算是变通的解决了这个问题。

使用特权

评论回复
戈卫东| | 2017-8-25 10:16 | 显示全部楼层
围观。

使用特权

评论回复
baimiaocun2015| | 2017-8-25 22:25 | 显示全部楼层
硬件上不会有啥影响的,,还是多检查下软件设计的流程的

使用特权

评论回复
baimiaocun2015| | 2017-8-25 22:27 | 显示全部楼层
这里面关键的是各相关寄存器的设置的。

使用特权

评论回复
aozima|  楼主 | 2017-8-26 13:52 | 显示全部楼层
翻了楼上的发言,好像都是类似的风格。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:RTOS RT-Thread

55

主题

2008

帖子

23

粉丝