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

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

3天内不再提示

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

茶话MCU 来源:茶话MCU 2024-01-24 09:10 次阅读

有人使用STM32U575芯片DAC功能。他希望使用TIMER事件触发DMA,并通过DMA传输内存数据到DAC输出寄存器,进而产生相应的DAC输出波形。可他不知如何配置DMA并实现期望的DAC输出,在ST公司提供的HAL库里也没有找到相关例程可以参考。

baa01174-ba4c-11ee-8b88-92fbcf53809c.png

我这里简单演示一下实现过程,分享出来给有需要的人参考。

我使用TIM3的更新事件触发DMA,每触发一次搬运一个数据到DAC数据寄存器。一共准备了200个数据,在定时器的触发下令DMA循环搬运,让DAC输出一系列正弦波。我使用的开发板是STM32U575 Nucleo板。通过CubeMx进行图形化配置,并基于STM32HAL库组织代码。

先看TIM3的配置,主要是要用它的更新事件,PWM输出不是必需的。

bab0735c-ba4c-11ee-8b88-92fbcf53809c.png

下面是DAC1的基本配置。用到其通道1的对外输出,其它功能根据需要自行调整。

bacd7b96-ba4c-11ee-8b88-92fbcf53809c.png

基于TIM3的更新事件作为DMA请求触发源进行相关配置。DMA使用标准请求模式。源端是内存数据【数据定义为无符号32位】,目的端为DAC数据保持寄存器【访问宽度为32位】。DMA配置成Circular循环传输模式。 见下面的DMA配置截图【使用GPDMA Channel 8】:

bae19b08-ba4c-11ee-8b88-92fbcf53809c.png

baf108fe-ba4c-11ee-8b88-92fbcf53809c.png

配置完成后,创建初始化工程。添加如下必要的用户代码。主要是准备内存数据;开启DAC工作;调用DMA启动函数;使能TIM3更新事件的DMA触发功能;启动TIM3定时器。我把本人所用代码悉数贴出来,以供参考。至于通过CubeMx生成的初始化代码就没必要在这里贴出来了。

bb08442e-ba4c-11ee-8b88-92fbcf53809c.png

验证输出结果。【下面截图中的蓝色部分是TIMER的PWM输出,没展开。】

bb1bc012-ba4c-11ee-8b88-92fbcf53809c.png

整体上,要实现上述功能,首先DMA配置要正确;其次就是组织代码时要适当做些灵活调整;再就是那个DMA启动函数里的数据个数要按源端的数据宽度和传输数据个数换算成总的字节数,即一轮DMA传输的数据字节数。比方这里,源端数据宽度为字【即4字节宽度】,最后设置总的传输个数时是数据个数乘以4。关于这点在本公众号之前的其它文章里也特意讨论过。

上面演示的DMA应用,使用的是标准请求模式,如果使用链表模式也是可以的。有兴趣的话可以自行验证测试。关于DMA链表模式的配置,在本公众号的其它文章里也有介绍,记得也是基于STM32U5系列的。

审核编辑:汤梓红

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

    关注

    30

    文章

    5028

    浏览量

    117721
  • dac
    dac
    +关注

    关注

    43

    文章

    1973

    浏览量

    189514
  • dma
    dma
    +关注

    关注

    3

    文章

    535

    浏览量

    99020
  • HAL库
    +关注

    关注

    1

    文章

    112

    浏览量

    5878

