ARM DMA使用整理

  • Direct Memory Access, 直接存储访问。同SPI,IIC,USART等一样,属于MCU的一个外设,用于在不需要MCU介入的情况下进行数据传输。可以将数据从外设传输到flash,也可以将数据从flash传输到外设,或者flash内部数据移动。

  • 它的使用和其他外设一样,需要通过寄存器进行配置。配置过后,每次DMA传送由3个操作组成:

    1. 从外设数据寄存器或者从当前外设/存储器地址寄存器指示的存储器地址取数据,第一次传输时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元。
    2. 存数据到外设数据寄存器或者当前外设/存储器地址寄存器指示的存储器地址,第一次传输
      时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元。
    3. 执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目。
  • 传输完成或者错误时,会产生中断,用户可以进行处理。该中断的发生也需要寄存器配置。

  • 启用流程一般为:

    • 使能时钟
    • 配置参数,可参考相关芯片的datasheet
      • 定义DMA通道及时钟
      • 定义传输完成标志
      • 定义要发送的数据大小
      • 定义DMA传输数据源
      • 定义DMA传输目标存储器
    • 配置DMA中断,并使能
    • 当有数据进入时,外设会发送请求,进行DMA传输,传输过半,完成或者异常时,会触发DMA中断
  • 当DMA和CPU同时访问相同目标时,DMA会暂停,CPU访问若干个周期后,总线仲裁器执行循环调度。

  • DMA一次只能有一个通道进行数据传输,当多个DMA同时进行数据传输时,需要根据寄存器中配置的优先级进行,当优先级相同时,一般DMA通道编号较低的优先级高。

相关推荐
逐步前行7 小时前
HAL_IIC (EEPROM)
stm32·单片机
国科安芯15 小时前
ASC4T245S分组双向控制架构深度解析:独立DIR/OE控制、QFN16封装与混合方向总线桥接
单片机·嵌入式硬件·物联网·fpga开发·架构·risc-v
独孤九剑打醒他16 小时前
双层Master-Worker软硬协同调度架构:从根源解决分布式数据一致性难题
后端·嵌入式硬件·硬件架构·硬件工程
JNX_SEMI17 小时前
AT2401C 2.4GHz 全集成射频前端单芯片技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
电子工程师成长日记-C5119 小时前
51单片机智能灯光控制系统
单片机·嵌入式硬件·51单片机
狂奔蜗牛(bradley)19 小时前
嵌入式软件编程思想之事件驱动+表驱动状态机+事件参数+优先级FIFO
单片机·mcu
secondyoung20 小时前
Cortex-R52学习:存储系统
arm开发·单片机·学习·arm
C路在脚下21 小时前
HSMS 连接总失败?排查这 5 个配置点
c++·嵌入式硬件
开发笔记-阿牛21 小时前
CK6159A 语音主控 USB 恒温热敷控制器硬件设计(原理图 + PCB + 温控安全方案)
单片机·嵌入式硬件
Kuakewei8881 天前
USB OVP过压保护IC 6.1V关闭输出,SOT23封装1A~3A全覆盖
嵌入式硬件