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 所示
图 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 中断请求。
中断事件 |
事件标志 |
使能控制位 |
|---|---|---|
访问错误中断 |
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 所示。
偏移量 |
寄存器名称 |
功能描述 |
|---|---|---|
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
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
pctrl_cg |
31:0 |
RW |
0x0 |
uDMA 关联外设的时钟门控使能 |
DMA_CFG_EVENT
地址偏移:0x4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
SRC_BASE |
31:0 |
RW |
0x0 |
内存到内存传输的源数据块基地址 |
DMA_CHi_CFG_MDSTADDR
地址偏移:0xC + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DST_BASE |
31:0 |
RW |
0x0 |
内存到内存传输的目标内存块基地址 |
DMA_CHi_CFG_MCTRL
地址偏移:0x10 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
TRANS_EN |
0 |
RW |
0x0 |
|
TRANS_STAT |
1 |
RO |
0x0 |
|
OUTS_CTRL_EN |
2 |
RW |
0x0 |
|
保留 |
4:3 |
/ |
0x0 |
/ |
BST_BND |
5 |
RW |
0x0 |
|
TRANS_MODE |
7:6 |
RW |
0x0 |
|
PRIORITY |
9:8 |
RW |
0x0 |
|
保留 |
11:10 |
/ |
0x0 |
/ |
MDNA |
12 |
RW |
0x0 |
|
MSNA |
13 |
RW |
0x0 |
|
保留 |
15:14 |
/ |
0x0 |
/ |
MDWIDTH |
18:16 |
RW |
0x0 |
|
保留 |
20:19 |
/ |
0x0 |
/ |
MSWIDTH |
23:21 |
RW |
0x0 |
|
MDBURST |
27:24 |
RW |
0x0 |
|
MSBURST |
31:28 |
RW |
0x0 |
|
注意: 只有在所有其他配置位正确配置后,才能设置 TRANS_EN 字段。
DMA_CHi_CFG_MRPT
地址偏移:0x14 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
TRANS_RPT |
11:0 |
RW |
0x0 |
当 DMA_CFG_MCTRL.trans_mode 配置为传输重复模式时,此字段定义重复循环次数,且在启动 DMA 传输之前不允许配置为 0 |
RPT_IRQ_EN |
12 |
RW |
0x0 |
|
保留 |
15:13 |
/ |
0x0 |
内存到内存传输的目标内存块基地址 |
RPT_SAUM |
16 |
RW |
0x0 |
|
RPT_DAUM |
17 |
RW |
0x0 |
|
保留 |
31:18 |
/ |
0x0 |
/ |
DMA_CHi_CFG_MSIZE
地址偏移:0x18 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
TSIZE |
24:0 |
RW |
0x0 |
|
保留 |
31:25 |
/ |
0x0 |
/ |
DMA_Chi_CFG_MSRCADDR_H
地址偏移:0x1C + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
SRC_BASE_H |
15:0 |
RW |
0x0 |
内存到内存传输的源数据块基地址的高位 |
保留 |
31:16 |
/ |
0x0 |
/ |
注意: 当地址宽度大于 32 时,此寄存器可用。
DMA_Chi_CFG_MDSTADDR_H
地址偏移:0x20 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DST_BASE_H |
15:0 |
RW |
0x0 |
内存到内存传输的目标内存块基地址的高位 |
保留 |
31:16 |
/ |
0x0 |
/ |
注意: 当地址宽度大于 32 时,此寄存器可用。
DMA_Chi_CFG_MRAU
地址偏移:0x24 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
RSAU |
15:0 |
RW |
0x0 |
|
RDAU |
31:16 |
RW |
0x0 |
|
DMA_Chi_CFG_MLLA
地址偏移:0x28 + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
LLA |
31:0 |
RW |
0x0 |
|
DMA_CHi_CFG_MLLA_H
地址偏移:0x2C + 0x28 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
LLA_H |
15:0 |
RW |
0x0 |
|
保留 |
31:16 |
/ |
0x0 |
/ |
注意: 当地址宽度大于 32 时,此寄存器可用。
DMA_PA_CHi_CFG_MSRCADDR
地址偏移:0x400 + 24 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
SRC_BASE |
31:0 |
RW |
0x0 |
PA-MEM 传输的源数据块基地址 |
DMA_PA_CHi_CFG_MDSTADDR
地址偏移:0x404 + 24 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DST_BASE |
31:0 |
RW |
0x0 |
PA-MEM 传输的目标内存块基地址 |
DMA_PA_CHi_CFG_MCTRL
地址偏移:0x408 + 24 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
TRANS_EN |
0 |
RW |
0x0 |
|
保留 |
5:1 |
/ |
0x0 |
/ |
TRANS_MODE |
7:6 |
RW |
0x0 |
|
保留 |
11:8 |
/ |
0x0 |
/ |
MDNA |
12 |
RW |
0x0 |
|
MSNA |
13 |
RW |
0x0 |
|
保留 |
15:14 |
/ |
0x0 |
/ |
MWIDTH |
18:16 |
RW |
0x0 |
|
保留 |
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
TSIZE |
24:0 |
RW |
0x0 |
|
保留 |
31:25 |
/ |
0x0 |
/ |
注意: TSIZE 字段只能是 PA-MEM 控制器寄存器中 mwidth 字段值的整数倍
DMA_PA_Chi_CFG_MSRCADDR_H
地址偏移:0x410 + 24 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DST_BASE_H |
15:0 |
RW |
0x0 |
PA-MEM 传输的目标内存块基地址的高位 |
保留 |
31:16 |
/ |
0x0 |
/ |
注意: 当地址宽度大于 32 时,此寄存器可用。
DMA_CHi_IRQ_EN
地址偏移:0x800 + 12 * i,其中 “i” 是从 0 到 7 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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 的通道索引
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
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
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ver |
31:0 |
RO |
0x00020400 |
dma 版本常量 |