DMA 数据对齐要求的平台差异

[复制链接]
3928|10
逢dududu必shu 发表于 2025-9-28 09:12 | 显示全部楼层 |阅读模式
主流 MCU 的对齐特性
STM32:大部分型号(如 F1、F4 系列)的 DMA 控制器支持非对齐传输,允许 8 位、16 位、32 位数据在任意地址间传输
GD32:部分低端型号(如 GD32F130)要求 32 位传输必须 4 字节对齐,否则会触发总线错误
NXP LPC:多数型号严格要求数据地址与传输宽度对齐(8 位无要求,16 位需 2 字节对齐,32 位需 4 字节对齐)
NRF52:32 位 DMA 传输要求地址对齐,否则会自动截断为低字节传输
对齐错误的典型表现
传输数据错位(高位与低位颠倒)
首帧数据异常而后续帧正常
随机出现的 DMA 传输错误中断(TEIF)
极端情况下导致 MCU 硬故障(HardFault)

xiaoqizi 发表于 2025-11-7 18:39 | 显示全部楼层
在Cortex-M4/M7等高性能微控制器中,未对齐访问会导致总线事务拆分为多次小粒度访问,增加时钟周期开销
木木guainv 发表于 2025-11-7 22:33 | 显示全部楼层
一次4字节未对齐访问可能被拆分为两次1字节或半字访问,导致单次传输延迟增加1-2个时钟周期,大数据量时带宽显著下降
Jiangxiaopi 发表于 2025-11-8 11:13 | 显示全部楼层
当内存区域被配置为“设备内存”或“强序内存”时,未对齐访问会触发总线错误,导致系统进入Hard Fault状态
荣陶陶 发表于 2025-11-8 15:17 | 显示全部楼层
Cortex-M7引入数据缓存后,未对齐缓冲区可能导致跨缓存行操作,增加缓存维护复杂度
Zuocidian 发表于 2025-11-8 19:37 | 显示全部楼层
在STM32H7中,半字(16位)传输要求源地址和目的地址均按2字节对齐
Zhiniaocun 发表于 2025-11-9 08:52 | 显示全部楼层
需确保总字节数能被2整除,防止剩余数据适配错误
Puchou 发表于 2025-11-9 12:57 | 显示全部楼层
STM32的USART+DMA配置中,外设地址通常固定且无需递增,而内存地址需根据数据宽度选择对齐方式
Xiashiqi 发表于 2025-11-9 17:08 | 显示全部楼层
SoC的DMA通过标准总线实现大规模数据传输
小海师 发表于 2025-11-9 21:41 | 显示全部楼层
基于片上系统32位总线下,若源地址低2位为0x1,目的地址低2位为0x3,则差异值为2,数据位移属性为右移
Haizangwang 发表于 2025-11-10 11:50 | 显示全部楼层
不同平台对DMA数据对齐的要求反映了其硬件设计哲学
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

502

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部