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
    +关注

    关注

    2295

    文章

    11034

    浏览量

    365935
  • dma
    dma
    +关注

    关注

    3

    文章

    576

    浏览量

    103473

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问GPDMA和DMA的区别是什么?

    最近看到最新的芯片里面用到的DMA模块写的是GPDMA,好像通道多了不少,这只是最直观的,还有哪些区别?看着还必须到GPDMA模块去配置,不能在其他模块直接配置了
    发表于 07-22 07:19

    请问STM32U5不支持ST-LINK v2怎么办?

    STM32U5不支持ST-LINK v2怎么办?
    发表于 06-09 07:59

    请问STM32U3系列的定位是怎样的?

    领先的每毫瓦 Coremark分数117。这几乎是意法半导体之前 STM32U5系列效率的两倍,是STM32L4系列的五倍。
    发表于 04-25 07:05

    请问STM32U3系列的定位是怎样的?

    领先的每毫瓦 Coremark分数117。这几乎是意法半导体之前 STM32U5系列效率的两倍,是STM32L4系列的五倍。
    发表于 04-23 06:45

    STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发怎么解决?

    我使用的是STM32U585系列芯片,开启了IWDG,并在运行模式下测试提前唤醒中断正常触发,但在进入STOP2模式后,提前唤醒中断无法触发导致无法喂狗,看门狗超时后芯片复位。 手册中写道IWDG
    发表于 04-22 08:14

    STM32U5?(超低功耗MCU,支持TinyML)全面解析

    精度。消费类设备语音助手 :利用低功耗麦克风阵列与关键词识别模型(如“播放音乐”),实现离线语音交互。安全支付 :在POS终端中集成STM32U5的安全功能,保护交易数据,同时支持AI反欺诈模型本地化
    的头像 发表于 04-08 17:38 ?1903次阅读
    <b class='flag-5'>STM32U5</b>?(超低功耗MCU,支持TinyML)全面解析

    STM32U575ZIT如何配置GPDMA+DCMI?

    配置完GPDMA后会报这个错误 然后就是GPDMA文件里这有这些
    发表于 03-12 07:13

    STM32的H5/U5系列处理器内置运放支持负压运算吗?

    STM32的H5/U5系列处理器内置运放支持负压运算吗?比如输入-1V,放大倍数为2时输出-2V
    发表于 03-11 07:53

    求助,关于U575RI的GPDMA_LINKED_list模式的疑问求解

    = GPDMA1_REQUEST_DCMI; pNodeConfig.Init.BlkHWRequest = DMA_BREQ_SINGLE_BURST;//DMA传输硬件协议,单个传输
    发表于 03-07 08:02

    STM32U575串口接收+GPDMA波特率不匹配怎么解决?

    我用CubeMX配置的串口+GPDMA接收,115200波特率正常能用, 然后如果波特率设置错误为9600,再改回来115200,接收就不能用了,调试好像时DMA出错了,然后启用HAL_UARTEx_ReceiveToIdle_DMA函数依然错误,有大神知道怎么解决吗
    发表于 03-07 07:59

    cubeide的代码怎么编译到内部+外部FLASH里面去?

    我有一个项目,准备使用GUI和AI,准备使用STM32U5,但是编译出来的代码很多,STM32U5的内部FLASH不够用,准备使用OSPI扩展外部FLASH。但是遇到一个问题,我不知道怎么将编译
    发表于 03-07 07:48

    STM32项目实战:基于STM32U5的智能大棚温控系统(LVGL),附项目教程/源码

    《智能大棚温控系统_STM32U5》项目完整文档、项目源码,点击下方链接免费领取。项目资料领取https://s.c1ns.cn/F5XyUSTM32项目实战之“智能大棚温控系统
    的头像 发表于 11-13 17:08 ?1993次阅读
    <b class='flag-5'>STM32</b>项目实战:基于<b class='flag-5'>STM32U5</b>的智能大棚温控系统(LVGL),附项目教程/源码

    STM32项目实战:基于STM32U5的火灾报警系统(LVGL),附项目教程/源码

    《火灾报警系统_STM32U5》项目完整文档、项目源码,点击下方链接免费领取。项目资料领取https://s.c1ns.cn/F5XyUSTM32项目实战之“火灾报警系统”(基于STM32U5)今天
    的头像 发表于 11-13 14:18 ?1950次阅读
    <b class='flag-5'>STM32</b>项目实战:基于<b class='flag-5'>STM32U5</b>的火灾报警系统(LVGL),附项目教程/源码

    STM32项目实战:基于STM32U5的智能灯光控制系统(LVGL),附项目教程/源码

    《智能灯光控制系统_STM32U5》项目完整文档、项目源码,点击免费领取。项目资料领取:https://s.c1ns.cn/F5XyUSTM32项目实战之“智能灯光控制系统”(基于STM32U5
    的头像 发表于 11-07 18:50 ?2505次阅读
    <b class='flag-5'>STM32</b>项目实战:基于<b class='flag-5'>STM32U5</b>的智能灯光控制系统(LVGL),附项目教程/源码

    X-CUBE-CLASSB以及生态系统为何如此重要

    ???????? X-CUBE-STL目前支持STM32MP1、STM32U5STM32L5STM32H5STM32WL。实
    的头像 发表于 11-07 14:01 ?863次阅读