当前位置: 首页 > news >正文

<RT1176系列11>DMAMUX解读

1、概述

DMA(直接内存访问,DIrect Memory Access)
工作原理:DMA控制器直接在内存和外设之间传输数据,而不需要CPU的干预。
优点:极大地提高了数据传输效率,释放CPU资源。适合大批量数据传输,减少CPU负担。
缺点:需要额外的硬件支持(DMA控制器)。实现复杂度较高,涉及内存管理和总线控制。

        RT1176配备两个 DMA 控制器,且相应地配有两个 DMAMUX(DMA 多路复用器)。EDMA(增强型 DMA)位于 CM7(Cortex-M7)域,与 CM7 协同工作;EDMA_LPSR(低功耗场景增强型 DMA)位于 CM4(Cortex-M4)域,与 CM4 协同工作。其中,DMA_CH_MUX(DMA 通道多路复用器)为 EDMA 提供服务,DMA_CH_MUX_LPSR(低功耗场景 DMA 通道多路复用器)则为 EDMA_LPSR 提供服务。

        DMAMUX可将被称为时隙(slot) 的 DMA 源路由至 32 个 DMA 通道中的任意一个。

2、模块框图

3、模块特性

  • 最多 208 个外设时隙可路由至 32 个通道。
  • 32 个可独立选择的 DMA 通道路由器。
  • 每个通道输出可单独配置为 "Always On" 模式,不依赖任何外设时隙。
  • 前 4 个通道额外提供触发功能。
  • 每个通道路由器可分配至任一可用的外设 DMA 时隙。
  • 当任一通道的存储器映射配置发生变更时,该模块会向 DMA 控制器发送信号,以重置该通道的内部状态机,使其能够基于新配置接收新请求。

4、工作模式

  • 禁用模式(Disabled mode)
    在此模式下,DMA 通道被禁用。由于 DMA 通道的禁用与使能主要通过 DMA 配置寄存器完成,因此该模式主要用作 DMA 通道多路复用器(MUX)中 DMA 通道的复位状态。此外,该模式也可用于在系统重新配置期间(例如修改 DMA 触发周期时)暂时挂起 DMA 通道。

  • 正常模式(Normal mode)
    在此模式下,DMA 源被直接路由至指定的 DMA 通道。此模式下 DMAMUX 的工作对系统完全透明。

  • 周期性触发模式(Periodic Trigger mode)
    在此模式下,DMA 源仅能周期性地发起 DMA 传输请求(例如发送缓冲区为空或接收缓冲区满时)。周期配置在周期性中断定时器(PIT)的寄存器中完成。该模式仅适用于 0 至 3 号通道。

6、应用信息(MUX的初始化说明)

6.1 使能与配置源

如需使能带周期性触发功能的源,操作如下:

  1. 确定该源将关联到哪个 DMA 通道。注意,仅前 4 个 DMA 通道具备周期性触发能力。
  2. 清除该 DMA 通道的 CHCFG [ENBL] 和 CHCFG [TRIG] 字段。
  3. 确保 DMA 中的该通道已正确配置。此时可使能该 DMA 通道。
  4. 配置对应的定时器。
  5. 选择需要路由至 DMA 通道的源。写入相应的 CHCFG 寄存器,并确保 CHCFG [ENBL] 和 CHCFG [TRIG] 字段已置位。

示例:

如需将 5 号源的发送功能配置为与 DMA 通道 1 配合使用,并启用周期性触发能力,操作如下:

  1. 向 CHCFG1 寄存器写入 0x00000000。
  2. 在 DMA 中配置通道 1,包括使能该通道。
  3. 配置定时器以设置所需的触发间隔。
  4. 向 CHCFG1 寄存器写入 0xC0000005。

使能无周期性触发的源

操作步骤如下:

  1. 确定该源将关联到哪个 DMA 通道。注意,仅前 4 个 DMA 通道具备周期性触发能力。
  2. 清除该 DMA 通道的 CHCFG [ENBL] 和 CHCFG [TRIG] 字段。
  3. 确保 DMA 中的该通道已正确配置。此时可使能该 DMA 通道。
  4. 选择需要路由至 DMA 通道的源。写入相应的 CHCFG 寄存器,确保 CHCFG [ENBL] 字段置位,同时 CHCFG [TRIG] 字段清零。

示例:

如需将 5 号源的发送功能配置为与 DMA 通道 1 配合使用,且不启用周期性触发能力,操作如下:

  1. 向 CHCFG1 寄存器写入 0x00000000。
  2. 在 DMA 中配置通道 1,包括使能该通道。
  3. 向 CHCFG1 寄存器写入 0x80000005。

禁用源

