打印
[STM32H5]

基于STM32H563 UART+DMA 2D功能经验分享

[复制链接]
1087|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
onlycook|  楼主 | 2023-8-14 10:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我这里使用STM32H563开发板来简单演示一下DMA 2D模式的应用。所谓DMA 2D模式,个人理解是DMA可以通过事先设置块内寻址偏移量和块寻址偏移量来动态调整DMA的寻址方式及能力。换句话说,DMA在进行数据传输时,块内寻址不再总是固定相邻存放,而是可以通过编程决定相邻两次传输时访问数据的地址间隔。对于重复性的块传输,也不再是简单的每次从同一位置再开始,而是可以根据块地址的偏移量调整从新开始传输的起始地址。
描述起来有点抽象,不妨加点看图说话。现在假设针对同一DMA请求发起三次【三轮】传输,对应3个DMA传输块。【注:手机模式下图片可放大查看】


如上图所示,第一次传输了5个红色标示的数据【即第1块】,按图示进行数据访问。第二次、第三次也类似第一次分别传输了5个绿色数据【即第2块】和5个蓝色数据【即第3块】。显然每个传输块内的数据访问规则一样,两两间隔2个存储空间。同时当第1次传输完成后,开启第2次传输时,或者说做完第2次传输后开启第3次传输时,起始地址都相对当前位置往后退了14个地址空间再开始。
关于DMA 2D传输的原理大致说到这里,供参考理解。现在依然基于上面的图示内容,使用STM32H563的USART来具体演示DMA 2D功能。
开发板使用STM32H563ZI Nucleo板,芯片的USART3与板载STLINK的VCP相连。借助PC端的串口调试助手分批发三组数据给MCU,内容分别是5个字符R、5个字符G和5个字符B。开启USART3 接收的DMA 2D功能。
顺便提醒下,STM32H5系列的GPDMA并非所有通道都支持DMA 2D寻址功能。DMA通道是否支持2D功能在CubeMx配置界面已经写得很分明了。使用CubeMx配置的话,选择合适的即可。这里我选择GPDMA1的DMA CH6,它支持DMA 2D功能。
使用STM32CubeMx的基本配置如下:



上面配置里的重点就是那个2D寻址的配置。其实开篇也大致介绍了,这里进一步具体解释。现在是USART3 DMA接收,显然源地址是固定的,即USART3的接收数据寄存器,所以这里跟源地址有关的偏移都是0。DMA访问的目的地址是内存,是可变的。在块内每存放1个数据则向前偏移2个位置,对应下面的Destination Address Offset值。每1块传输完成后开始下一轮传输时,起始地址刚好回退14个位置,对应下面的Block Destination Address Offset值,回退为,前进为。这里一共重复做了3次块传输,对应下面的Repeat counter值。


实际上,经过3轮重复的DMA块传输,接收到的数据就是下图箭头所指的图案样子。


使用STM32CubeMx完成配置,添加用户代码即可调试验证。需手动添加的用户代码主要是下面两行:
__HAL_LINKDMA(&huart3, hdmarx, handle_GPDMA1_Channel6);
HAL_UART_Receive_DMA(&huart3, (uint8_t *)aRxBuffer, 5); //每块【轮】接收5个数据

下面就是基于调试得到的结果。通过3次独立的DMA接收,数据被有规律地按照RGB顺序存储起来。我们可以结合下方调试结果的截图来理解。

[size=0.83em]
微信图片_20230813142631.png (239.5 KB, 下载次数: 0)
下载附件
[color=rgb(153, 153, 153) !important]昨天 14:36 上传




OK,关于STM32H563芯片DMA 2D功能的应用演示就介绍到这里。抛砖引玉,具体应用时灵活使用即可。

转载自: 茶话MCU
如有侵权请联系删除

使用特权

评论回复
沙发
香水城| | 2023-8-14 14:15 | 只看该作者
谢谢转载分享!
原文链接:STM32H563 UART+DMA 2D功能演示

使用特权

评论回复
板凳
Undshing| | 2023-8-14 23:23 | 只看该作者
DMA 2D优势是什么啊?

使用特权

评论回复
地板
周半梅| | 2024-3-1 07:19 | 只看该作者

相反电感量小其阻碍能力也小,它在电路当中抑制的是共模信号

使用特权

评论回复
5
Pulitzer| | 2024-3-1 08:22 | 只看该作者

在动态测试中,电源的负载能力是最主要的测试参数

使用特权

评论回复
6
童雨竹| | 2024-3-1 10:18 | 只看该作者

给电源加上额定电压,记录输出电流和电压值

使用特权

评论回复
7
Wordsworth| | 2024-3-1 11:21 | 只看该作者

这些半孔就是我们所说的邮票孔焊盘

使用特权

评论回复
8
Clyde011| | 2024-3-1 12:24 | 只看该作者

变压器副边同时对负载供电。

使用特权

评论回复
9
公羊子丹| | 2024-3-1 13:17 | 只看该作者

对称性结构,脉冲变压器原边是两个对称线圈,两只开关管接成对称关系,轮流通断,工作过程类似于线性放大电路中的乙类推挽功率放大器

使用特权

评论回复
10
万图| | 2024-3-1 14:20 | 只看该作者

当需要将单个模块板安装在另一个PCB的顶部

使用特权

评论回复
11
Uriah| | 2024-3-1 15:23 | 只看该作者

板与板(或空板)之间用邮票孔连接

使用特权

评论回复
12
帛灿灿| | 2024-3-1 17:19 | 只看该作者

这时候共模电流会被衰减

使用特权

评论回复
13
Bblythe| | 2024-3-1 18:22 | 只看该作者

由于铜更难以磨削并且可能导致钻头断裂,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

435

主题

1620

帖子

3

粉丝