STM8S 低功耗模式

2023-05-16

功耗控制的概念调整

功耗控制之硬件调整

在硬件体系中可以有以下优化手段:

  1. 优化电路设计
  2. 优化电源供电效率(减少用于发热的能源)
  3. 调节单片机时钟频率(频率越高功耗越高)
  4. 选择单片机或者外围的工作电压(供电电压影响运行功耗,供电越大耗电越大)
  5. 管理单片机片上资源
  6. 自定义电源管理方案
  7. 管理模拟或者数字外设
  8. 配置I/O端口模式
  9. 单片机处理器选型

片上外设 影响运行功耗,针对具体的应用,编程人员往往只需要启用单片机的部分片上资源,而非全部启用,即便是全部启用了,也存在分时运行的情况。对比分析数据发现A/D转换T/C资源都是"耗电大户",片上外设消耗的电流就不能忽视,对此类资源的合理控制就显得非常必要。
在这里插入图片描述

功耗控制之软件优化

  1. 编译优化(编译器)
  2. 软件实现(软件逻辑优化)
  3. 快速短时(频率提高,处理指令的时间就减少了,一个合适的平衡点能降低功耗)
  4. 优化轮询
  5. 减少运算量(运算时是和Flash/RAM打交道,运行电流会上去)
  6. 中断处理
  7. 波特率优化
  8. 停机模式
  9. 等待模式
  10. AD采样速度
  11. 其它

在运行模式,为了即能满足系统性能又能降低功耗,选择合适的系统时钟源是很重要的。耗电量HSE>LSE>HSI>LSI,所以选择合适的时钟源能降功耗

代码执行位置影响运行功耗。代码从RAM中执行时的电源电流在其它条件参数一致的情况下比代码从Flash中执行时的电源电流要小,说明RAM存取速度快,执行效率高。

fCPU 是由 fMASTER 分频而来,可降低fCPU的时钟频率,虽然这会降低CPU的速度,但同时可降低CPU的功耗。其它外设(由fMASTER提供时钟)不会受此设置影响。

STM8单片机在低功耗上的优势

  1. STM8单片机支持宽泛的供电电压,如STM8S207/208系列单片机为例,其供电电压支持2.95V5.5V,其中就包含常见的3.3V5.0V的供电电压标准,选取3.3V电压供电时功耗与5.0V相比会有所下降
  2. STM8单片机具备灵活的模拟性能,有各种不同的输入输出模式,每种模式的电气特性皆不相同,针对具体的需求,用户可以配置特定的GPIO模式以实现功能,对于闲置未启用的GPIO也可以配置相应的端口模式以降低功耗。
  3. STM8单片机支持多种电源管理方式,STM8单片机可以配置为运行模式等待模式活跃停机模式停机模式等(耗电量从大到小),灵活多变的运行模式为单片机功耗调整提供了支持
  4. STM8单片机拥有多样的时钟源外设时钟门控功能,各种时钟源的运行参数均不相同,功耗参数自然也不一致,时钟源的多样性就能尽量满足用户的功耗需求(HSE耗电比HSI多)。外设时钟门控功能可以管理片上数字资源和时钟的连接,从而控制外设资源电流消耗。

为什么S系列能够使用低功耗模式了,ST还要推出L系列?

答:L系列有"超低漏电流",漏电流指的是晶元的静态电流,能到零点几个微安。

STM8低功耗运行模式

STM8单片机拥有出色的电源管理模式,可配置单片机运行状态如下:

  1. 等待模式(Wait)
  2. 活跃停机模式(Active-Halt):可配置为慢速或快速唤醒
  3. 停机模式(Halt):可配置为慢速或快速唤醒

用户可合理选择以上三种模式中的一种,在最低功耗、最快唤醒速度和可使用的唤醒源之间获得最佳平衡点
在这里插入图片描述
程序(IAR)上模式的切换(以下为STM8单片机专用中断指令):

#define wfi()   __wait_for_interrupt() /* Wait For Interrupt */
#define halt()  __halt()               /* 活跃停机模式 */
#define halt()  __halt()               /* 停机模式 */

用相同的指令halt()的时候,怎么区分是活跃停机还是停机模式?答:如果在执行这条指令之前,开启了AWU这个功能,那么就是切换到活跃停机模式;否则就是停机模式。

