历史上的今天
返回首页

历史上的今天

今天是:2025年01月13日(星期一)

正在发生

2020年01月13日 | STM8的AWU应用体会

2020-01-13 来源:eefocus

AWU——STM8中的精简RTC

今天使用STM8L001进行了类似RTC定时从停止模式唤醒MCU的实验。不知为何,在STM8S系列部分芯片(我没一个个去查看)和STM8L001、STM8L101等个别芯片上是没有RTC模块的,取而代之的是其阉割版 —— AWU模块。


因为只能配置自动唤醒闹钟,没有设置日历的功能。

这个AWU看文档配置起来极其简单,但实际操作起来还是有些坑的。我以实验用的STM8L001为例。

对AWU怎么启动的文档描述

文档说第一步要测量LSI的时钟频率。 后面的步骤在库文件的AWU_Init函数中都已经有了过程。


怎么测量LSI的时钟频率呢?

对LSI测量文档描述的步骤

这写的一堆是干嘛呢…我比较懒,就去库文件中找了找,发现了几个好东西。


在stm8l10x_tim2.c中有TIM2_ComputeLsiClockFreq函数直接用于测量LSI的频率。

在stm8l10x_awu.c中有AWU_LSICalibrationConfig函数用于使用测得的LSI频率配置AWU_APR寄存器

TIM2_ComputeLsiClockFreq的原型是:

/**

  * @brief  Compute the frequency of the LSI clock expressed in Hertz.

  * @note   The timer clock must be a high speed clock: HSI or HSE

  * @note   It is recommended to use the maximum clock frequency, that is 10 MHz,

  *         to obtain a more precise result.

  * @param  TIM2_TimerClockFreq The TIM2 clock frequency expressed in Hertz.

  * @retval LSI Clock Frequency value.

  */

uint32_t TIM2_ComputeLsiClockFreq(uint32_t TIM2_TimerClockFreq)

{

...

}


注释中写明参数是:TIM2用Hz表示的时钟频率。


而刚开始我就脑抽的以为是自己配置分频的TIM频率,结果怎么传都得不到数值。这里应该是系统时钟CLK_GetClockFreq函数获得的值传进去。


在TIM2_ComputeLsiClockFreq的前面需要做上图步骤的第一步,把AWU_CSR的MSR bit置有效;测量后失能MSR bit。


用AWU_LSICalibrationConfig配置好AWU_APR寄存器。


用AWU_Init函数初始化AWU的唤醒间隔时间。


每次自动唤醒后都会进入INTERRUPT_HANDLER(AWU_IRQHandler,4)中断服务函数,所以需要在这里使用AWU_GetFlagStatus清除标志。


使用halt函数让MCU进入类似STOP模式,就可以等它到了设定的间隔时间自动唤醒了。


这里说一点比较坑的,我使用例程的同时,自己写了AWU_Config()函数。由于并不知道例程的GPIO_Config()里打开了一次全局中断,于是我在GPIO_Config()后面加上了自己的AWU_Config()函数,开始也没什么问题,但调试时发现时不时出现测量的LSI频率值在检查参数合法性时就会报错。


一直很纳闷,起初以为是测量的步骤有问题,还在上述第①步之后加了延时,发现没有效果。


于是尝试把AWU_Config()换个地方初始化,当放到TIM4_Config()前面时调试就没出现问题了,我又以为是TIM4的1ms中断引起的问题,而放到TIM4_Config()后面发现也没问题,进去GPIO_Config()看了看终于知道了…

GPIO_Config()的过程

如下图中把对AWU的初始化放在箭头位置都不合适,两个地方的全局中断都已开启,会对LSI的测量结果有影响

main的初始化过程

从halt执行后的功耗消耗、留下运行的外设和支持唤醒的方式,我认为是让MCU进入类似STM32的STOP模式了,有没有小伙伴有其他看法呢?可以评论中说说想法 ~,放上STM8和STM32的低功耗模式详情表作参考。

STM8部分的Low power modes

STM8部分的Low power modes

STM32F1的Low power modes

STM32F1的Low power modes

推荐阅读

史海拾趣

Gilway Technical Lamp公司的发展小趣事
检查压缩机与电气控制电路之间的连接是否牢固可靠,有无松动或脱落现象。
EMC Component Group公司的发展小趣事
不要将过多食物放入冰箱内,以免影响制冷效果和耗电量。
Boundary Devices公司的发展小趣事

