USER GUIDE / DATA MOVEMENT & TIMERS / PDMA / DMA REQUESTS
DMA 请求
DMA 传输请求分为两种:自动请求和外设请求。对于任何通道 n,其传输请求类型由 DRTn 决定。
表 1 PDMA0转移请求类型
| RT5-0 | 说明 |
|---|---|
| 000000 | TPC shift 模式TX-fifo为空的传输请求 |
| 000001 | TPC dest 模式TX-fifo为空的传输请求 |
| 000010 | TPC Step Moto0 模式TX-fifo为空的传输请求 |
| 000011 | TPC Step Moto1 模式TX-fifo为空的传输请求 |
| 000100 | AES0 TX-fifo为空的传输请求 |
| 000101 | AES1 TX-fifo为空的传输请求 |
| 000110 | HASH TX-fifo为空的传输请求 |
| 001000 | 自动请求(内存地址→内存地址) |
| 001001 | UART2 TX-fifo为空的传输请求 |
| 001010 | UART2 RX-fifo为满的传输请求 |
| 001011 | UART3 TX-fifo为空的传输请求 |
| 001100 | UART3 RX-fifo为满的传输请求 |
| 001101 | UART4 TX-fifo为空的传输请求 |
| 001110 | UART4 RX-fifo为满的传输请求 |
| 001111 | UART5 TX-fifo为空的传输请求 |
| 010000 | UART5 RX-fifo为满的传输请求 |
| 010001 | UART6 TX-fifo为空的传输请求 |
| 010010 | UART6 RX-fifo为满的传输请求 |
| 010011 | UART7 TX-fifo为空的传输请求 |
| 010100 | UART7 RX-fifo为满的传输请求 |
| 010101 | SSI1 TX-fifo为空的传输请求 |
| 010110 | SSI1 RX-fifo为满的传输请求 |
| 010111 | SSI_SLV1 TX-fifo为空的传输请求 |
| 011000 | SSI_SLV1 RX-fifo为满的传输请求 |
| 011001 | CAN0 TX-fifo为空的传输请求 |
| 011010 | CAN0 RX-fifo为满的传输请求,4 word或1 word由rx_single信号决定 |
| 011011 | CAN1 TX-fifo为空的传输请求 |
| 011100 | CAN1 RX-fifo为满的传输请求,4 word或1 word由rx_single信号决定 |
| 011101 | I2C1 TX-fifo为空的传输请求 |
| 011110 | I2C1 RX-fifo为满的传输请求 |
| 011111 | I2C2 TX-fifo为空的传输请求 |
| 100000 | I2C2 RX-fifo为满的传输请求 |
| 100001 | PWMA TX-fifo为空的传输请求 |
| 101010 | ADC0 SEQ1 RX-fifo为满的传输请求 |
| 101011 | ADC0 SEQ2 RX-fifo为满的传输请求 |
| 101100 | ADC1 SEQ1 RX-fifo为满的传输请求 |
| 101101 | ADC1 SEQ2 RX-fifo为满的传输请求 |
表 2 PDMA1 Transfer Request Types
| RT5-0 | 说明 |
|---|---|
| 000100 | AIC TX-fifo为空的传输请求 |
| 000101 | AIC RX-fifo为满的传输请求 |
| 000110 | 保留 |
| 000111 | AIC RX-fifo为满的传输请求(用于loopback) |
| 001000 | 自动请求(内存地址→内存地址) |
| 100010 | UART0 TX-fifo为空的传输请求 |
| 100011 | UART0 RX-fifo为满的传输请求 |
| 100100 | UART1 TX-fifo为空的传输请求 |
| 100101 | UART1 RX-fifo为满的传输请求 |
| 100110 | SSI0 TX-fifo为空的传输请求 |
| 100111 | SSI0 RX-fifo为满的传输请求 |
| 101000 | SSI_SLV0 TX-fifo为空的传输请求 |
| 101001 | SSI_SLV0 RX-fifo为满的传输请求 |
| 101010 | 保留 |
| 101011 | 保留 |
| 101100 | 保留 |
| 101101 | 保留 |
| 101110 | I2C0 TX-fifo为空的传输请求 |
| 101111 | I2C0 RX-fifo为满的传输请求 |
| 110000 | 保留 |
| 110001 | 保留 |
| 110010 | 保留 |
| 110011 | 保留 |
| 110100 | 保留 |
| 110101 | 保留 |
| 110110 | 保留 |
| 110111 | 保留 |
| 111000 | 保留 |
| 111001 | 保留 |
| 111010 | 保留 |
| 111011 | 保留 |
| 111100 | 保留 |
| 111101 | 保留 |
| 111110 | 保留 |
| 111111 | 保留 |
表 3 可用的 RDIL
| RDIL | 说明 |
|---|---|
| 0 | 保留 |
| 1 | 数据单位为 1 字节 |
| 2 | 数据单位为 2 字节 |
| 3 | 数据单位为 3 字节 |
| 4 | 数据单元为 4 字节 |
| 5 | 数据单元为 8字节 |
| 6 | 数据单位为 16 字节 |
| 7 | 数据单位为 32 字节 |
| 8 | 数据单元为 64 字节 |
| 9 | 数据单元为 128 字节 |
| 10~15 | 保留 |
表 4 FIFO 详细说明
| FIFO 形式 | 最佳推荐 RDIL |
|---|---|
| 8x8bits | 4(FIFO总容量的一半即 4 字节) |
| 8x16bits | 5(FIFO总容量的一半即 8 字节) |
| 32x8bits | 6(FIFO总容量的一半即 16 字节) |
| 16x16bits | 6(FIFO总容量的一半即 16 字节) |
| 64x8bits | 7(FIFO总容量的一半即 32 字节) |
| 64x32bits | 9(FIFO总容量的一半即 128 字节) |
| 128x16bits | 9(FIFO总容量的一半即 128 字节) |
| 128x32bits | 9(因为最大数据单位为 128 字节) |
自动请求
当没有明确的传输请求信号时,例如内存到内存的传输或内存到某些片上外设(如 GPIO)的传输,自动请求模式允许 DMA 在内部自动生成传输请求信号。因此,在 DMA 初始化完成后,一旦 DMAC.DMAE 和 DCSn.CTE 设置为 1,传输就会立即在 DRTn=0x8 的通道 n 中开始。
片上外设请求
在该模式下,传输请求信号来自片上外设甚至片外设备。当设备向其相应通道 n 发送外设请求时,请求传输单元字节数等于:
- DCMn.TSZ!=7 时,由 DCMn.TSZ 决定传输单元字节
- DCMn.TSZ== 7 时,由 RDIL 决定传输单元字节
请注意,上述数字不得超过设备的请求阈值,否则可能会出现 FIFO underrun 或 overrun。但是,如果传输单元字节比阈值太小,DMA 的总线效率就会变差。