原文标题:STM32U5系列TIMER+DMA+DAC应用演示

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32 TIMER+DMA输出PWM异常案例的问题解析

    有人使用STM32U575的TIMER加上DMA做PWM输出。具体就是利用某TIMER的一个通道的比较事件触发DMA,通过
    的头像 发表于 09-28 09:04 4248次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>TIMER+DMA</b>输出PWM异常案例的问题解析

    STM32U5系列多功能数字滤波器的声音捕获

    MDF(多功能数字滤波器)是专用于样品采集的高性能外设,可用在STM32U5系列微控制器中。它对音频和语音捕获或任何提供需要滤波和抽取的数字信号,例如电机控制和计量。
    发表于 12-02 07:03

    如何使用stm32cubeMX为STM32U5生成的代码添加FreeRTOS?

    获取 FreeRTOS2 - 从 B-U585-IOT2A 评估板上的演示中获取 FreeRTOS,FreeRTOS 已与 *** 集成3 - 从 ST github 获取 stm32u5 的 FreeRTOS 'classic
    发表于 12-09 07:32

    请问一下CubeMX是否支持STM32U5的freeRTOS呢?

    请问一下CubeMX是否支持STM32U5的freeRTOS呢?
    发表于 12-22 06:58

    请问STM32U5的USB如何在STM32CubeMX上直接配置?

    STM32U5的USB配置不能和STM32G0B1那样直接在STM32CubeMX上直接配置什么类了吗
    发表于 08-07 06:10

    Arm TrustZone特性面向STM32L5STM32U5系列

    在 IoT(物联网)应用中,设备很容易受到通过互联网实施的恶意入侵。因此,保护设备和信息并使可信区域和不可信区域彼此隔离,这些安全主题就非常的重要。STM32L5STM32U5 系列器件(本文
    发表于 09-07 06:28

    STM32U5带OEM Key保护的RDP降级

    STM32U5 在芯片生命周期管理方面在 STM32L5 的基础做了进一步的改进,引入了OEM Key 机制,使得 RDP 的级别状态转换能够通过 OEM 设置的 password 进行保护,一方面
    发表于 09-07 06:38

    STM32U5系列使用LPBAM进行功耗优化

    STM32U5 系列微控制器基于具有 Arm® TrustZone®和 FPU 的高性能 Arm®32 位 Cortex®-M33 CPU。此类产品均采用新型结构制造,得益于其高度灵活性和高级外设集
    发表于 09-08 06:54

    2021-06-05 GD32F405VG 调试过程关于DAC/DMA/TIMER等问题的解决

    GD32F405VG 调试过程关于DAC/DMA/TIMER等问题的解决GD32F405与STM32F405外设完全兼容,外设的地址映射也是完全兼容。ST的标准库中的名字与GD32的外
    发表于 12-03 09:06 12次下载
    2021-06-05 GD32F405VG 调试过程关于<b class='flag-5'>DAC</b>/<b class='flag-5'>DMA</b>/<b class='flag-5'>TIMER</b>等问题的解决

    STM32U5系列采用LPBAM进行电源优化

    STM32U5系列采用LPBAM进行电源优化
    发表于 11-21 08:11 0次下载
    <b class='flag-5'>STM32U5</b><b class='flag-5'>系列</b>采用LPBAM进行电源优化

    STM32L5和STM32U5系列的Arm®TrustZone®功能

    STM32L5和STM32U5系列的Arm®TrustZone®功能
    发表于 11-21 17:06 0次下载
    <b class='flag-5'>STM32</b>L5和<b class='flag-5'>STM32U5</b><b class='flag-5'>系列</b>的Arm®TrustZone®功能

    STM32U5系列物联网节点探索套件

    STM32U5系列物联网节点探索套件
    发表于 11-22 08:21 0次下载
    <b class='flag-5'>STM32U5</b><b class='flag-5'>系列</b>物联网节点探索套件

    AN5701 STM32U5 系列STM32Cube MCU 包示例

    AN5701 STM32U5 系列STM32Cube MCU 包示例
    发表于 11-24 08:34 0次下载
    AN5701 <b class='flag-5'>STM32U5</b> <b class='flag-5'>系列</b>的 <b class='flag-5'>STM32</b>Cube MCU 包示例

    STM32 DAC+TIMER+DMA的实现

    ,这里拿出来一起交流探讨下。方法不是唯一的,尤其基于不同STM32系列。这里尽量使用通用、常规的方法,算是抛砖引玉。 显然,我们可以考虑使用STM32DAC
    的头像 发表于 07-13 10:29 1015次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>DAC+TIMER+DMA</b>的实现

    STM32DACTIMER应用演示

    ,这里拿出来一起交流探讨下。方法不是唯一的,尤其基于不同STM32系列。这里尽量使用通用、常规的方法,算是抛砖引玉。 显然,我们可以考虑使用STM32DAC
    的头像 发表于 07-17 10:27 513次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>DAC</b>加<b class='flag-5'>TIMER</b>应用<b class='flag-5'>演示</b>