自动唤醒AWU结构及配置

问题:

  1. AWU单元的具体结构是什么样子?
  2. 各种分频参数和时钟选择是什么样的操作顺序?
  3. 什么时候会触发AWU的中断?

AWU结构

  • CKAWUSEL=CK+AWU+SEL(select),AWU时钟选择
  • 默认情况下,由于CKAWUSEL位为0,所以选择的是LSI作为AWU的时钟
    在这里插入图片描述
  • fLS != fLSI,而是经过前面选择后得到128KHz的时钟
  • 通过HSE分频得到的128KHz可能比较精确,但是LSI有12.5%的误差,不一定是准确的,所以fLS右边有个分支,合上开关后,引入到定时器里,测得周期,判断是不是128KHz,如果不是,会对频率进行一定的修正。(不过一般不会去修正)

在这里插入图片描述

  • 这里由于使AWU_CSR中的"AWUEN"位为1了,所以后面执行HALT指令时,单片机会进入活跃停机状态

在这里插入图片描述
AWU结构树涉及到的三大寄存器如下:

  1. AWU_CSR:控制/状态寄存器,判断fLS的精度
  2. AWU_APR:异步预分频寄存器
  3. AWU_TBR:时基选择寄存器

控制/状态寄存器(AWU_CSR)

在这里插入图片描述

异步预分频寄存器(AWU_APR)

在这里插入图片描述

APR分频参数表

在这里插入图片描述

时基选择寄存器(AWU_TBR)

在这里插入图片描述

AWU唤醒时间计算参考

在这里插入图片描述
例题:
在这里插入图片描述
用C程序的配置如下:
算出来48这个值还要去查APR分频参数表,查到对应的值为2E,官方开发手册直接赋值算出来的数的做法是错的。

AWU_APR=0x2E; //配置预分频值,不是0x30
AWU_TBR=0x05; //配置AWU唤醒时间间隔
AWU_CRS |= 0x10;//使能"AWUEN"位,启动AWU
halt();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM8S 低功耗模式 的相关文章

  • YUV 数据和 Bitmap 互相转换

    YUV 数据和 Bitmap 互相转换 在 Android 的 Camera 应用开发过程中会遇到需要保存预览图像进行分析的情况 xff0c 比如人脸检测或扫描等场景 此时需要将预览的 YUV 数据转为为 Bitmap 保存下来 xff0c
  • Git从入门到熟练第九讲 合并分支和分支冲突

    前言 上一章我们讲解了分支的创建和删除 xff0c 以及对误删分支的恢复操作 xff0c git stash挂起分支修改 在这一讲我们则重点讲解分支合并git merge以及如何解决合并冲突 目录 课前准备 xff1a 9 1 合并分支 9
  • STM32 跳转系统BootLoader

    STM32 跳转系统BootLoader STM32 进入系统 bootLoader 主要有两种方法 xff1a xff08 1 xff09 一种是设置 boot 引脚 xff0c 进入系统 bootLoader xff08 2 xff09
  • 43 freertos任务通知-互斥量串口防止打印乱码

    四十三 freertos任务通知 互斥量串口防止打印乱码 span class token comment span span class token macro property span class token directive ha
  • canal监听mysql实践

    canal监听mysql实践 canal是用java开发的基于数据库增量日志解析 xff0c 提供增量数据订阅 amp 消费的中间件 目前 xff0c canal主要支持了MySQL的binlog解析 xff0c 解析完成后才利用canal
  • 自动驾驶算法学习:多传感器信息融合(标定, 数据融合, 任务融合)

    版权声明 xff1a 本文为博主转载文章 xff0c 遵循 CC 4 0 by sa 版权协议 xff0c 转载请附上原文出处链接和本声明 原文链接 xff1a https blog csdn net orange littlegirl a
  • Linux平台设备和驱动

    一 platform总线 一个现实的linux设备驱动通常需要挂接在一种总线上 xff0c 对于本身依附于PCI xff0c USB xff0c IIC xff0c SPI等的设备而言 xff0c 这自然不是问题 xff0c 但是在嵌入式系
  • 2019年终总结&小半年流媒体服务器开发经验总结

    2019年终总结 amp 小半年流媒体服务器开发经验总结 文章目录 2019年终总结 amp 小半年流媒体服务器开发经验总结19年开发小结流媒体服务框架设计登录服开发ffmpeg音视频合成服务开发 流媒体服务开发小结rtp处理视频的合成 a
  • 设备接入ONENET(3)STM32 + ESP8266(MQTT协议)接入云 :官方例程移植笔记(HAL+LL库)

    重要提示 xff1a 由于OneNET版本迭代 xff0c 导致鉴权方式可能变更 xff0c 若程序无法连接 xff0c 请参考官方手册或再OneNET论坛搜索相关内容 移植本意应该是指通过修改 使得运行原先在另一个平台可运行的程序 STM
  • pygame 学习笔记(4)推荐一本python入门游戏书籍《PYTHON游戏编程入门》

    简介 PYTHON游戏编程入门 xff08 More Python Programming for the Absolute Beginner xff09 是 S Harbour写的一本入门书籍 xff0c 基于pygame库 本书每一个章
  • VLC加载插件失败原因及解决

    最近做视频播放的程序 xff0c 找到了VLC开源库 在windows 43 vs2013 43 QT5 3环境下进行调试 出现了在调用libvlc new时提示不能找到插件 加载libvlc失败的问题 原因及解决方法如下 xff1a 1
  • logcat的使用

    参考链接 log信息级别 以下优先级从上往下排序 xff1a V xff1a verbose 显示全部信息 最低优先级 xff0c 对应Log v String tag String msg D xff1a debug 显示调试信息 xff
  • 物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

    1 前言 xff1a 在对物联网网关进行压测的时候 xff0c 发现在腾讯云部署网关程序 xff0c 设备接入数量只能达到4000多个长连接 xff0c 之后就再也无法接入终端了 之前在阿里云部署的时候明明可以到达2万左右 xff0c 而且
  • Prometheus从入门到跑路

    1 prometheus框架结构 2 prometheus组件介绍 2 1 Prometheus Server 这是Prometheus的服务端 xff0c 也就是核心 Prometheus本身是一个以进程方式启动 xff0c 之后以多进程

