IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM8S 低功耗模式 -> 正文阅读

[嵌入式]STM8S 低功耗模式

功耗控制的概念调整

功耗控制之硬件调整

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

  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();
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 12:00:56  更:2022-05-19 12:01:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:49:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码