我这里使用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寻址的配置。其实开篇也大致介绍了,这里接着进一步具体解释。现在是USART3DMA接收,显然源地址是固定的,即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顺序存储起来。可以结合下方调试结果的截图来理解。
OK,关于STM32H563芯片DMA 2D功能的应用演示就介绍到这里。抛砖引玉,具体应用时灵活使用即可。
上一篇:基于嵌入式系统原型设计的STM32开放式开发环境详解
下一篇:stm32定时器外部时钟3使用外部时钟源模式2进行定时的步骤
推荐阅读最新更新时间:2024-10-27 15:12
设计资源 培训 开发板 精华推荐
- LTC3638EMSE 5V 至 140V 输入至 5V 输出、250mA 降压型稳压器的典型应用电路
- LT8570IDD-1 1.5MHz、5 至 12V 输出升压转换器的典型应用
- 数据采集系统仪表放大器
- LT1171CQ、2.5A 外部电流限制的典型应用
- 设计支持在 LED 照明设计中包含 FL7701
- LT3598EUF 演示板,具有 2% 电流匹配的 6 串 30mA LED 驱动器
- PCA9617A 电平转换 Fm+ I2C 总线中继器的典型系列应用
- LT1769CGN 演示板、2A、恒流、恒压电池充电器
- DC919A-G,LTC2207-14 CMOS 输出演示板,直流输入,105Msps 14 位 ADC,直流
- DK-DEV-4CGX150NES,Cyclone IV GX FPGA 开发板为低功耗开发和原型设计提供硬件平台
- 【EEWORLD带你DIY】数字示波器V1.0进展贴
- 创通联达高通 IOT 平台解决方案及成功案例|报名直播赢【蓝牙耳机、音箱、京东卡】等好礼
- EEWORLD社区月度奖励,赠E金币!
- 【温故喝新之单片机版块】温2016年MCUs,喝2017年版块新篇章
- ADI•世健工业嘉年华—有奖直播:ADI赋能工业4.0—助力PLC/DCS技术创新
- 共抗疫情,少出门多学习。领取下载积分,让学习资料到你碗里!
- 乐享惬意春天,TI A8开源硬件平台体验季!
- 考眼力:高速数字设计的秘籍 藏在哪里? 走近Keysight PATHWAVE,提升工作效率
- 您的电路保护有足够的空间吗?Littelfuse的881系列保险丝迎接这一挑战