打印
[软件资料]

cw32L010 RTC唤醒问题

[复制链接]
405|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fox1|  楼主 | 2024-12-27 12:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#21ic问答#
想问下CW32L010 RTC唤醒问题,做心跳设计,心跳间隔在4~5分钟这样子,研究了下010的RTC,LSI 是32.8khz,AWTPR预分频16,AAR计算下来最长也就20s,那个日历唤醒写死了只有单位1的,只能自己算时间闹钟唤醒吗?会不会比较耗电?

使用特权

评论回复
沙发
fox1|  楼主 | 2024-12-27 12:48 | 只看该作者
以及有没有010的时间戳唤醒的example?

使用特权

评论回复
板凳
pssyx| | 2024-12-27 16:53 | 只看该作者
CW32L010的RTC自动唤醒功能,就能实现长时间的间隔唤醒。
1、以PSC1 默认值为 0,PSC2 默认值为 0x3FFF,fTICKCLK = 2 Hz。
2、RTC_CR2.AWTSRC = 1, 选择唤醒定时器计数时钟来源为TICKCLK。
3、RTC_CR2.AWTPRS = 3, 唤醒定时器计数时钟预分频DIV16:2/16=1/8Hz。
4、RTC_AWTARR = 39,则自动唤醒定时器定时周期 =(RTC_AWTARR+1)/ (1/8)=320s。

使用特权

评论回复
地板
fox1|  楼主 | 2024-12-27 17:04 | 只看该作者
pssyx 发表于 2024-12-27 16:53
CW32L010的RTC自动唤醒功能,就能实现长时间的间隔唤醒。
1、以PSC1 默认值为 0,PSC2 默认值为 0x3FFF,fT ...

感谢版主,原来是我没看懂手册,我去试试

使用特权

评论回复
5
fox1|  楼主 | 2024-12-30 19:56 | 只看该作者
pssyx 发表于 2024-12-27 16:53
CW32L010的RTC自动唤醒功能,就能实现长时间的间隔唤醒。
1、以PSC1 默认值为 0,PSC2 默认值为 0x3FFF,fT ...

版主,需要配置中断吗,按照你的代码,加上配置中断,程序就会卡主在这个RTC_ITConfig这里
    RTC_Cmd(DISABLE); //  停止RTC,保证正确访问RTC寄存器
    CW_RTC->CR2_f.AWTEN = 1;
    CW_RTC->CR2_f.AWTSRC = 1; // 配置TICKCLK时钟源
    CW_RTC->CR2_f.AWTPRS = 3; // DIV分频16
    CW_RTC->AWTARR_f.ARR = 9; // 90s
    RTC_ClearITPendingBit(RTC_IT_ALL);
    RTC_ITConfig(RTC_IT_AWTIMER, ENABLE);
    NVIC_EnableIRQ(RTC_IRQn);
    RTC_Cmd(ENABLE);

使用特权

评论回复
6
fox1|  楼主 | 2024-12-30 20:11 | 只看该作者
fox1 发表于 2024-12-30 19:56
版主,需要配置中断吗,按照你的代码,加上配置中断,程序就会卡主在这个RTC_ITConfig这里
    RTC_Cmd(D ...

版主,我把ITCONFIG改成                        CW_RTC->IER_f.AWTIMER = 1; 代码不卡了,但是只开了GPIOA GPIOB RTC,而且GPIO未使用的引脚改成了高阻态,睡眠电流200ua,,请问你能帮我测试下我的代码吗?

使用特权

评论回复
7
fox1|  楼主 | 2024-12-30 20:19 | 只看该作者
fox1 发表于 2024-12-27 17:04
感谢版主,原来是我没看懂手册,我去试试

解决了版主,有个口漏电流,现在1ua了非常感谢

使用特权

评论回复
8
RTC自动唤醒功能,就能实现长时间的间隔唤醒。

使用特权

评论回复
9
Augenstern星星| | 2025-1-17 14:50 | 只看该作者
请问,一个口漏电流这个是怎么检测到的?或者后续是怎么解决的呀?

使用特权

评论回复
10
limerenceforu| | 2025-1-17 15:22 | 只看该作者
CW32L010的RTC模块确实有一些限制,特别是AWTPR预分频和AAR寄存器的设置

使用特权

评论回复
11
Belle1257| | 2025-1-17 18:08 | 只看该作者
由于RTC的日历唤醒功能只能设置单位1的唤醒时间,你可以通过多次唤醒来实现这个功能

使用特权

评论回复
12
B1lanche| | 2025-1-17 19:15 | 只看该作者
一般来说,你可以设置RTC在20秒后唤醒,然后在唤醒后再次设置RTC唤醒时间为20秒,重复多次直到达到4~5分钟的总时间。

使用特权

评论回复
13
alkaidnext| | 2025-1-17 21:25 | 只看该作者
在每次RTC唤醒后,使用一个软件计数器来记录唤醒次数,当计数器达到预设值(例如12次,对应4分钟)时,执行心跳任务

使用特权

评论回复
14
Freeandeasy| | 2025-1-17 22:35 | 只看该作者
使用多次唤醒和软件计数器的方式会增加一些功耗,因为每次唤醒都会导致MCU从低功耗模式中退出,执行一些代码后再进入低功耗模式。不过,这种方式的功耗增加通常是可控的,具体取决于唤醒频率和唤醒后的处理时间。

使用特权

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

本版积分规则

8

主题

32

帖子

0

粉丝