.. _ip_ls_intf_udma: UDMA ===== 1. 简介 >>>>>>> 微直接内存访问(UDMA)控制器作为一种硬件方案,可在外围设备/内存与内存(PA-M2M/M2M)之间实现无需CPU干预的直接数据传输,旨在在需要传输大数据块时减轻 CPU 的负担。 2. 主要特性 >>>>>>>>>>> UMMA 的主要特性如下: * 支持8个内存到内存通道(M2M),并具备软件可配置优先级。 * 支持8个外围通道用于外围设备与内存的传输(PA-M2M)。 * 支持6种(外围紧密耦合)PER类型的内存-外围设备传输模式(P2M)。 * 支持突发1-16次传输访问模式(仅M2M)。 * 支持可配置数据宽度8、16、32、64、128位用于内存访问(取决于数据总线宽度)。 * 支持固定或递增的地址生成算法。 * 支持内存到内存连续传输模式或可配置重复N次的传输模式。 * 支持独立设置源地址和目标地址基址,支持按字节、半字或字对齐。 * 支持任意传输块大小,范围在(32M-1)字节之间。 **注意:** * 具体支持的通道数依赖硬件RTL的配置。 * 依赖硬件RTL的配置,数据宽度可支持8、16、32、64、128、256、512位。 3. 功能描述 >>>>>>>>>>> * DMA 顶部有两个主内部总线接口(写总线和读总线)用于访问内存。 * DMA 配置编程通过另一个专用的从寄存器总线进行。 * PER 类型(外设到内存/内存到外设)传输采用外设请求/DMA 响应风格。也就是说,CPU 或 SoC 上的任何其他主设备在适当的内存位置准备好感兴趣的数据(或在接收数据场景下有足够的内存空间),可以通过编程相应的外设 TX/RX 使能位来启动 DMA 传输,前提是所有其他配置寄存器(如基地址、传输大小等)已正确配置。 * 支持最多 8 个内存到内存传输通道,可以通过编程 DMA 控制器内的相应配置和控制位来实现。内存到内存传输通道之间的优先级可在四个级别上软件配置:Plow、Pmed、Phigh 和 Puhigh。在多个内存到内存传输具有相同优先级设置的情况下,通道号决定最终优先级(编号越低优先级越高)。 * 通过配置专用的链表地址 (LLA) 寄存器可以轻松启用链表模式。在整个链表传输过程的每个节点上都支持重复类型的传输模式。但是,连续传输模式不允许与链表传输模式同时工作,更多详细信息见 LLA 寄存器描述。 * 除了常规的内存到内存传输外,还支持另一种涉及外设的数据传输类型。在此模式下,源或目标具有外设属性(外设到内存)。必须首先正确配置相应的 DMA 通道,例如传输大小、源地址、目标地址和数据大小。一旦通道启用,DMA 会确认外设发起的每个请求,在此期间进行一次数据传输(字节、半字、字)。 * 为避免一种类型的 DMA 传输(内存到内存或外设到内存)持续占用物理总线接口,当两种类型的传输并行运行时,采用循环仲裁方案。 * UDMA 应用框图如图 3.1 所示 .. _UDMA 应用框图如图: .. figure:: /assets/images/udma_block.jpg :alt: UDMA 应用框图如图 :align: center **图 3.1: UDMA 应用框图** 4. 中断 >>>>>>> 控制器为每种 uDMA 数据传输提供 3 组中断。中断源也可以通过 DMA_CHX_IRQ_EN、DMA_PA_CHX_IRQ_EN 和 DMA_PCHX_IRQ_EN 寄存器单独启用或禁用。 设置相应的寄存器位以启用/禁用相应的中断。在以下事件上生成不同的中断: * 用于数据传输的通道访问错误中断 * 用于一个 TSIZE 的通道半传输中断 * 用于一个 TSIZE 的通道全传输中断 * 用于加载链接配置寄存器的通道访问错误中断 * 用于整个链表的通道全传输中断 * PA 类型通道访问错误中断 * PA 类型通道半传输中断 * PA 类型通道全传输中断 * Tx 通道访问错误中断 * Tx 通道半传输中断 * Tx 通道全传输中断 * Rx 通道访问错误中断 * Rx 通道半传输中断 * Rx 通道全传输中断 * CMD 通道访问错误中断 * CMD 通道半传输中断 * CMD 通道全传输中断 表 4.1 展示了 uDMA 中断请求。 .. list-table:: 表 4.1:uDMA 中断请求 :widths: 20 15 20 :header-rows: 1 * - 中断事件 - 事件标志 - 使能控制位 * - 访问错误中断 - RSP_ERR_IRQ_STAT - RSP_ERR_IRQ_EN * - 半传输中断 - HTRANS_IRQ_STAT - HTRANS_IRQ_EN * - 全传输中断 - FTRANS_IRQ_STAT - FTRANS_IRQ_EN * - 加载链接配置寄存器的通道访问错误中断 - LLA_ERR_IRQ_STAT - LLA_ERR_IRQ_EN * - 链表的通道全传输中断 - LLA_FTRANS_IRQ_STAT - LLA_FTRANS_IRQ_EN * - PA 类型通道访问错误中断 - RSP_ERR_IRQ_STAT - RSP_ERR_IRQ_EN * - PA 类型通道半传输中断 - HTRANS_IRQ_STAT - HTRANS_IRQ_EN * - PA 类型通道全传输中断 - FTRANS_IRQ_STAT - FTRANS_IRQ_EN * - Tx 通道访问错误中断 - RSP_ERR_IRQ_STAT - RSP_ERR_IRQ_EN * - Tx 通道半传输中断 - HTRANS_IRQ_STAT - HTRANS_IRQ_EN * - Tx 通道全传输中断 - FTRANS_IRQ_STAT - FTRANS_IRQ_EN * - Rx 通道访问错误中断 - RSP_ERR_IRQ_STAT - RSP_ERR_IRQ_EN * - Rx 通道半传输中断 - HTRANS_IRQ_STAT - HTRANS_IRQ_EN * - Rx 通道全传输中断 - FTRANS_IRQ_STAT - FTRANS_IRQ_EN * - CMD 通道访问错误中断 - RSP_ERR_IRQ_STAT - RSP_ERR_IRQ_EN * - CMD 通道半传输中断 - HTRANS_IRQ_STAT - HTRANS_IRQ_EN * - CMD 通道全传输中断 - FTRANS_IRQ_STAT - FTRANS_IRQ_EN 5. UDMA 寄存器 >>>>>>>>>>>>>> UDMA 中的寄存器及其相应偏移量如表 5.1 所示。 .. list-table:: 表 5.1:UDMA 寄存器偏移地址表 :widths: 10 25 46 :header-rows: 1 * - 偏移量 - 寄存器名称 - 功能描述 * - 0x0 - DMA_CFG_PCTRL - 时钟门控寄存器(仅当在 RTL 级别配置了外设支持时存在) * - 0x4 - DMA_CFG_EVENT - 事件 ID 寄存器(仅当在 RTL 级别配置了外设支持时存在) * - 0x8 - DMA_CH0_CFG_MSRCADDR - 通道 0 源数据基地址低32位寄存器 * - 0xC - DMA_CH0_CFG_MDSTADDR - 通道 0 目标数据基地址低32位寄存器 * - 0x10 - DMA_CH0_CFG_MCTRL - 通道 0 内存到内存控制寄存器 * - 0x14 - DMA_CH0_CFG_MRPT - 通道 0 传输重复次数寄存器 * - 0x18 - DMA_CH0_CFG_MSIZE - 传输大小寄存器 * - 0x1C - DMA_CH0_CFG_MSRCADDR_H - 通道 0 高于 32 位的源数据基地址寄存器 * - 0x20 - DMA_CH0_CFG_MDSTADDR_H - 通道 0 高于 32 位的目标数据基地址寄存器 * - 0x24 - DMA_CH0_CFG_MRAU - 通道 0 重复地址更新值寄存器,链表模式配置 * - 0x28 - DMA_CH0_CFG_MLLA - 通道 0 链表地址低32位寄存器 * - 0x2C - DMA_CH0_CFG_MLLA_H - 通道 0 高于 32 位的链表地址寄存器 * - 0x30 - DMA_CH1_CFG_MSRCADDR - 通道 1 源数据基地址低32位寄存器 * - 0x34 - DMA_CH1_CFG_MDSTADDR - 通道 1 目标数据基地址低32位寄存器 * - 0x38 - DMA_CH1_CFG_MCTRL - 通道 1 内存到内存控制寄存器 * - 0x3C - DMA_CH1_CFG_MRPT - 通道 1 传输重复次数寄存器 * - 0x40 - DMA_CH1_CFG_MSIZE - 通道 1 传输大小寄存器 * - 0x44 - DMA_CH1_CFG_MSRCADDR_H - 通道 1 高于 32 位的源数据基地址寄存器 * - 0x48 - DMA_CH1_CFG_MDSTADDR_H - 通道 1 高于 32 位的目标数据基地址寄存器 * - 0x4C - DMA_CH1_CFG_MRAU - 通道 1 重复地址更新值寄存器,链表模式配置 * - 0x50 - DMA_CH1_CFG_MLLA - 通道 1 链表地址低32位寄存器 * - 0x54 - DMA_CH1_CFG_MLLA_H - 通道 1 高于 32 位的链表地址寄存器 * - 0x58 - DMA_CH2_CFG_MSRCADDR - 通道 2 源数据基地址低32位寄存器 * - 0x5C - DMA_CH2_CFG_MDSTADDR - 通道 2 目标数据基地址低32位寄存器 * - 0x60 - DMA_CH2_CFG_MCTRL - 通道 2 内存到内存控制寄存器 * - 0x64 - DMA_CH2_CFG_MRPT - 通道 2 传输重复次数寄存器 * - 0x68 - DMA_CH2_CFG_MSIZE - 通道 2 传输大小寄存器 * - 0x6C - DMA_CH2_CFG_MSRCADDR_H - 通道 2 高于 32 位的源数据基地址寄存器 * - 0x70 - DMA_CH2_CFG_MDSTADDR_H - 通道 2 高于 32 位的目标数据基地址寄存器 * - 0x74 - DMA_CH2_CFG_MRAU - 通道 2 重复地址更新值寄存器,链表模式配置 * - 0x78 - DMA_CH2_CFG_MLLA - 通道 2 链表地址低32位寄存器 * - 0x7C - DMA_CH2_CFG_MLLA_H - 通道 2 高于 32 位的链表地址寄存器 * - 0x80 - DMA_CH3_CFG_MSRCADDR - 通道 3 源数据基地址低32位寄存器 * - 0x84 - DMA_CH3_CFG_MDSTADDR - 通道 3 目标数据基地址低32位寄存器 * - 0x88 - DMA_CH3_CFG_MCTRL - 通道 3 内存到内存控制寄存器 * - 0x8C - DMA_CH3_CFG_MRPT - 通道 3 传输重复次数寄存器 * - 0x90 - DMA_CH3_CFG_MSIZE - 通道 3 传输大小寄存器 * - 0x94 - DMA_CH3_CFG_MSRCADDR_H - 通道 3 高于 32 位的源数据基地址寄存器 * - 0x98 - DMA_CH3_CFG_MDSTADDR_H - 通道 3 高于 32 位的目标数据基地址寄存器 * - 0x9C - DMA_CH3_CFG_MRAU - 通道 3 重复地址更新值寄存器,链表模式配置 * - 0xA0 - DMA_CH3_CFG_MLLA - 通道 3 链表地址低32位寄存器 * - 0xA4 - DMA_CH3_CFG_MLLA_H - 通道 3 高于 32 位的链表地址寄存器 * - 0xA8 - DMA_CH4_CFG_MSRCADDR - 通道 4 源数据基地址低32位寄存器 * - 0xAC - DMA_CH4_CFG_MDSTADDR - 通道 4 目标数据基地址低32位寄存器 * - 0xB0 - DMA_CH4_CFG_MCTRL - 通道 4 内存到内存控制寄存器 * - 0xB4 - DMA_CH4_CFG_MRPT - 通道 4 传输重复次数寄存器 * - 0xB8 - DMA_CH4_CFG_MSIZE - 通道 4 传输大小寄存器 * - 0xBC - DMA_CH4_CFG_MSRCADDR_H - 通道 4 高于 32 位的源数据基地址寄存器 * - 0xC0 - DMA_CH4_CFG_MDSTADDR_H - 通道 4 高于 32 位的目标数据基地址寄存器 * - 0xC4 - DMA_CH4_CFG_MRAU - 通道 4 重复地址更新值寄存器,链表模式配置 * - 0xC8 - DMA_CH4_CFG_MLLA - 通道 4 链表地址低32位寄存器 * - 0xCC - DMA_CH4_CFG_MLLA_H - 通道 4 高于 32 位的链表地址寄存器 * - 0xD0 - DMA_CH5_CFG_MSRCADDR - 通道 5 源数据基地址低32位寄存器 * - 0xD4 - DMA_CH5_CFG_MDSTADDR - 通道 5 目标数据基地址低32位寄存器 * - 0xD8 - DMA_CH5_CFG_MCTRL - 通道 5 内存到内存控制寄存器 * - 0xDC - DMA_CH5_CFG_MRPT - 通道 5 传输重复次数寄存器 * - 0xE0 - DMA_CH5_CFG_MSIZE - 通道 5 传输大小寄存器 * - 0xE4 - DMA_CH5_CFG_MSRCADDR_H - 通道 5 高于 32 位的源数据基地址寄存器 * - 0xE8 - DMA_CH5_CFG_MDSTADDR_H - 通道 5 高于 32 位的目标数据基地址寄存器 * - 0xEC - DMA_CH5_CFG_MRAU - 通道 5 重复地址更新值寄存器,链表模式配置 * - 0xF0 - DMA_CH5_CFG_MLLA - 通道 5 链表地址低32位寄存器 * - 0xF4 - DMA_CH5_CFG_MLLA_H - 通道 5 高于 32 位的链表地址寄存器 * - 0xF8 - DMA_CH6_CFG_MSRCADDR - 通道 6 源数据基地址低32位寄存器 * - 0xFC - DMA_CH6_CFG_MDSTADDR - 通道 6 目标数据基地址低32位寄存器 * - 0x100 - DMA_CH6_CFG_MCTRL - 通道 6 内存到内存控制寄存器 * - 0x104 - DMA_CH6_CFG_MRPT - 通道 6 传输重复次数寄存器 * - 0x108 - DMA_CH6_CFG_MSIZE - 通道 6 传输大小寄存器 * - 0x10C - DMA_CH6_CFG_MSRCADDR_H - 通道 6 高于 32 位的源数据基地址寄存器 * - 0x110 - DMA_CH6_CFG_MDSTADDR_H - 通道 6 高于 32 位的目标数据基地址寄存器 * - 0x114 - DMA_CH6_CFG_MRAU - 通道 6 重复地址更新值寄存器,链表模式配置 * - 0x118 - DMA_CH6_CFG_MLLA - 通道 6 链表地址低32位寄存器 * - 0x11C - DMA_CH6_CFG_MLLA_H - 通道 6 高于 32 位的链表地址寄存器 * - 0x120 - DMA_CH7_CFG_MSRCADDR - 通道 7 源数据基地址低32位寄存器 * - 0x124 - DMA_CH7_CFG_MDSTADDR - 通道 7 目标数据基地址低32位寄存器 * - 0x128 - DMA_CH7_CFG_MCTRL - 通道 7 内存到内存控制寄存器 * - 0x12C - DMA_CH7_CFG_MRPT - 通道 7 传输重复次数寄存器 * - 0x130 - DMA_CH7_CFG_MSIZE - 通道 7 传输大小寄存器 * - 0x134 - DMA_CH7_CFG_MSRCADDR_H - 通道 7 高于 32 位的源数据基地址寄存器 * - 0x138 - DMA_CH7_CFG_MDSTADDR_H - 通道 7 高于 32 位的目标数据基地址寄存器 * - 0x13C - DMA_CH7_CFG_MRAU - 通道 7 重复地址更新值寄存器,链表模式配置 * - 0x140 - DMA_CH7_CFG_MLLA - 通道 7 链表地址低32位寄存器 * - 0x144 - DMA_CH7_CFG_MLLA_H - 通道 7 高于 32 位的链表地址寄存器 * - 0x400 - DMA_PA_CH0_CFG_MSRCADDR - 通道 0 源数据基地址寄存器(PA类型) * - 0x404 - DMA_PA_CH0_CFG_MDSTADDR - 通道 0 目标数据基地址寄存器(PA类型) * - 0x408 - DMA_PA_CH0_CFG_MCTRL - 通道 0 PA 类型内存到内存控制寄存器 * - 0x40C - DMA_PA_CH0_CFG_MSIZE - 通道 0 传输大小寄存器(PA类型) * - 0x410 - DMA_PA_CH0_CFG_MSRCADDR_H - 通道 0 高于 32 位的源数据基地址寄存器(PA类型) * - 0x414 - DMA_PA_CH0_CFG_MDSTADDR_H - 通道 0 高于 32 位的目标数据基地址寄存器(PA类型) * - 0x418 - DMA_PA_CH1_CFG_MSRCADDR - 通道 1 源数据基地址寄存器(PA类型) * - 0x41C - DMA_PA_CH1_CFG_MDSTADDR - 通道 1 目标数据基地址寄存器(PA类型) * - 0x420 - DMA_PA_CH1_CFG_MCTRL - 通道 1 PA 类型内存到内存控制寄存器 * - 0x424 - DMA_PA_CH1_CFG_MSIZE - 通道 1 传输大小寄存器(PA类型) * - 0x428 - DMA_PA_CH1_CFG_MSRCADDR_H - 通道 1 高于 32 位的源数据基地址寄存器(PA类型) * - 0x42C - DMA_PA_CH1_CFG_MDSTADDR_H - 通道 1 高于 32 位的目标数据基地址寄存器(PA类型) * - 0x430 - DMA_PA_CH2_CFG_MSRCADDR - 通道 2 源数据基地址寄存器(PA类型) * - 0x434 - DMA_PA_CH2_CFG_MDSTADDR - 通道 2 目标数据基地址寄存器(PA类型) * - 0x438 - DMA_PA_CH2_CFG_MCTRL - 通道 2 PA 类型内存到内存控制寄存器 * - 0x43C - DMA_PA_CH2_CFG_MSIZE - 通道 2 传输大小寄存器(PA类型) * - 0x440 - DMA_PA_CH2_CFG_MSRCADDR_H - 通道 2 高于 32 位的源数据基地址寄存器(PA类型) * - 0x444 - DMA_PA_CH2_CFG_MDSTADDR_H - 通道 2 高于 32 位的目标数据基地址寄存器(PA类型) * - 0x448 - DMA_PA_CH3_CFG_MSRCADDR - 通道 3 源数据基地址寄存器(PA类型) * - 0x44C - DMA_PA_CH3_CFG_MDSTADDR - 通道 3 目标数据基地址寄存器(PA类型) * - 0x450 - DMA_PA_CH3_CFG_MCTRL - 通道 3 PA 类型内存到内存控制寄存器 * - 0x454 - DMA_PA_CH3_CFG_MSIZE - 通道 3 传输大小寄存器(PA类型) * - 0x458 - DMA_PA_CH3_CFG_MSRCADDR_H - 通道 3 高于 32 位的源数据基地址寄存器(PA类型) * - 0x45C - DMA_PA_CH3_CFG_MDSTADDR_H - 通道 3 高于 32 位的目标数据基地址寄存器(PA类型) * - 0x460 - DMA_PA_CH4_CFG_MSRCADDR - 通道 4 源数据基地址寄存器(PA类型) * - 0x464 - DMA_PA_CH4_CFG_MDSTADDR - 通道 4 目标数据基地址寄存器(PA类型) * - 0x468 - DMA_PA_CH4_CFG_MCTRL - 通道 4 PA 类型内存到内存控制寄存器 * - 0x46C - DMA_PA_CH4_CFG_MSIZE - 通道 4 传输大小寄存器(PA类型) * - 0x470 - DMA_PA_CH4_CFG_MSRCADDR_H - 通道 4 高于 32 位的源数据基地址寄存器(PA类型) * - 0x474 - DMA_PA_CH4_CFG_MDSTADDR_H - 通道 4 高于 32 位的目标数据基地址寄存器(PA类型) * - 0x478 - DMA_PA_CH5_CFG_MSRCADDR - 通道 5 源数据基地址寄存器(PA类型) * - 0x47C - DMA_PA_CH5_CFG_MDSTADDR - 通道 5 目标数据基地址寄存器(PA类型) * - 0x480 - DMA_PA_CH5_CFG_MCTRL - 通道 5 PA 类型内存到内存控制寄存器 * - 0x484 - DMA_PA_CH5_CFG_MSIZE - 通道 5 传输大小寄存器(PA类型) * - 0x488 - DMA_PA_CH5_CFG_MSRCADDR_H - 通道 5 高于 32 位的源数据基地址寄存器(PA类型) * - 0x48C - DMA_PA_CH5_CFG_MDSTADDR_H - 通道 5 高于 32 位的目标数据基地址寄存器(PA类型) * - 0x490 - DMA_PA_CH6_CFG_MSRCADDR - 通道 6 源数据基地址寄存器(PA类型) * - 0x494 - DMA_PA_CH6_CFG_MDSTADDR - 通道 6 目标数据基地址寄存器(PA类型) * - 0x498 - DMA_PA_CH6_CFG_MCTRL - 通道 6 PA 类型内存到内存控制寄存器 * - 0x49C - DMA_PA_CH6_CFG_MSIZE - 通道 6 传输大小寄存器(PA类型) * - 0x4A0 - DMA_PA_CH6_CFG_MSRCADDR_H - 通道 6 高于 32 位的源数据基地址寄存器(PA类型) * - 0x4A4 - DMA_PA_CH6_CFG_MDSTADDR_H - 通道 6 高于 32 位的目标数据基地址寄存器(PA类型) * - 0x4A8 - DMA_PA_CH7_CFG_MSRCADDR - 通道 7 源数据基地址寄存器(PA类型) * - 0x4AC - DMA_PA_CH7_CFG_MDSTADDR - 通道 7 目标数据基地址寄存器(PA类型) * - 0x4B0 - DMA_PA_CH7_CFG_MCTRL - 通道 7 PA 类型内存到内存控制寄存器 * - 0x4B4 - DMA_PA_CH7_CFG_MSIZE - 通道 7 传输大小寄存器(PA类型) * - 0x4B8 - DMA_PA_CH7_CFG_MSRCADDR_H - 通道 7 高于 32 位的源数据基地址寄存器(PA类型) * - 0x4BC - DMA_PA_CH7_CFG_MDSTADDR_H - 通道 7 高于 32 位的目标数据基地址寄存器(PA类型) * - 0x800 - DMA_CH0_IRQ_EN - M2M 通道0中断使能寄存器 * - 0x804 - DMA_CH0_IRQ_STAT - M2M 通道0中断状态标志寄存器 * - 0x808 - DMA_CH0_IRQ_CLR - M2M 通道0中断清除状态寄存器 * - 0x80C - DMA_CH1_IRQ_EN - M2M 通道1中断使能寄存器 * - 0x810 - DMA_CH1_IRQ_STAT - M2M 通道1中断状态标志寄存器 * - 0x814 - DMA_CH1_IRQ_CLR - M2M 通道1中断清除状态寄存器 * - 0x818 - DMA_CH2_IRQ_EN - M2M 通道2中断使能寄存器 * - 0x81C - DMA_CH2_IRQ_STAT - M2M 通道2中断状态标志寄存器 * - 0x820 - DMA_CH2_IRQ_CLR - M2M 通道2中断清除状态寄存器 * - 0x824 - DMA_CH3_IRQ_EN - M2M 通道3中断使能寄存器 * - 0x828 - DMA_CH3_IRQ_STAT - M2M 通道3中断状态标志寄存器 * - 0x82C - DMA_CH3_IRQ_CLR - M2M 通道3中断清除状态寄存器 * - 0x830 - DMA_CH4_IRQ_EN - M2M 通道4中断使能寄存器 * - 0x834 - DMA_CH4_IRQ_STAT - M2M 通道4中断状态标志寄存器 * - 0x838 - DMA_CH4_IRQ_CLR - M2M 通道4中断清除状态寄存器 * - 0x83C - DMA_CH5_IRQ_EN - M2M 通道5中断使能寄存器 * - 0x840 - DMA_CH5_IRQ_STAT - M2M 通道5中断状态标志寄存器 * - 0x844 - DMA_CH5_IRQ_CLR - M2M 通道5中断清除状态寄存器 * - 0x848 - DMA_CH6_IRQ_EN - M2M 通道6中断使能寄存器 * - 0x84C - DMA_CH6_IRQ_STAT - M2M 通道6中断状态标志寄存器 * - 0x850 - DMA_CH6_IRQ_CLR - M2M 通道6中断清除状态寄存器 * - 0x854 - DMA_CH7_IRQ_EN - M2M 通道7中断使能寄存器 * - 0x858 - DMA_CH7_IRQ_STAT - M2M 通道7中断状态标志寄存器 * - 0x85C - DMA_CH7_IRQ_CLR - M2M 通道7中断清除状态寄存器 * - 0xA00 - DMA_PA_CH0_IRQ_EN - PA 类型通道0中断使能寄存器 * - 0xA04 - DMA_PA_CH0_IRQ_STAT - PA 类型通道0中断状态标志寄存器 * - 0xA08 - DMA_PA_CH0_IRQ_CLR - PA 类型通道0中断清除状态寄存器 * - 0xA0C - DMA_PA_CH1_IRQ_EN - PA 类型通道 1 中断使能寄存器 * - 0xA10 - DMA_PA_CH1_IRQ_STAT - PA 类型通道 1 中断状态标志寄存器 * - 0xA14 - DMA_PA_CH1_IRQ_CLR - PA 类型通道 1 中断清除状态寄存器 * - 0xA18 - DMA_PA_CH2_IRQ_EN - PA 类型通道 2 中断使能寄存器 * - 0xA1C - DMA_PA_CH2_IRQ_STAT - PA 类型通道 2 中断状态标志寄存器 * - 0xA20 - DMA_PA_CH2_IRQ_CLR - PA 类型通道 2 中断清除状态寄存器 * - 0xA24 - DMA_PA_CH3_IRQ_EN - PA 类型通道 3 中断使能寄存器 * - 0xA28 - DMA_PA_CH3_IRQ_STAT - PA 类型通道 3 中断状态标志寄存器 * - 0xA2C - DMA_PA_CH3_IRQ_CLR - PA 类型通道 3 中断清除状态寄存器 * - 0xA30 - DMA_PA_CH4_IRQ_EN - PA 类型通道 4 中断使能寄存器 * - 0xA34 - DMA_PA_CH4_IRQ_STAT - PA 类型通道 4 中断状态标志寄存器 * - 0xA38 - DMA_PA_CH4_IRQ_CLR - PA 类型通道 4 中断清除状态寄存器 * - 0xA3C - DMA_PA_CH5_IRQ_EN - PA 类型通道 5 中断使能寄存器 * - 0xA40 - DMA_PA_CH5_IRQ_STAT - PA 类型通道 5 中断状态标志寄存器 * - 0xA44 - DMA_PA_CH5_IRQ_CLR - PA 类型通道 5 中断清除状态寄存器 * - 0xA48 - DMA_PA_CH6_IRQ_EN - PA 类型通道 6 中断使能寄存器 * - 0xA4C - DMA_PA_CH6_IRQ_STAT - PA 类型通道 6 中断状态标志寄存器 * - 0xA50 - DMA_PA_CH6_IRQ_CLR - PA 类型通道 6 中断清除状态寄存器 * - 0xA54 - DMA_PA_CH7_IRQ_EN - PA 类型通道 7 中断使能寄存器 * - 0xA58 - DMA_PA_CH7_IRQ_STAT - PA 类型通道 7 中断状态标志寄存器 * - 0xA5C - DMA_PA_CH7_IRQ_CLR - PA 类型通道 7 中断清除状态寄存器 * - 0xC00 - DMA_PCH0_IRQ_EN - P2M通道 0 中断使能寄存器 * - 0xC04 - DMA_PCH0_IRQ_STAT - P2M通道 0 中断状态标志寄存器 * - 0xC08 - DMA_PCH0_IRQ_CLR - P2M通道 0 中断清除状态寄存器 * - 0xC0C - DMA_PCH1_IRQ_EN - P2M通道 1 中断使能寄存器 * - 0xC10 - DMA_PCH1_IRQ_STAT - P2M通道 1 中断状态标志寄存器 * - 0xC14 - DMA_PCH1_IRQ_CLR - P2M通道 1 中断清除状态寄存器 * - 0xC18 - DMA_PCH2_IRQ_EN - P2M通道 2 中断使能寄存器 * - 0xC1C - DMA_PCH2_IRQ_STAT - P2M通道 2 中断状态标志寄存器 * - 0xC20 - DMA_PCH2_IRQ_CLR - P2M通道 2 中断清除状态寄存器 * - 0xC24 - DMA_PCH3_IRQ_EN - P2M通道 3 中断使能寄存器 * - 0xC28 - DMA_PCH3_IRQ_STAT - P2M通道 3 中断状态标志寄存器 * - 0xC2C - DMA_PCH3_IRQ_CLR - P2M通道 3 中断清除状态寄存器 * - 0xC30 - DMA_PCH4_IRQ_EN - P2M通道 4 中断使能寄存器 * - 0xC34 - DMA_PCH4_IRQ_STAT - P2M通道 4 中断状态标志寄存器 * - 0xC38 - DMA_PCH4_IRQ_CLR - P2M通道 4 中断清除状态寄存器 * - 0xC3C - DMA_PCH5_IRQ_EN - P2M通道 5 中断使能寄存器 * - 0xC40 - DMA_PCH5_IRQ_STAT - P2M通道 5 中断状态标志寄存器 * - 0xC44 - DMA_PCH5_IRQ_CLR - P2M通道 5 中断清除状态寄存器 * - 0xFFC - DMA_VERSION - uDMA 版本寄存器 DMA_CFG_PCTRL ------------- 地址偏移:0x0 .. list-table:: 表 5.2:DMA_CFG_PCTRL 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - pctrl_cg - 31:0 - RW - 0x0 - uDMA 关联外设的时钟门控使能 DMA_CFG_EVENT ------------- 地址偏移:0x4 .. list-table:: 表 5.3:DMA_CFG_EVENT 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - EVT0 - 7:0 - RW - 0xFF - ID 匹配这些位的外部事件将作为 event0 转发给外设 * - EVT1 - 15:8 - RW - 0xFF - ID 匹配这些位的外部事件将作为 event1 转发给外设 * - EVT2 - 23:16 - RW - 0xFF - ID 匹配这些位的外部事件将作为 event2 转发给外设 * - EVT0 - 31:24 - RW - 0xFF - ID 匹配这些位的外部事件将作为 event3 转发给外设 DMA_CHi_CFG_MSRCADDR -------------------- 地址偏移:0x8 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.4:DMA_CHi_CFG_MSRCADDR 寄存器格式 :widths: 15 10 10 15 40 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - SRC_BASE - 31:0 - RW - 0x0 - 内存到内存传输的源数据块基地址 DMA_CHi_CFG_MDSTADDR -------------------- 地址偏移:0xC + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.5:DMA_CHi_CFG_MDSTADDR 寄存器格式 :widths: 15 10 10 15 40 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DST_BASE - 31:0 - RW - 0x0 - 内存到内存传输的目标内存块基地址 DMA_CHi_CFG_MCTRL -------------------- 地址偏移:0x10 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.6:DMA_CHi_CFG_MCTRL 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - TRANS_EN - 0 - RW - 0x0 - - DMA 传输使能,置位该位将启动内存到内存 DMA 传输,可以通过软件清除,传输将在当前突发完成后停止。 - 当传输完成或发生传输错误响应时,硬件也会清除该位,当前传输将被中止。 - 1'b0: DMA 传输禁用 - 1'b1: DMA 传输使能 * - TRANS_STAT - 1 - RO - 0x0 - - 传输类型状态,该位准确反映实际通道状态:TRANS_EN为1 不能保证通道处于活动状态,因为其他更高优先级的通道可能仍有正在进行的传输,该通道只能排队等待进一步处理; - 只有当该通道实际正在进行传输时,软件才能读取到 '1'。 - 1'b0: 不能保证通道处于活动状态 - 1'b1: 该通道实际正在进行传输 * - OUTS_CTRL_EN - 2 - RW - 0x0 - - 传输未完成控制。 - 1'b0: DMA 传输未完成数限制为内部 DATA FIFO 深度的一半以确保正确功能 - 1'b1: DMA 传输未完成数最多可达 64 个总线事务 - 注意:将此位设置为 1 会使 DMA 数据传输引擎忽略外部读/写总线相互依赖性。这可能导致潜在的死锁,即由于读通道数据不足而无法启动读操作,同时写事务无法完成。建议此位仅用于测试目的。 * - 保留 - 4:3 - / - 0x0 - / * - BST_BND - 5 - RW - 0x0 - - 突发边界控制,定义 DMA 突发传输边界跨越选项。 - 1'b0: DMA 突发传输不能跨越 1k 边界地址 - 1'b1: DMA 突发传输可以跨越 1k 边界地址但不能跨越 4k * - TRANS_MODE - 7:6 - RW - 0x0 - - 传输模式选择。 - 2'b00: 单次模式传输 - 2'b01: 连续模式传输 - 2'b10: 传输重复模式,传输以相同的传输配置继续 N 次(在传输重复次数寄存器中定义) - 2'b11: 保留 * - PRIORITY - 9:8 - RW - 0x0 - - 内存到内存传输的优先级,多个 M2M 通道启用时的内存到内存传输优先级。 - 2'b00: 低 - 2'b01: 中 - 2'b10: 高 - 2'b11: 超高 * - 保留 - 11:10 - / - 0x0 - / * - MDNA - 12 - RW - 0x0 - - 传输数据到目标内存的下一个地址生成算法。 - 1'b0: 递增地址模式 - 1'b1: 固定地址模式,起始目标地址强制对齐 * - MSNA - 13 - RW - 0x0 - - 从源内存获取数据的下一个地址生成算法。 - 1'b0: 递增地址模式 - 1'b1: 固定地址模式,起始源地址强制对齐 * - 保留 - 15:14 - / - 0x0 - / * - MDWIDTH - 18:16 - RW - 0x0 - - 传输数据到目标的传输宽度。 - 3'b000: 8位 - 3'b001: 16位 - 3'b010: 32位 - 3'b011: 64位 - 3'b100: 128位 - 3'b101: 256位 - 3'b110: 512位 - 其他: 保留 * - 保留 - 20:19 - / - 0x0 - / * - MSWIDTH - 23:21 - RW - 0x0 - - 从源获取数据的传输宽度。 - 3'b000: 8位 - 3'b001: 16位 - 3'b010: 32位 - 3'b011: 64位 - 3'b100: 128位 - 3'b101: 256位 - 3'b110: 512位 - 其他: 保留 * - MDBURST - 27:24 - RW - 0x0 - - 传输数据到目标内存的突发中的传输次数。 - 4'b0000: 1 次传输 - 4'b0001: 2 次传输 - 4'b0010: 3 次传输 - 4'b0011: 4 次传输 - 4'b0100: 5 次传输 - 4'b0101: 6 次传输 - 4'b0110: 7 次传输 - 4'b0111: 8 次传输 - 4'b1000: 9 次传输 - 4'b1001: 10 次传输 - 4'b1010: 11 次传输 - 4'b1011: 12 次传输 - 4'b1100: 13 次传输 - 4'b1101: 14 次传输 - 4'b1110: 15 次传输 - 4'b1111: 16 次传输 * - MSBURST - 31:28 - RW - 0x0 - - 从源内存传输数据的突发中的传输次数。 - 4'b0000: 1 次传输 - 4'b0001: 2 次传输 - 4'b0010: 3 次传输 - 4'b0011: 4 次传输 - 4'b0100: 5 次传输 - 4'b0101: 6 次传输 - 4'b0110: 7 次传输 - 4'b0111: 8 次传输 - 4'b1000: 9 次传输 - 4'b1001: 10 次传输 - 4'b1010: 11 次传输 - 4'b1011: 12 次传输 - 4'b1100: 13 次传输 - 4'b1101: 14 次传输 - 4'b1110: 15 次传输 - 4'b1111: 16 次传输 **注意:** 只有在所有其他配置位正确配置后,才能设置 TRANS_EN 字段。 DMA_CHi_CFG_MRPT ---------------- 地址偏移:0x14 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.7:DMA_CHi_CFG_MRPT 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - TRANS_RPT - 11:0 - RW - 0x0 - 当 DMA_CFG_MCTRL.trans_mode 配置为传输重复模式时,此字段定义重复循环次数,且在启动 DMA 传输之前不允许配置为 0 * - RPT_IRQ_EN - 12 - RW - 0x0 - - 重复模式期间最后一次数据迭代的中断使能 - 1'b0: 每次重复传输迭代都会触发全/半传输中断 - 1'b1: 只有最后一次数据迭代才能触发全/半传输中断 * - 保留 - 15:13 - / - 0x0 - 内存到内存传输的目标内存块基地址 * - RPT_SAUM - 16 - RW - 0x0 - - 重复传输模式下的源地址更新模式 - 1'b0: 下一次传输迭代的源地址通过当前源地址寄存器值加上 RSAU 的值获得 - 1'b1: 下一次传输迭代的源地址通过当前源地址寄存器值减去 RSAU 的值获得 * - RPT_DAUM - 17 - RW - 0x0 - - 重复传输模式下的目标地址更新模式 - 1'b0: 下一次传输迭代的目标地址通过当前目标地址寄存器值加上 RDAU 的值获得 - 1'b1: 下一次传输迭代的目标地址通过当前目标地址寄存器值减去 RDAU 的值获得 * - 保留 - 31:18 - / - 0x0 - / DMA_CHi_CFG_MSIZE ----------------- 地址偏移:0x18 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.8:DMA_CHi_CFG_MSIZE 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - TSIZE - 24:0 - RW - 0x0 - - 一次 DMA 传输的字节数。启动传输时不允许配置为 '0',否则在 DMA 传输期间可能导致意外结果。这些位指示待传输的剩余字节数 - 如果 DMA_CFG_MCTRL.trans_mode 配置为 'b01 或 'b10(即连续或重复模式),在当前传输完成时,它会自动重新加载为其原始值以进行新的传输。 - DMA 传输错误可能会将寄存器冻结到最后一次成功传输的值,但对于下一个新的传输,它将重新开始并自动记录正确的剩余数据数量 * - 保留 - 31:25 - / - 0x0 - / DMA_Chi_CFG_MSRCADDR_H ---------------------- 地址偏移:0x1C + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.9:DMA_Chi_CFG_MSRCADDR_H 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - SRC_BASE_H - 15:0 - RW - 0x0 - 内存到内存传输的源数据块基地址的高位 * - 保留 - 31:16 - / - 0x0 - / **注意:** 当地址宽度大于 32 时,此寄存器可用。 DMA_Chi_CFG_MDSTADDR_H ---------------------- 地址偏移:0x20 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.10:DMA_Chi_CFG_MDSTADDR_H 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DST_BASE_H - 15:0 - RW - 0x0 - 内存到内存传输的目标内存块基地址的高位 * - 保留 - 31:16 - / - 0x0 - / **注意:** 当地址宽度大于 32 时,此寄存器可用。 DMA_Chi_CFG_MRAU ---------------- 地址偏移:0x24 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.11:DMA_Chi_CFG_MRAU 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - RSAU - 15:0 - RW - 0x0 - - 重复模式下,上一次重复传输迭代后的源地址更新值 - RPT_SAUM为 1 时,下一次传输迭代的源地址通过当前源地址寄存器值加上 RSAU 的值获得 - RPT_SAUM为 0 时,下一次传输迭代的源地址通过当前源地址寄存器值减去 RSAU 的值获得 * - RDAU - 31:16 - RW - 0x0 - - 重复模式下,上一次重复传输迭代后的目标地址更新值 - RPT_DAUM为 1 时,下一次传输迭代的目标地址通过当前目标地址寄存器值加上 RDAU 的值获得 - RPT_DAUM为 0 时,下一次传输迭代的目标地址通过当前目标地址寄存器值减去 RDAU 的值获得 DMA_Chi_CFG_MLLA ---------------- 地址偏移:0x28 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.12:DMA_Chi_CFG_MLLA 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LLA - 31:0 - RW - 0x0 - - 链表地址低32位 - 在(重复的)M2M 传输结束时,通道配置寄存器(MSRCADDR, MDSTADDR, MCTRL, MRPT, MSIZE, MSRCADDR_H, MDSTADDR_H, MRAU, MLLA 和 MLLA_H 本身)将从该寄存器值指定地址的内存位置加载。 - 加载的配置寄存器内容必须位于连续的地址空间,不像 MSIZE 和 MRAU 的地址在 DMA 总线宽度低于(或等于)32 位时有 8 字节的间隔(MSRCADDR_H, MDSTADDR_H)。 - 如果此 LLA 寄存器的值为 0,并且达到传输结束,则配置寄存器不会更新。 - 当软件使用 LLA 为非零值(启用链表)触发连续模式数据传输时,在软件编程通道使能位终止连续数据传输且整个通道传输完成后,链表模式将被忽略。 - 类似地,当通过加载 LLA 关联的配置寄存器检测到连续传输模式时,正在进行的链表传输将停止。此寄存器的值必须字对齐,以便正确加载配置寄存器,否则可能导致不正确的数据传输。 DMA_CHi_CFG_MLLA_H ------------------ 地址偏移:0x2C + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.13:DMA_CHi_CFG_MLLA_H 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LLA_H - 15:0 - RW - 0x0 - - 链表地址高位,该寄存器与 MLLA 结合使用,构成内存到内存传输的完整 LLA 地址 * - 保留 - 31:16 - / - 0x0 - / **注意:** 当地址宽度大于 32 时,此寄存器可用。 DMA_PA_CHi_CFG_MSRCADDR ----------------------- 地址偏移:0x400 + 24 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.14:DMA_PA_CHi_CFG_MSRCADDR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - SRC_BASE - 31:0 - RW - 0x0 - PA-MEM 传输的源数据块基地址 DMA_PA_CHi_CFG_MDSTADDR ----------------------- 地址偏移:0x404 + 24 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.15:DMA_PA_CHi_CFG_MDSTADDR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DST_BASE - 31:0 - RW - 0x0 - PA-MEM 传输的目标内存块基地址 DMA_PA_CHi_CFG_MCTRL -------------------- 地址偏移:0x408 + 24 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.16:DMA_PA_CHi_CFG_MCTRL 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - TRANS_EN - 0 - RW - 0x0 - - DMA 传输使能,置位该位将启动内存到内存 DMA 传输,可以通过软件清除,传输将在当前突发完成后停止。当传输完成或发生传输错误响应时,硬件也会清除该位,当前传输将被中止。 - 1'b0: DMA 传输禁用 - 1'b1: DMA 传输使能 * - 保留 - 5:1 - / - 0x0 - / * - TRANS_MODE - 7:6 - RW - 0x0 - - 传输模式选择。 - 2'b00: 单次模式传输 - 2'b01: 连续模式传输 - 2'b10: 保留 - 2'b11: 保留 * - 保留 - 11:8 - / - 0x0 - / * - MDNA - 12 - RW - 0x0 - - 传输数据到目标内存的下一个地址生成算法。 - 1'b0: 递增地址模式 - 1'b1: 固定地址模式,起始目标地址强制对齐 * - MSNA - 13 - RW - 0x0 - - 从源内存获取数据的下一个地址生成算法。 - 1'b0: 递增地址模式 - 1'b1: 固定地址模式,起始源地址强制对齐 * - 保留 - 15:14 - / - 0x0 - / * - MWIDTH - 18:16 - RW - 0x0 - - 传输宽度,源和目标传输使用相同的宽度。 - 3'b000: 8位 - 3'b001: 16位 - 3'b010: 32位 - 其他: 保留 * - 保留 - 23:19 - / - 0x0 - / * - TRANS_PER_SEL - 26:24 - RW - 0x0 - 外设映射选择,根据sdk生成的头文件来配置外设对应的映射通道。 * - 保留 - 31:27 - / - 0x0 - / **注意:** TRANS_EN 字段只有在所有其他配置位都正确配置后才能设置 DMA_PA_CH0_CFG_MSIZE -------------------- 地址偏移:0x40C + 24 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.17:DMA_PA_CH0_CFG_MSIZE 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - TSIZE - 24:0 - RW - 0x0 - - 一次 DMA 传输的字节数。启动传输时不允许配置为 '0',否则在 DMA 传输期间可能导致意外结果。这些位指示待传输的剩余字节数 - 如果 DMA_PA_CHx_CFG_MCTRL.trans_mode 配置为连续模式,在当前传输完成时,它会自动重新加载为其原始值以进行新的传输。 - DMA 传输错误可能会将寄存器冻结到最后一次成功传输的值,但对于下一个新的传输,它将重新开始并自动记录正确的剩余数据数量 * - 保留 - 31:25 - / - 0x0 - / **注意:** TSIZE 字段只能是 PA-MEM 控制器寄存器中 mwidth 字段值的整数倍 DMA_PA_Chi_CFG_MSRCADDR_H ------------------------- 地址偏移:0x410 + 24 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.18:DMA_PA_Chi_CFG_MSRCADDR_H 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - SRC_BASE_H - 15:0 - RW - 0x0 - PA-MEM 传输的源数据块基地址的高位 * - 保留 - 31:16 - / - 0x0 - / **注意:** 当地址宽度大于 32 时,此寄存器可用。 DMA_PA_Chi_CFG_MDSTADDR_H ------------------------- 地址偏移:0x20 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.19:DMA_PA_Chi_CFG_MDSTADDR_H 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DST_BASE_H - 15:0 - RW - 0x0 - PA-MEM 传输的目标内存块基地址的高位 * - 保留 - 31:16 - / - 0x0 - / **注意:** 当地址宽度大于 32 时,此寄存器可用。 DMA_CHi_IRQ_EN -------------- 地址偏移:0x800 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.20:DMA_CHi_IRQ_EN 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FTRANS_IRQ_EN - 0 - RW - 0x0 - 通道 i 在 TSIZE 数据上的全传输中断使能 * - HTRANS_IRQ_EN - 1 - RW - 0x0 - 通道 i 在 TSIZE 数据上的半传输中断使能 * - RSP_ERR_IRQ_EN - 2 - RW - 0x0 - 通道 i DMA 访问错误中断使能 * - LLA_ERR_IRQ_EN - 3 - RW - 0x0 - 通道 i 链接寄存器访问错误中断使能 * - LLA_FTRANS_IRQ_EN - 4 - RW - 0x0 - 通道 i 在链表模式下的全传输中断使能 * - 保留 - 31:5 - / - 0x0 - / DMA_CHi_IRQ_STAT ---------------- 地址偏移:0x804 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.21:DMA_CHi_IRQ_STAT 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FTRANS_IRQ_STAT - 0 - RO - 0x0 - 通道 i 在 TSIZE 数据上的全传输中断状态标志 * - HTRANS_IRQ_STAT - 1 - RO - 0x0 - 通道 i 在 TSIZE 数据上的半传输中断状态标志 * - RSP_ERR_IRQ_STAT - 2 - RO - 0x0 - 通道 i DMA 访问错误中断状态标志 * - LLA_ERR_IRQ_STAT - 3 - RO - 0x0 - 通道 i 链接寄存器访问错误中断状态标志 * - LLA_FTRANS_IRQ_STAT - 4 - RO - 0x0 - 通道 i 在链表模式下的全传输中断状态标志 * - 保留 - 31:5 - / - 0x0 - / DMA_CHi_IRQ_CLR --------------- 地址偏移:0x808 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.22:DMA_CHi_IRQ_CLR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FTRANS_IRQ_CLR - 0 - WO - 0x0 - 写 1 清除通道 i 在 TSIZE 数据上的全传输中断状态标志 * - HTRANS_IRQ_CLR - 1 - WO - 0x0 - 写 1 清除通道 i 在 TSIZE 数据上的半传输中断状态标志 * - RSP_ERR_IRQ_CLR - 2 - WO - 0x0 - 写 1 清除通道 i DMA 访问错误中断状态标志 * - LLA_ERR_IRQ_CLR - 3 - WO - 0x0 - 写 1 清除通道 i 链接寄存器访问错误中断状态标志 * - LLA_FTRANS_IRQ_CLR - 4 - WO - 0x0 - 写 1 清除通道 i 在链表模式下的全传输中断状态标志 * - 保留 - 31:5 - / - 0x0 - / DMA_PA_CHi_IRQ_EN ----------------- 地址偏移:0xA00 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.23:DMA_PA_CHi_IRQ_EN 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FTRANS_IRQ_EN - 0 - RW - 0x0 - PA-MEM 通道 i 全传输中断使能 * - HTRANS_IRQ_EN - 1 - RW - 0x0 - PA-MEM 通道 i 半传输中断使能 * - RSP_ERR_IRQ_EN - 2 - RW - 0x0 - PA-MEM 通道 i DMA 访问错误中断使能 * - 保留 - 31:3 - / - 0x0 - / DMA_PA_CHi_IRQ_STAT ------------------- 地址偏移:0xA04 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.24:DMA_PA_CHi_IRQ_STAT 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FTRANS_IRQ_STAT - 0 - RO - 0x0 - PA-MEM 通道 i 全传输中断状态标志 * - HTRANS_IRQ_STAT - 1 - RO - 0x0 - PA-MEM 通道 i 半传输中断状态标志 * - RSP_ERR_IRQ_STAT - 2 - RO - 0x0 - PA-MEM 通道 i DMA 访问错误中断状态标志 * - 保留 - 31:3 - / - 0x0 - / DMA_PA_CHi_IRQ_CLR ------------------ 地址偏移:0xA08 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.25:DMA_CHi_IRQ_CLR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - FTRANS_IRQ_CLR - 0 - WO - 0x0 - 写 1 清除 PA-MEM 通道 i 全传输中断状态标志 * - HTRANS_IRQ_CLR - 1 - WO - 0x0 - 写 1 清除 PA-MEM 通道 i 半传输中断状态标志 * - RSP_ERR_IRQ_CLR - 2 - WO - 0x0 - 写 1 清除 PA-MEM 通道 i DMA 访问错误中断状态标志 * - 保留 - 31:3 - / - 0x0 - / DMA_PCHi_IRQ_EN --------------- 地址偏移:0xC00 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.26:DMA_PCHi_IRQ_EN 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - RX_FTRANS_IRQ_EN - 0 - RW - 0x0 - 通道 i Rx 全传输中断使能 * - RX_HTRANS_IRQ_EN - 1 - RW - 0x0 - 通道 i Rx 半传输中断使能 * - RX_RSP_ERR_IRQ_EN - 2 - RW - 0x0 - 通道 i Rx DMA 访问错误中断使能 * - TX_FTRANS_IRQ_EN - 3 - RW - 0x0 - 通道 i Tx 全传输中断使能 * - TX_HTRANS_IRQ_EN - 4 - RW - 0x0 - 通道 i Tx 半传输中断使能 * - TX_RSP_ERR_IRQ_EN - 5 - RW - 0x0 - 通道 Tx i DMA 访问错误中断使能 * - CMD_FTRANS_IRQ_EN - 6 - RW - 0x0 - 通道 i CMD 全传输中断使能 * - CMD_HTRANS_IRQ_EN - 7 - RW - 0x0 - 通道 i CMD 半传输中断使能 * - CMD_RSP_ERR_IRQ_EN - 8 - RW - 0x0 - 通道 i CMD DMA 访问错误中断使能 * - 保留 - 31:9 - / - 0x0 - / DMA_PCHi_IRQ_STAT ----------------- 地址偏移:0xC04 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.27:DMA_PCHi_IRQ_STAT 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - RX_FTRANS_IRQ_STAT - 0 - RO - 0x0 - 通道 i Rx 全传输中断标志 * - RX_HTRANS_IRQ_STAT - 1 - RO - 0x0 - 通道 i Rx 半传输中断标志 * - RX_RSP_ERR_IRQ_STAT - 2 - RO - 0x0 - 通道 i Rx DMA 访问错误中断标志 * - TX_FTRANS_IRQ_STAT - 3 - RO - 0x0 - 通道 i Tx 全传输中断标志 * - TX_HTRANS_IRQ_STAT - 4 - RO - 0x0 - 通道 i Tx 半传输中断标志 * - TX_RSP_ERR_IRQ_STAT - 5 - RO - 0x0 - 通道 Tx i DMA 访问错误中断标志 * - CMD_FTRANS_IRQ_STAT - 6 - RO - 0x0 - 通道 i CMD 全传输中断标志 * - CMD_HTRANS_IRQ_STAT - 7 - RO - 0x0 - 通道 i CMD 半传输中断标志 * - CMD_RSP_ERR_IRQ_STAT - 8 - RO - 0x0 - 通道 i CMD DMA 访问错误中断标志 * - 保留 - 31:9 - / - 0x0 - / DMA_PCHi_IRQ_CLR ---------------- 地址偏移:0xC08 + 12 * i,其中 “i” 是从 0 到 7 的通道索引 .. list-table:: 表 5.28:DMA_PCHi_IRQ_CLR 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - RX_FTRANS_IRQ_CLR - 0 - RO - 0x0 - 写 1 清除通道 i Rx 全传输中断标志 * - RX_HTRANS_IRQ_CLR - 1 - RO - 0x0 - 写 1 清除通道 i Rx 半传输中断标志 * - RX_RSP_ERR_IRQ_CLR - 2 - RO - 0x0 - 写 1 清除通道 i Rx DMA 访问错误中断标志 * - TX_FTRANS_IRQ_CLR - 3 - RO - 0x0 - 写 1 清除通道 i Tx 全传输中断标志 * - TX_HTRANS_IRQ_CLR - 4 - RO - 0x0 - 写 1 清除通道 i Tx 半传输中断标志 * - TX_RSP_ERR_IRQ_CLR - 5 - RO - 0x0 - 写 1 清除通道 Tx i DMA 访问错误中断标志 * - CMD_FTRANS_IRQ_CLR - 6 - RO - 0x0 - 写 1 清除通道 i CMD 全传输中断标志 * - CMD_HTRANS_IRQ_CLR - 7 - RO - 0x0 - 写 1 清除通道 i CMD 半传输中断标志 * - CMD_RSP_ERR_IRQ_CLR - 8 - RO - 0x0 - 写 1 清除通道 i CMD DMA 访问错误中断标志 * - 保留 - 31:9 - / - 0x0 - / DMA_VERSION ----------- 地址偏移:0xFFC .. list-table:: 表 5.29:DMA_VERSION 寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - ver - 31:0 - RO - 0x00020400 - dma 版本常量