若要禁用特定的 DMA 源,可不对任何 CHCFG 寄存器写入对应的源值。此外,可能还需要进行一些模块特定的配置。

切换 DMA 通道的源

  1. 在 DMA 中禁用该 DMA 通道,并为新源重新配置通道。
  2. 清除该 DMA 通道的 CHCFG [ENBL] 和 CHCFG [TRIG] 位。
  3. 选择需要路由至该 DMA 通道的源。写入相应的 CHCFG 寄存器,确保 CHCFG [ENBL] 和 CHCFG [TRIG] 字段已置位。

将 DMA 通道 8 的源从 5 号发送源切换至 7 号发送源

  1. 在 DMA 配置寄存器中,禁用 DMA 通道 8,并将其重新配置为处理至外设时隙 7 的传输。本示例假设通道 8 不具备触发能力。
  2. 向 CHCFG8 寄存器写入 0x00000000。
  3. 向 CHCFG8 寄存器写入 0x80000007。(在本示例中,由于假设通道 8 不支持周期性触发功能,因此设置 CHCFG [TRIG] 字段不会产生任何效果。)

7、配置选项

ENBL(通道使能位)TRIG(触发使能位)A_ON(始终使能位)FunctionMode
0XXDMA 通道禁用禁用模式
100DMA 通道使能,无触发正常模式
110DMA 通道使能,带触发功能周期性触发模式
101DMA 通道始终使能始终使能模式
111DMA 通道始终使能,且带触发功能始终使能触发模式

8、寄存器解读

偏移地址(十六进制)寄存器位宽(比特)访问方式复位值(十六进制)
0 - 7C通道 a 配置寄存器(CHCFG0 - CHCFG31)32读写(RW)0000_0000

位号解析:

字段说明
31ENBLDMA 多路复用器通道使能
使能 DMA 多路复用器的通道。DMA 有独立的通道使能 / 禁用控制,应使用这些控制来禁用或重新配置 DMA 通道。
0 - DMA 多路复用器通道禁用
1 - DMA 多路复用器通道使能
30TRIGDMA 通道触发使能
使能触发型 DMA 通道的周期性触发功能。
0 - 触发禁用。若触发禁用且 ENBL 置位,DMA 通道将直接把指定源路由至 DMA 通道(正常模式)
1 - 触发使能。若触发使能且 ENBL 置位,DMA_CH_MUX 工作在周期性触发模式
29A_ONDMA 通道始终使能
使能 DMA 通道的始终开启功能。若 TRIG 位置位,模块将在每次触发时发出请求。
0 - DMA 通道始终开启功能禁用
1 - DMA 通道始终开启功能使能
28-8保留字段
7-0SOURCEDMA 通道源(时隙编号)
指定路由至特定 DMA 通道的 DMA 源(若有)。有关外设及其时隙编号的详情,请参见芯片专用的 DMA_CH_MUX 信息

http://www.xdnf.cn/news/1203679.html

相关文章:

  • Spring AI 1.0 提供简单的 AI 系统和服务
  • TS面试题
  • 分布式IO详解:2025年分布式无线远程IO采集控制方案选型指南
  • simple-mock-proxy,自动拾取后端接口数据,生成本地mock接口与数据
  • idea启动java应用报错
  • keepalived原理及实战部署
  • vue怎么实现导入excel表功能
  • 最新!Polkadot 更新 2025 路线图
  • C++-关于协程的一些思考
  • ERC20 和 XCM Precompile|详解背后技术逻辑
  • 【Kotlin】如何实现静态方法?(单例类、伴生对象、@JvmStatic)
  • Android中应用进程中Binder创建机制
  • VUE2 学习笔记11 脚手架
  • 从0到500账号管理:亚矩阵云手机多开组队与虚拟定位实战指南
  • 数据结构之顺序表链表栈
  • 分享一个脚本,从mysql导出数据csv到hdfs临时目录
  • CFIHL: 水培生菜的多种叶绿素 a 荧光瞬态图像数据集
  • 雷达系统设计学习:自制6GHz FMCW Radar
  • 深入解析 Spring 获取 XML 验证模式的过程
  • 可以组成网络的服务器 - 华为OD统一考试(JavaScript 题解)
  • 速度革命 Kingston FURY PCIe 5.0 NVMe装机体验
  • 第四章:分析 Redis 性能高原因和核心字符串类型命令
  • 15-C语言:第15天笔记
  • Nginx 四层(stream)反向代理 + DNS 负载均衡
  • Java面试深度剖析:从JVM到云原生的技术演进
  • JVM 内存共享区域详解
  • 解决cordova编译安卓提示Cloud not find XXXX.aar
  • windows内核研究(异常-CPU异常记录)
  • C++ 内存管理
  • 图像轮廓与凸包