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通道编号较低的优先级高。

相关推荐
zcmodeltech17 分钟前
源网荷储一体化沙盘模型多场景控制系统设计——基于STM32与Modbus RTU的源网荷储、多能互补、冷热电三联供全场景联动方案,服务范围覆盖全国
数据库·人工智能·stm32·单片机·嵌入式硬件
威嵌神州1 小时前
军工加固计算机七大核心特性解析|国产化、宽温、强加固工程实现
嵌入式硬件·计算机网络·fpga开发
Brilliantwxx1 小时前
【STM32】 深度详解总线架构 哈佛总线结构
stm32·嵌入式硬件·架构
恶魔泡泡糖1 小时前
stm32F103C8T6标准库DWT应用DHT11温湿度传感器数据手册说明
stm32·单片机·嵌入式硬件
深圳市恒锐丰科技杨生1 小时前
EG1192S 10‑100V 高压集成上管降压 DC‑DC|零功耗使能 Buck 电源芯片
嵌入式硬件·硬件工程
单片机仿真设计1 小时前
【Proteus 仿真】基于 STM32 单片机鸡舍环境监控系统设计(仿真 + 源码)
stm32·单片机·嵌入式硬件·proteus·毕设
李永奉2 小时前
中科蓝讯SDK开发-提示音音频文件格式转换和压缩教程
网络·单片机·嵌入式硬件·mcu·物联网
春风解人意2 小时前
从零开始学习嵌入式P35----数据库
数据库·嵌入式硬件·学习
单片机仿真设计3 小时前
【Proteus 仿真】基于 STM32 单片机智能楼宇照明控制系统设计(定制仿真咨询)
stm32·单片机·嵌入式硬件·proteus·毕设
ACP广源盛139246256733 小时前
M6/M5 Pro Mac mini 端侧 AI 爆发@ACP#YLB3118 存储扩展芯片在本地 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos