基于STM8S的Atomthreads低功耗的深度思考

发布者:炫酷骑士最新更新时间:2016-09-19 来源: eefocus关键字:STM8S  Atomthreads  低功耗 手机看文章 扫描二维码
随时随地手机看文章
Atomthreads像众多操作系统一样,在没有任务调度是会调用idle。(by cpuwolf)

static void atomIdleThread (uint32_t param) 

    /* Compiler warning  */ 
    param = param; 
 
    /* Loop forever */ 
    while (1) 
    { 
        /** \todo Provide user idle hooks*/ 
    } 
}

atomthreads中atomIdleThread()是以线程的形式存在,也就是最低优先级线程。作者默认没有填写这个函数。

uint8_t atomOSInit (void *idle_thread_stack_top, uint32_t idle_thread_stack_size) 

    uint8_t status; 
 
    /* Initialise data */ 
    curr_tcb = NULL; 
    tcbReadyQ = NULL; 
    atomOSStarted = FALSE; 
 
    /* Create the idle thread */ 
    status = atomThreadCreate(&idle_tcb, 
                 IDLE_THREAD_PRIORITY, 
                 atomIdleThread, 
                 0, 
                 idle_thread_stack_top, 
                 idle_thread_stack_size); 
 
    /* Return status */ 
    return (status); 
 
}

针对STM8我们最自然想到的是在其中加一个wfi,STM8进入wfi模式几乎不会影响任何外设的运行。以STM8S105K4为例,其进入该模式的典型电流是1.8mA。这个电流,用一节2000mA手机供电,理论上也最多能坚持46天,才一个月多点。这个记录太差了。
STM8还有一个HALT模式,这是该芯片的最低功耗模式,电流是uA级别。但是该模式有诸多限制,进入该模式系统几乎所有的clock都停止,你的timer,adc,uart等等全部停止,除了AWU。

STM8S

atomthreads如果你在idle直接进入HALT,因为基本只有外部中断可以唤醒退出这个模式,当系统醒来了,请你想想,你的系统心跳还准么?你的应用线程如果使用了定时器,本来希望1秒钟后调用某个CALLBACK,结果HALT睡了5分钟,那还是定时器API本身参数的意义么?

datasheet熟悉的读者可能,可能立刻想到了AWU,似乎可以解决这个问题。在idle进入HALT前,把还能睡的时间填入AWU,这样系统就可以在制定的时间被唤醒。粗略的一看,还以为问题解决了。

暂时不谈AWU的时间不是任意值都可以接受的,是一个非常不准确的唤醒时钟。

举个其他例子,如果idle进入HALT前,系统还可以睡20分钟,我觉的一个设计优良的低功耗系统,应用层让系统有睡20分钟的可能性是很起码的。不幸的是,在5分钟的时候,一个外部中断进来了,系统很自然退出HALT。我想问你,从系统的角度看,系统之前睡了多久。不要告诉玩我是5分钟,大哥,那是我假设的,我问得是,从系统的角度。睡了多久?AWU这个唯一在运行的模块,上面是没有时间让你读的,你完全无法得知刚才睡了多久。

其实上面的这个理念不是我创造的,在linux中早就有了,它叫variable tick timer,什么意思?通常我们的心跳时钟,是有规律的触发中断,比如10ms一次,这导致系统最多能安静10ms,想多睡会儿?没门!10ms后中断就来了。这种设计对低功耗是不利的。后来就有大牛,引入了variable tick timer,这里tick timer就是我们上面一直说的心跳时钟。variable就是可变的罗!表面意思就是我们的心脏可以走走停停,这样想已经不符合人类的自然规律,所以也确实不能再叫heart beattimer。当系统醒的时候,是有规律的跳动,当系统睡眠的时候, timer就停跳。其实就是上面想实现的东西。

关键字:STM8S  Atomthreads  低功耗 引用地址:基于STM8S的Atomthreads低功耗的深度思考

上一篇:单片机C语言移位的实现
下一篇:基于HT1621B段式液晶模块的驱动应用

推荐阅读最新更新时间:2024-03-16 15:10

东芝推出新一代车用蓝牙低功耗IC
东芝电子元件及储存装置株式会社推出新款符合低功耗(LE)Bluetooth核心规范4.2版本IC,TC35679IFTG其包含安全连结支持、LE隐私功能以及提供data packet length extension。此IC也提供广泛的温度范围其适用于严苛的汽车环境。同时包含有类比射频和基频数码元件,可在单一、紧凑、薄型40引脚6mmx6mmx1mm QFN wettable flank封装(引脚间距为0.5mm)中提供全面性的解决方案。 TC35679IFTG提供Bluetooth主机控制器接口(HCI)功能和低功耗GATT设定档功能(根据Bluetooth定义)规格。当与外部非挥发性存储器结合使用时,此IC为一款完全成熟的
[汽车电子]
Dialog进军触控市场,推出超低功耗触控驱动IC DA7280
Dialog日前宣布,推出一款新型触觉控制驱动IC -- DA7280,该器件能驱动ERM(偏心旋转质量)和LRA(线性谐振传动器)电机,提供高清(HD)宽带驱动。与市场上现有解决方案相比,其空载功耗要低76%,并且减少外部物料清单(BOM)数量达50%。 随着消费者的需求和期望值不断提高,设备制造商已经开始使用更先进且更高效的触觉系统,以便为用户提供更丰富的物理反馈体验。当前触觉系统的实现局限在独立微控制器或具有触觉功能的电源管理IC(PMIC)中。这些解决方案通常缺少DA7280所包含的许多特色功能,包括高清波形生成、谐振频率跟踪能力和高达500mA的驱动电流。这些功能可持续确保先进、高效的触觉体验。 由于触觉控制驱动
[半导体设计/制造]
STM8S 操作内部EEPROM
对于STM8S103F3这款芯片来讲,存在640个字节的EEPROM,当然如果有外部EEPROM,自然是不会使用到内部的EEPROM的。但小东西也有大用途,例如做无线应用时,减少成本的情况下,还能保存一些特定设置,如:休眠时间,工作频率,输出功率,密码等。 下图所示,STM8S系列EEPROM大小一目了然。 操作EEPROM自然分成读操作和写操作,先查看STM8S的手册描述如下: 中文手册上的存储器组织结构存在错误,如: 对应英文手册如: 对应的代码如下; char *p = 0x4000; u8 a,b,c; a = *p; b = *p++; c = *p++; 就像C805
[单片机]
<font color='red'>STM8S</font> 操作内部EEPROM
Boréas和Cirque 将开发薄型低功耗高清触觉模块,减低尺寸/功耗
Boréas和Cirque 将开发薄型低功耗高清触觉模块,减低尺寸/功耗并改善笔记本电脑触控板用户体验 双方合作专注于中国台湾/大中国区的发展 加拿大魁北克省布鲁克蒙特市 - 2021年8月18日 - 超低功耗高清 (HD)压电触觉半导体先锋企业Boréas Technologies和触摸界面技术的全球领导者 Cirque Corporation宣布,计划开发用于下一代笔记本电脑的高清触觉触控板模块。 双方初次结盟,将整合彼此的技术以创建更小、更薄外形的新颖工业设计和丰富触觉体验,以满足笔记本电脑制造商日益提高的需求。未来几个月内将披露更多合作细节。 Cirque 总裁 Brian Monson 表示:“我们推出第
[模拟电子]
STM32-(33):低功耗模式与唤醒
功耗管理 很多单片机都有低功耗模式,STM32也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。 用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。 STM32的低功耗模式有3种: 睡眠模式(CM3内核停止,外设仍然运行) 停止模式(所有时钟都停止) 待机模式(1.8V内核电源关闭) 在这三种低功耗模式中,最低功耗的是待机模式,在此模式下,最低只需要2uA左右的电流。停机模式是次低功耗的,其典型的电流消耗在20uA左右。最后就是睡眠模式了。用户可
[单片机]
STM32-(33):<font color='red'>低功耗</font>模式与唤醒
AI+FPGA,低功耗智能探测系统将不再是难题
从家庭控制中智能门铃和安全摄像头的存在检测,到零售应用中用于库存的对象计数,再到工业应用中物体和存在检测,越来越多的网络边缘应用正在不断推动新型AI解决方案面市。根据IHS Markit(现Omida)的预测,2018-2025年物联网设备数量将达到400亿,截至2022年,所有企业产生的数据中近50%会在传统数据中心或云端以外的地方进行处理。 但与此同时,市场一方面要求设计人员开发出性能比以往更高的解决方案;另一方面,延迟、带宽、隐私、功耗和成本问题又限制了他们依赖云的计算资源来执行分析。如何解决系统对于日益严格的功耗(毫瓦级)和小尺寸(5mm2到100mm2)要求?如何能够快速获得相应的硬件和软件工具、参考设计、演示示例和
[嵌入式]
AI+FPGA,<font color='red'>低功耗</font>智能探测系统将不再是难题
超小型模数转换器提升低功耗的医疗设计电路图及原理
医疗设备的发展正在彻底变革家庭医疗保健市场,人们无需离开家门就能诊断出各种健康状况。技术的发展使得便携式自助护理保健系统成为现实,这些系统可以帮助人们监视诸如血压、血糖和体温等重要指标。   家庭医疗监察和监视系统可以帮助人们掌控自己的健康状况,但是这些医疗设备必须快速和高效率,并能在最重要的时候保证工作。随着便携式医疗传感器的发展,更长电池寿命和更小外形尺寸的需求对非组织入侵式护理来说变得愈加关键。   医疗测量设备一般需要整合多种信号调节电路,包括放大器、滤波、参考源和模数转换器(ADC)等,才能分辨和识别传感器信号。除了小尺寸外,读取传感器输出的模拟电路要求低功率工作也很重要,这样才能提供更长的电池寿命和更多的读取
[模拟电子]
超小型模数转换器提升<font color='red'>低功耗</font>的医疗设计电路图及原理
基于CS42L37设计的低功耗音频CODEC技术
本文介绍了CS42L37主要特性,方框图, 典型连接框图以及CS42L37评估板主要特性, 评估系统方框图以及评估板详细电路图与智能音频CODEC应用框图. CS42L37是Cirrus公司的高度集成的低功耗音频和电话CODEC,主要用于手持应用如智能手机和超小型移动计算机. CS42L37具有灵活的时钟架构,时钟频率有6, 12, 24, 13, 26, 19.2, 或38.4 MHz,具有立体声ADC,支持双路模拟或数字MIC,双路MIC偏压发生器,4个DAC耦合到5个输出. 立体声ADC动态范围91dB,THD+N为-85dB,2:1立体声模拟输入复接器, 立体声DAC到线路输出动态翻番97dB,THD+N为-86dB,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved