0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32U5 LPBAM模式介绍

jf_pJlTbmA9 来源:STM32单片机 作者:STM32单片机 2023-10-26 17:59 次阅读

1、前言

LPBAM 全称为 low-power background autonomous mode,系统时钟可以在进入低功耗模式之后打开或关闭,可以触发 DMA 请求,可以在 stop0,stop1,stop2 模式下使用。在 stop 模式下除了 LSI 和 LSE 以外其他时钟都会关闭,但 MSIK 和 HSI16 可以被临时使能,以支持 DMA 传输,这就是 LPBAM 的特点。

另外,LPBAM 需要 DMA 来进行配合,U5 系列的 DMA 有 Linked List 功能,也就是说DMA 可以完成链表设计好的任务。在初始化的时候,以链表模式设置好 DMA 相关寄存器,可以通过链表模式完成内存到内存,或者内存和外设寄存器之间的数据传输。

由于 LBAM 的特性,在进行低功耗应用设计时,可以使用 LPBAM 大大减少功耗,提升产品的低功耗性能。比如,可以在 stop2 模式下进行串口收发,ADC 采集任务等等。

本文将介绍如何使用 CubeMX,配置 DMA Linked List,在低功耗模式下,使用LPBAM 进行 GPIO Toggle。

2. 准备工作

2.1 环境准备

测试硬件:B-U585I-IOT02A 开发板

测试开发环境:IAR 8.50.1

CubeMX 版本:6.30.0

wKgaomUD6bmACwKIAAJ8OrDNmt0099.png

2.2 设计思路

如图所示,我们先在内存中定义好需要写入 GPIO 寄存器的数值,其中 Set GPIO 就将数据写入 BSRR 寄存器,Reset GPIO 就将数据写入 BRR 寄存器。LPDMA 设置两个节点,一个去 Set GPIO,另一个 Reset GPIO,然后由软件触发,由 LPTIM1 CH1 的上升沿触发 LPDMA 第一个节点进行动作,LPTIM1 CH1 的下降沿触发 LPDMA 第二个节点进行动作。

LPTIM1 设置使用 LSI 32KHz 为时钟,频率为 32KHz,占空比为 50%的 PWM 波输出,也就是说 GPIO 会以 500ms 的频率进行 toggle。

wKgaomUD6bqAF3FiAACEZEvodEE825.png

3.Step By Step

wKgZomUD6byACbIEAAJaQm8MCEI219.png
wKgaomUD6b2AQmGOAAG2VqbYUSc989.png
wKgZomUD6b-AU2KsAAGDHzydsbo171.png
wKgZomUD6cGAEMQ1AAPVIyGRIwk720.png
wKgaomUD6cKAHNqVAAb4w9JGMpY897.png
wKgZomUD6cSAJ1-KAAFWYjxNsVU481.png
wKgZomUD6cWABo-pAAHCZ1-FRMg791.png
wKgaomUD6caAW0PmAAGiG0wBJ24929.png
wKgZomUD6ciAeWyuAAC8zOcS_Uc907.png
wKgaomUD6cmAPkK8AADEErXqEu0028.png
wKgZomUD6cqAYPLbAADn_YeFwBw382.png
wKgaomUD6cyAVAztAAF7sGFUK2E091.png
wKgaomUD6c6AAhKcAAGEhkL6bRg719.png
wKgaomUD6c-AFMSDAAD7102_KBc085.png
wKgZomUD6dCAOtY3AAFhUJgu6Fs840.png

STEP10-1:代码修改 main.c

wKgaomUD6dKAcfr3AAFBUuTV-iY719.png
wKgZomUD6dOAFXUpAAF33VtXhjE161.png

STEP10-2:代码修改 main.h

wKgZomUD6dWAM_v4AAA6ZN7v61o960.png

STEP10-3:代码修改 stm32u5xx_it.c

wKgaomUD6deASBGoAACU-QRQyMY216.png

STEP10-4:代码修改 linked_list.c

wKgaomUD6dmAQaVVAAA-_ZkANc0465.png

STEP10-5:stm32u5xx_hal_msp.c

wKgZomUD6dqAS8ThAAATdFDDAWk285.png

wKgZomUD6dyARzTuAAFAAq5txTw296.png

STEP11:

link file 修改 : stm32u585xx_flash.icf

wKgaomUD6d2AV6hLAABJyQ2muVg039.png

修改完后,编译工程,在按下 USER BUTTON 后,系统将进入 STOP2 模式, 板载 LED 会停止toggle,但是 LPGPIO 控制的 LED 仍然会继续 toggle。

4、总结

本文介绍了 LPBAM 模式,以及如何使用 CubeMX 方便地配置 DMA Linked List,最后完成了在 CPU 进入 Stop2 模式下的 GPIO toggle 任务。LPBAM 模式将会在打造超低功耗的产品中发挥非常重要的作用。

文档中所用到的工具及版本

测试工具版本信息

• IAR:8.50.1

• CubeMX:6.30.0

来源:STM32单片机
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2264

    文章

    10852

    浏览量

    354100
  • 模式
    +关注

    关注

    0

    文章

    65

    浏览量

    13362
  • CubeMx
    +关注

    关注

    0

    文章

    30

    浏览量

    1302
收藏 人收藏

    评论

    相关推荐

    SRAM1/2/3可以使用LPDMA通过LPTIM触发ADC4搬运数据到SRAM4吗?

    请教一下各位大佬 使用STM32U575LPBAM我看官方例程中 所有的代码运行域都是SRAM4,正常模式也是在SRAM4 但是目前我这边SRAM4 的16K 在正常模式下 不够用,我在正常
    发表于 09-20 15:17

    STM32U5退出stop2模式后进入HardFault_Hand的原因?

    主循环每两秒修改stopFlag为1,进入stop2模式,外部中断(lis2ds12的6d检测)唤醒并修改stopFlag为0; 不连接stlink时,退出stop2后就会进入
    发表于 07-24 06:25

    STM32H5STM32U5在trustzone上有哪些不同?

    我要做空调的空中升级FOTA的方案,需要加密,对于trustzone功能,采用那款芯片比较合适?STM32H5STM32U5在trustzone上有哪些不同?
    发表于 07-05 07:03

    STM32U5如何把数据保存到SRAM2中?

    stm32u575xx可以在StandBy模式下保留SRAM2,那我应该如何把数据保留在SRAM2呢?直接使用绝对地址吗?或者有更优雅的形式?
    发表于 05-23 07:51

    求助,关于STM32U5的HIGH SPEED USB时钟源的问题求解

    如题,STM32U595,USB要使用HIGH SPEED,也就是480M总线速度,手册上说的HS必须要用HSE做时钟源,但是现在试了下,用HSI做时钟源,也是可以的,这是个例还是确实可以用HSI做
    发表于 05-23 07:36

    STM32CubeMX创建STM32U5系列工程,DEBUG调试下为什么没有ST-LINK选项?

    通过STM32CubeMx创建生成一个STM32U5xxx 的MDK(keil_v5)工程,打开工程后,想通过ST-LINK进行调试,但在工程的Debug窗口并没有ST-LINK相关的选项。在同一
    发表于 03-27 06:40

    STM32U5,STM32WB及STM32L4开发板,哪个开发板拥有较多数量的ADC?

    请问,我现在需要开发一个项目,在这个项目中需要使用较多数量的传感器(至少8个),这些传感器需要进行信号采集,现在在使用STM32U5,STM32WB及STM32L4芯片的开发板中,哪些开发板拥有较多数量的ADC?
    发表于 03-20 08:01

    STM32H503RBT6U的SPI作为Slave模式最高支持速率是多少?

    STM32H503RBT6U的SPI作为Slave模式最高支持速率是多少?超过11M接收数据会错位
    发表于 03-14 07:56

    STM32U5 SDMMC为什么BusWide只能设置为1B,设置为4B的时候没办法读写怎么解决?

    STM32U5 SDMMC为什么BusWide只能设置为1B,设置为4B的时候没办法读写。硬件连接是没问题的, 4跟数据线都连接上了, 连接顺序也肯定没错, 上拉电阻也是有的。 SDMMC初始化代码
    发表于 03-08 07:41

    基于STM32U5片内温度传感器正确测算温度实战经验分享

    STM32 在内部都集成了一个温度传感器,STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度,但是用于监控晶圆上的温度还是挺好的,以防止芯片过温运行。
    的头像 发表于 02-22 17:27 3826次阅读
    基于<b class='flag-5'>STM32U5</b>片内温度传感器正确测算温度实战经验分享

    盘点那些硬件+项目学习套件:STM32U5单片机开发板及入门常见问题解答

    、LVGL及更多项目案例、更多型号STM32的学习。 ▋项目案例介绍 第一阶段项目案例:基于TouchGFX的智能手表项目开发 智能穿戴领域是STM32U5的一个重要应用领域,智能手表项目,可用于学习研究
    发表于 02-19 16:59

    STM32U5系列TIMER+DMA+DAC应用演示

    有人使用STM32U575芯片的DAC功能。他希望使用TIMER事件触发DMA,并通过DMA传输内存数据到DAC输出寄存器,进而产生相应的DAC输出波形。可他不知如何配置DMA并实现期望的DAC输出,在ST公司提供的HAL库里也没有找到相关例程可以参考。
    的头像 发表于 01-24 09:10 1536次阅读
    <b class='flag-5'>STM32U5</b>系列TIMER+DMA+DAC应用演示

    基于LL库实现STM32U5 LPTIM功能

    有人打算使用STM32U5系列片内LPTIM做低功耗模式唤醒。基于STM32 LL库组织代码,折腾几天后似乎连中断都进不了,想找找是否有现存LL库例程可以参考。
    的头像 发表于 01-07 14:12 1382次阅读
    基于LL库实现<b class='flag-5'>STM32U5</b> LPTIM功能

    实战经验 | STM32U5 ADC 自校准不成功的问题分析

    关键词:STM32U5,ADC 目录预览 1、引言 2、问题 3、问题解决 4、小结 01 引言 很多 STM32 系列中的 ADC 都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括
    的头像 发表于 12-10 16:45 1823次阅读
    实战经验 | <b class='flag-5'>STM32U5</b> ADC 自校准不成功的问题分析

    详解STM32低功耗模式

    本文讨论下STM32低功耗模式,先看如下手册。
    的头像 发表于 11-08 12:18 1923次阅读