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

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

3天内不再提示

使用STM32U5系列的GPDMA的burst传输功能

茶话MCU 来源:茶话MCU 作者:茶话MCU 2022-07-31 13:24 次阅读

有人想使用STM32U5系列的GPDMA的burst【分组、节拍、突发】传输功能,似乎遇到了点阻碍。我这里尝试下,稍作演示,仅供参考。

我用TIMER1更新事件触发DMA, DMA工作在非循环模式,DMA将数据从源内存区传输到目的内存区。我先准备下面两个数组。

7f73f59e-0fe3-11ed-ba43-dac502259ad0.png

7f85bcac-0fe3-11ed-ba43-dac502259ad0.png

当两端访问数据宽度设置一样,burst大小始终为1时,传输是很顺畅的,不会有啥问题,结果符合预期。

7fa470c0-0fe3-11ed-ba43-dac502259ad0.png

基于上面配置,结果就很正常。结果如下图,也正是我期望的结果。

7fd4fda8-0fe3-11ed-ba43-dac502259ad0.png

当我们尝试使用DMAburst功能时,发现结果就不对劲了,比方我希望源端按字节读取,然后基于BURST功能打包,目的端按半字来提取,发现结果跟预期不一样。我们一起看看:

7fe5daf6-0fe3-11ed-ba43-dac502259ad0.png

显然,每半个字的高字节都是填充的0。那是怎么回事呢?

我们再看看源端按字节读取,然后基于BURST功能打包,目的端按字来提取,看看结果又会怎么样?

80037c3c-0fe3-11ed-ba43-dac502259ad0.png

结果变成了上面的那个样子,显然结果严重不符合预期。

那是怎么回事呢? 经过反复修改参数,结合我之前之前玩过F4系列DMA burst传输功能以及对STM32 DMA burst功能的理解,感觉这里的BUSRT传输应该是工作了。对DMA burst的基本配置以及我的用户实现代码还是比较自信的。而且目前结果上来看,有数据传输,且数据结果是有规律的,数据并不混乱,程序也没跑飞,就是感觉数据好像在DMABURST传输过程中被处理过。

刚好这两天也就随机性瞄了下这块,隐约记得它是有数据处理功能的。【说实话,U5系列DMA好复杂,比其它M4核STM32的DMA复杂很多。要沉下心来细看真不易!!】

想到这里,不禁自我怀疑。难道配置哪里还有问题,没做到位?

继续查看CubeMx界面下有关GPDMA的配置,嗯?我看到了一直被我无视的一个地方:

80219b4a-0fe3-11ed-ba43-dac502259ad0.png

难道问题是在这里?此处有乾坤?

。。。。。。其实,问题真的就在这里。

当我将那个DataHandling 配置由Disable转为Enable基本恍然大悟了。

我们回过头去查看手册,手册里面对GPDMA的数据处理功能也做了描述。下图是相关描述里的一个表格截图。

8032c1cc-0fe3-11ed-ba43-dac502259ad0.png

关于GPDMA的数据处理功能,这里就不解读了,需要时我们可以自行研读手册。对STM32U5的DMA功能,我只能说:哇塞!功能真强大!

我们还是继续回到上面的测试。当我使能Datahandling功能,并选中满足我当前需求的一个选项后,一切便拨云见日。

8053b030-0fe3-11ed-ba43-dac502259ad0.png

注意上面截图中那个关于数据对齐的选项。意思还是比较简单明了,当源数据宽度小于目的端数据宽度时,按照目的端数据宽度打包摆放。

当我在前面BURST配置的前提下,再加上这个Data Handling配置就能输出符合预期的结果了。

换句话说,我前面的DMA Burst基本配置是没有问题的,只是没有选择合适的Data Handling方式导致没有呈现我们预期的效果,这也正是它跟其它系列不一样的地方。

这里涉及的用户代码很简单,也干脆贴过来,供有需要的参考【初始化配置使用CubeMx】:

80687a88-0fe3-11ed-ba43-dac502259ad0.png