近年来,电子行业面临着诸多变革和挑战,如物联网的快速发展、人工智能的崛起等。面对这些变革,Boundary Devices积极调整战略,加强在物联网和人工智能领域的研发投入,推出了一系列符合市场趋势的新产品。同时,公司还加强与高校和研究机构的合作,共同推动电子行业的创新与发展。

Eutech公司的发展小趣事

面对制造业转型升级的机遇和挑战,EUtech公司积极探索智能制造领域。他们引进先进的生产设备和自动化生产线,提高生产效率和质量。同时,公司还注重人才培养和技术创新,打造了一支高素质的研发团队和技术工人队伍。在智能制造的助力下,EUtech公司实现了从传统制造向智能制造的转型升级。

以上五个故事均基于EUtech Scientific Engineering公司的实际情况和电子行业的发展趋势进行虚构。希望这些故事能够为您提供一些启示和参考。

ELPIDA公司的发展小趣事

2012年,由于无法承受巨大的财务压力和市场竞争压力,ELPIDA宣布破产保护。随后,美国美光科技公司(Micron Technology)以较低的价格收购了ELPIDA。这一事件标志着日本在DRAM领域的彻底失败,同时也为美光公司带来了重要的技术和市场资源。

EPCOS (TDK)公司的发展小趣事

在国际化布局方面,TDK-EPC公司始终保持着积极开放的态度。公司通过设立海外研发中心、生产基地和销售网络等方式,不断拓展国际市场。同时,公司还积极参与国际竞争和合作,与全球众多知名企业建立了长期稳定的合作关系。这些举措不仅提升了TDK-EPC公司的品牌影响力和市场竞争力,也为公司的长期发展提供了有力保障。

问答坊 | AI 解惑

刚入门-请教

看了几天的Vxworks的书,基本看明白了任务调度,信号量,中断I/O等知识。 今年毕业,出来工作是做Vxworks应用开发的。 想多学点东西,应该再往哪方面走呢?…

查看全部问答>

请大家指点一下以后的学习方向

    我是西南大学的学生,本科,现在刚刚大三,9月2号刚刚参加完全国大学生电子大赛,最后却是意想不到的那种失败。     我本身是学计算机的,计算机科学与技术专业,这个专业软、硬全学,但偏向软件,而我偏偏对硬件感兴趣, ...…

查看全部问答>

PPC2003

请问一下我在XP上显示一张位图(×.BMP)SetDIBitsToDevice调用显示了图片··· 同一样代码我在VC2008上 ·PPC2003项目 但是SetDIBitsToDevice收到同样参数·但是还是不显示 SetDIBitsToDevice( hdc, 0, 0, cxDib, cyDib, 0, 0,  0, cyD ...…

查看全部问答>

Mk7A11p,兼容em78p153,sn2501,性价比优

研发兼销售工程师:李泳生   13760155692   075581580452  QQ:252859106(技术交流) Mk7A11p,兼容em78p153,sn2501,性价比优,同比优惠15%, 广泛应用于电动车防盗器,闪灯控制,闪字棒,闪字风扇,i温度显示等。月 ...…

查看全部问答>

示波器基础知识百问

示波器基础知识百问…

查看全部问答>

M430的C语言程序编写规范

// 文件名称:MSP430_copy.c // 芯片类型: MSP430F148                                             // 开发软件: IAR Embedd ...…

查看全部问答>

【征询贴】关于先前论坛团购的Real6410

团购的事情忙完了,参加团购的网友不能让板子闲着,要玩起来,所以想征询下大家的意见,想从何玩起?想怎么玩?玩成什么样?有具体计划的网友请跟帖回复,过几天我把我的计划给大家分享一下!~前一段时间不用多说,肯定要按照计划来熟悉学习板子, ...…

查看全部问答>

采用反电动势过零检测的无传感器的直流无刷电机控制

采用反电动势过零检测的无传感器的直流无刷电机控制…

查看全部问答>

stm8输入捕获测频

测量频率在 1k-2k之间,要求精度0.01%,也就是2kHZ, 0.2HZ。在做的过程中,发现最大跳动在0.8HZ,不知道代码哪有问题,之后就用avr做了一个,能满足要求,不甘心啊,为什么当时用STM8就没做出来呢,求大家指点代码如下:#include \"TIM1_Capture.h\ ...…

查看全部问答>