随机推荐

  • ucos-ii学习笔记1 创建任务&&任务调度

    span style font family none font size 12px background color rgb 255 255 255 span span 最近在学习嵌入式系统 xff0c 听说ucos ii是使用最广 xf
  • ucos ii学习笔记2 邮箱&&信息量

    上一篇说了ucos ii的大致运行原理 xff0c 这一篇主要用来说明不同任务之间的数据传递的 有人会说 xff1a 不同任务间的数据传递直接用全局变量不就好了 xff0c 我一开始也有这种疑惑 xff0c 也在简单程序中实验过没什么问题
  • ucos ii学习笔记4 软件定时器

    span span p span style font size 18px span span ucos ii从V2 83版本以后加入了软件定时器 xff0c 软件定时器的最快时钟节拍就等于ucos ii的系统时钟节拍 xff0c 由一个单
  • 时钟源关系初解

    最近发现自己对时钟的各种关系不是很清晰 xff0c 所以在这里初步的顺一下 以STM32F4为例 xff0c 大概都差不多 STM32F4有5个时钟源 xff0c 分别是HSI HSE LSI LSE PLL 从名字上看出HSI和HSE是高
  • up-board

    安装ubuntu16 04 安装board内核 http www eeboard com bbs thread 59222 1 1 html 对管脚的控制 http www eeboard com bbs thread 59257 1 1
  • 【嵌入式软件实习】找实习和电话面试记录与总结

    前言 前一段时间就是非常想找实习 xff0c 这次是接到了一家还算是比较大的公司的面试通知和实习offer 做一下简单的记录给在找实习的大家一个参考吧 主要内容为 xff1a 三连即可提高学习效率0 0 x1f9d1 x1f3fb 作者简介
  • Ubuntu更换apt镜像源

    原文 xff1a Ubuntu更换apt镜像源 在ubuntu中 xff0c 默认使用 ubuntu 的官方源http archive ubuntu com xff0c 但是这个官方源在国内下载的速度太慢 xff0c 甚至只有几十k 于是考
  • JS 闭包 详细说明(教程)

    首先 xff0c 闭包是一个高阶函数 xff0c 高阶函数除了可以接受函数作为参数外 xff0c 还可以把函数作为结果值返回 xff08 不知道高阶函数是啥 xff0c 点击链接 xff09 先通过一个例子来了解一下如何把函数作为结果值返回
  • STVP烧录程序

    STVP介绍 STVD xff1a ST Visual Develop xff0c 可视化开发工具STVP xff1a ST Visual Programmer xff0c 可视化编程工具 xff0c stvp主要打开一些固件 hex s1
  • 传感器标定系列——Kalibr工具

    文章目录 Kalibr介绍安装资源 Kalibr介绍 Kalibr is a toolbox that solves the following calibration problems 多相机标定 Multi Camera Calibra
  • TCP传输图片及多线程

    最终效果图 xff1a 注意 xff1a 图片发送大体流程同 Qt网络编程 TCP IP 一 只是在发送时这里采用 的 数据流QDataStream形式 因为使用摄像进行监控时也是对一帧一帧的图片进 行处理 xff0c 因此掌握了如何用Qt
  • GCC编译过程及基本命令总结

    一 GCC简介 GCC即GNU Compiler Collection xff0c 原本只是针对C语言的编译工具 xff0c 现在已经变成了一个工具集 xff0c 包含了C C 43 43 JAVA等语言的集合体 管理和维护 xff1a 由
  • 第一章 PX4-Pixhawk-程序编译过程解析

    第一章 PX4程序编译过程解析 PX4 是一款软硬件开源的项目 xff0c 目的在于学习和研究 其中也有比较好的编程习惯 xff0c 大家不妨可以学习一下国外牛人的编程习惯 这个项目是苏黎世联邦理工大学的一个实验室搞出来的 该方案是基于 N
  • 第二章 PX4-Pixhawk-RCS启动文件解析

    第二章 PX4 RCS 启动文件解析 RCS 的启动类似于 linux 的 shell 文件 xff0c 如果不知道 shell 文件是什么东西可以理解成是为程序的流程框 xff0c 它是告诉处理器应该怎么样去运行 xff0c 前一章介绍的
  • 第三章 PX4-Pixhawk-SPI底层驱动解析

    第三章 PX4 SPI 底层驱动解析 这一章节我们会对 PX4 的底层驱动进行解析 xff0c 我们这里主要解析的是 SPI 协议 xff0c 因为这个协议是所有传感器的一个协议 xff0c 至于 IIC 和串口就可以类似的读写一下 xff
  • 第四章 PX4-Pixhawk-MPU6000传感器驱动解析

    第四章MPU6000传感器驱动解析 Mpu6000 是一个 3 轴加速度和 3 轴陀螺仪传感器 xff0c 这一章节我们将对 MPU6000 这个传感器进行解析 xff0c 依照这个解析步骤同样可以对 L3GD20 xff08 3 轴陀螺仪
  • 第五章 PX4-Pixhawk-GPS解析

    第五章 PX4 GPS解析 在上一章节我们对传感器MPU6000做了一个解析 xff0c MPU6000所支持的协议是SPI 这一章节我们来解析GPS xff0c GPS使用的是串口通信 这里我们着重讲解UBLOX的解析过程 xff0c 并
  • 第六章 PX4-Pixhawk-Sensors解析

    xfeff xfeff 第六章 PX4 Sensors 解析 这一章节并不难 xff0c 也很容易理解 xff0c 但是这一章节有几个函数需要我们去理解一下 xff0c 所以这里我们这里写一章来说明一下 Sensors 是所有传感器进行数据
  • 第七章 PX4-Pixhawk-Mavlink解析

    xfeff xfeff 第七章 PX4 Mavlink 解析 首先我们是还是来说一说 mavlink 吧 Mavlink 协议是无人机的一种开源通信协议 可以理解就是按照一定的格式来发送数据 这一章节涉及到了消息的打包发送和接收解析 首先我
  • STM8S 低功耗模式

    功耗控制的概念调整 功耗控制之硬件调整 在硬件体系中可以有以下优化手段 xff1a 优化电路设计优化电源供电效率 xff08 减少用于发热的能源 xff09 调节单片机时钟频率 xff08 频率越高功耗越高 xff09 选择单片机或者外围的