2. DMA基础概念:DMA控制器工作原理、源地址与目的地址、传输宽度与突发传输、DMA请求与响应

2.1 DMA控制器工作原理

DMA(Direct Memory Access,直接存储器访问)是一种允许外设与存储器之间直接交换数据的技术,无需CPU逐字节干预。在单片机驱动LCD TFT屏的场景中,DMA是提升帧率、降低CPU负载的核心手段。

DMA控制器的工作原理可概括为:“CPU配置,DMA执行,总线仲裁,中断通知”。CPU只需初始化DMA通道(设置源地址、目的地址、传输长度等),随后DMA控制器接管总线控制权,自动完成数据搬运,传输完成后通过中断或标志位通知CPU。

核心优势: 一次DMA传输可搬运数千字节,CPU仅在配置和完成阶段介入,中间过程完全独立运行,传输效率比CPU逐字节搬运提升10~50倍。
DMA控制器工作原理流程图 CPU配置DMA通道 外设发起DMA请求 总线仲裁(DMA获得总线) DMA执行数据搬运 传输完成 → 中断通知CPU 说明 CPU配置后立即返回执行其他任务, DMA独立完成数据搬运, 不占用CPU计算资源。 LCD场景 DMA将帧缓冲区数据直接搬运 到LCD控制器接口寄存器。

2.2 源地址与目的地址

DMA传输的核心是“从哪来,到哪去”。源地址与目的地址决定了数据流动的方向和路径。在LCD TFT驱动中,常见的地址配置如下:

地址类型 典型配置 LCD驱动场景示例
源地址 存储器地址(SRAM/Flash) 帧缓冲区基地址(如 0x2000_0000)
目的地址 外设数据寄存器地址 LCD控制器数据寄存器(如 0x6000_0000)
地址递增模式 递增/固定 源地址递增(连续读取像素),目的地址固定(写入同一寄存器)
地址对齐要求 按传输宽度对齐 32位传输时地址需4字节对齐
优化要点: 在LCD驱动中,源地址通常设置为递增模式(从帧缓冲区顺序读取像素数据),目的地址设置为固定模式(指向LCD控制器的数据寄存器)。这种“源递增+目的固定”的组合是DMA驱动LCD的标准配置。

2.3 传输宽度与突发传输

传输宽度指DMA每次总线访问搬运的数据位数,常见配置为8位、16位、32位。传输宽度必须与源/目的设备的数据总线宽度匹配。

突发传输(Burst Transfer)是DMA在一次总线仲裁中获得连续多次传输的能力,无需每次传输都重新请求总线。突发传输可大幅减少总线仲裁开销,提升有效带宽。

参数 说明 LCD驱动推荐值
传输宽度 单次总线访问的数据位数 16位(RGB565)或32位(RGB888)
突发长度 一次突发中连续传输的次数 4、8、16(取决于LCD控制器FIFO深度)
突发大小 突发长度 × 传输宽度 64字节(16位×4次)或128字节(32位×4次)
总线利用率 有效数据时间 / 总线占用总时间 突发传输可达80%~95%,非突发仅30%~50%
传输宽度与突发传输对比 非突发传输(单次传输) 请求 传输 释放 每次传输都需要: 请求总线 → 传输数据 → 释放总线 总线仲裁开销大,有效带宽低 突发传输(Burst) 请求 连续传输×4 释放 一次请求后连续传输多次: 请求总线 → 连续传输N次 → 释放总线 总线仲裁次数减少,有效带宽提升 LCD驱动建议 • 传输宽度:16位(RGB565) • 突发长度:4或8 • 匹配LCD控制器FIFO深度 • 避免突发过长导致总线延迟

2.4 DMA请求与响应

DMA传输的启动依赖于DMA请求信号。外设(如LCD控制器、定时器、ADC)在需要数据传输时,向DMA控制器发送请求信号,DMA控制器响应后执行传输。

DMA请求与响应的典型流程如下:

  1. 外设就绪: LCD控制器FIFO非满(可写入数据)时,硬件自动置位DMA请求信号。
  2. DMA控制器仲裁: 多个DMA通道同时请求时,按优先级仲裁。
  3. 总线访问: DMA控制器获得总线控制权,执行一次或突发传输。
  4. 请求撤销: 传输完成后,DMA请求信号自动撤销。
  5. 循环或单次: 循环模式下,请求持续产生直至传输计数归零。
常见问题: 若LCD控制器的DMA请求信号未正确配置(如极性错误、电平触发与边沿触发混淆),会导致DMA无法启动或传输数据错位。务必查阅LCD控制器数据手册中的DMA接口时序要求。

2.5 DMA关键参数速查表

参数 描述 LCD驱动典型值 性能影响
传输宽度 单次总线访问位数 16位 / 32位 宽度越大,单次吞吐越高
突发长度 连续传输次数 4 / 8 突发越大,总线利用率越高
地址递增模式 源/目的地址是否递增 源递增,目的固定 匹配LCD寄存器写入方式
循环模式 传输完成后是否自动重载 单次模式(帧传输) 循环模式适合持续刷新
优先级 多通道DMA的优先级 高优先级(LCD实时性要求高) 避免LCD传输被低优先级DMA打断
总结: DMA控制器通过源地址与目的地址定义数据流向,传输宽度与突发传输决定单次搬运效率,DMA请求与响应机制实现外设与DMA的协同工作。在LCD TFT驱动中,合理配置这些参数是发挥DMA性能的关键。