最后顺便提醒一点,上面那个DMA启动函数里的size变量【箭头所指的地方】,是按照字节数来算的,这点要注意,这也是跟其它系列不一样的地方。

审核编辑 :李倩

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

    关注

    2232

    文章

    10650

    浏览量

    347876
  • dma
    dma
    +关注

    关注

    3

    文章

    533

    浏览量

    98915

原文标题:基于STM32U5片内GPDMA Burst传输应用示例

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

收藏 人收藏

    评论

    相关推荐

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

    可穿戴设备。本项目硬件实战平台包含STM32U5核心板、底板、2.8寸显示屏、资源扩展板以及仿真器,智能手表主要功能包括健康监测、运动模式、环境检测、电池电量检测、RTC时钟、状态提醒、模式切换(运行
    发表于 02-19 16:59

    基于LL库实现STM32U5 LPTIM功能

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

    基于STM32U5STM32CubeMX环境搭建

    基于STM32U5STM32CubeMX环境搭建
    的头像 发表于 09-21 17:35 843次阅读
    基于<b class='flag-5'>STM32U5</b> 的 <b class='flag-5'>STM32</b>CubeMX环境搭建

    STM32CubeU5 STM32U5系列入门

    电子发烧友网站提供《STM32CubeU5 STM32U5系列入门.pdf》资料免费下载
    发表于 09-19 17:04 0次下载
    <b class='flag-5'>STM32</b>CubeU5 <b class='flag-5'>STM32U5</b><b class='flag-5'>系列</b>入门

    超低功耗旗舰型微控制器STM32U5介绍

    STM32U5 系列提供先进的节能微控制器,基于Arm® Cortex®-M33 可满足最苛刻的功率/性能要求智能应用的要求,包括可穿戴设备、个人医疗设备、家庭自动化和工业传感器。
    发表于 09-08 07:11

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

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

    STM32U5中用于主设备和从设备互连的总线矩阵

    总线矩阵提供从主设备到从设备的访问,实现并行访问和高效操作当几个高速外围设备同时工作时。 STM32U5 Arm®Cortex®-M33核心针对通过具有直接访问功能的指令缓存执行通过快速主端口进行
    发表于 09-08 06:48

    STM32U5 HexaSPI总线连接PSRAM的PCB布线规则

    本文介绍在使用 STM32U5 的 HexaSPI(HSPI)总线连接 PSRAM 外设时,做 PCB 布线上需要注意的一些技术要求。
    发表于 09-07 08:20

    如何对STM32U575/585微控制器使用GPDMA

    本应用笔记与 STM32U575/585 微控制器(MCU)中嵌入的通用 DMA(GPDMA)相关。GPDMA 是一种系统外设,是 AHB 总线上的双端口主设备。它被用于通过链表在外设和/或存储器
    发表于 09-07 07:36

    STM32U5带OEM Key保护的RDP降级

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

    Arm TrustZone特性面向STM32L5STM32U5系列

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

    如何对STM32U575/585微控制器使用GPDMA

    本应用笔记与 STM32U575/585 微控制器(MCU)中嵌入的通用 DMA(GPDMA)相关。GPDMA 是一种系统外设,是 AHB 总线上的双端口主设备。它被用于通过链表在外设和/或存储器
    发表于 09-07 06:19

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

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

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

    电子发烧友网站提供《STM32U5系列使用LPBAM进行功耗优化.pdf》资料免费下载
    发表于 08-01 16:42 0次下载
    <b class='flag-5'>STM32U5</b><b class='flag-5'>系列</b>使用LPBAM进行功耗优化

    STM32U5系列STM32Cube MCU包示例

    电子发烧友网站提供《STM32U5系列STM32Cube MCU包示例.pdf》资料免费下载
    发表于 08-01 10:09 1次下载
    <b class='flag-5'>STM32U5</b><b class='flag-5'>系列</b>的<b class='flag-5'>STM32</b>Cube MCU包示例