差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
mp_rp2040_dma [2021/10/16 14:03] gongyusu [2. 寄存器列表] |
mp_rp2040_dma [2021/10/16 14:04] (当前版本) gongyusu [2. 寄存器列表] |
||
---|---|---|---|
行 25: | 行 25: | ||
{{ :dma_reg1.png |}} | {{ :dma_reg1.png |}} | ||
- | * **Busy**:bit24,标记DMA是否正在进行中,当通道开始一个新的传输序列时,该标志升高,当该序列的最后一次传输完成时,该标志降低。在BUSY为高值时清除EN将暂停通道,并且在暂停时BUSY将保持高值。 | + | * Busy:bit24,标记DMA是否正在进行中,当通道开始一个新的传输序列时,该标志升高,当该序列的最后一次传输完成时,该标志降低。在BUSY为高值时清除EN将暂停通道,并且在暂停时BUSY将保持高值。 |
- | * **IRQ_QUIET**:bit21,在QUIET模式下,通道不会在每个传输块的末尾生成irq。相反,当将NULL写入触发器寄存器时将引发IRQ,这表明控制区块链的结束。 | + | * IRQ_QUIET:bit21,在QUIET模式下,通道不会在每个传输块的末尾生成irq。相反,当将NULL写入触发器寄存器时将引发IRQ,这表明控制区块链的结束。这减少了在传输由许多小控制块组成的DMA链时由CPU提供服务的中断数量。 |
- | * 这减少了在传输由许多小控制块组成的DMA链时由CPU提供服务的中断数量。 | + | * TREQ_SEL:bit20-15, 选择一个转移请求信号。信道使用传输请求信号来调整其数据传输速率。TREQ信号的来源是内部(TIMERS)或外部(DREQ,来自系统的数据请求)。 |
- | * **TREQ_SEL**:bit20-15, 选择一个转移请求信号。信道使用传输请求信号来调整其数据传输速率。TREQ信号的来源是内部(TIMERS)或外部(DREQ,来自系统的数据请求)。 | + | |
* 0x0到0x3a→选择DREQ n为TREQ | * 0x0到0x3a→选择DREQ n为TREQ | ||
* 0x3b→选择定时器0作为TREQ | * 0x3b→选择定时器0作为TREQ | ||
行 35: | 行 34: | ||
* 0x3e→选择定时器3作为TREQ(可选) | * 0x3e→选择定时器3作为TREQ(可选) | ||
* 0x3f→永久请求,用于非节奏传输。 | * 0x3f→永久请求,用于非节奏传输。 | ||
- | * **CHAIN_TO**:bit14-11, 当该通道完成时,它将触发CHAIN_TO指示的通道。通过设置CHAIN_TO =(此通道)禁用。重置值等于通道号(因此CHAIN_TO默认禁用)。 | + | * CHAIN_TO:bit14-11, 当该通道完成时,它将触发CHAIN_TO指示的通道。通过设置CHAIN_TO =(此通道)禁用。重置值等于通道号(因此CHAIN_TO默认禁用)。 |
- | * **INCR_WRITE**:bit5, 如果是1,写地址随着每次传输而增加。如果为0,则每次写入都指向相同的初始地址。对于内存到外设的传输,通常应该禁用此功能。 | + | * INCR_WRITE:bit5, 如果是1,写地址随着每次传输而增加。如果为0,则每次写入都指向相同的初始地址。对于内存到外设的传输,通常应该禁用此功能。 |
- | * **INCR_READ**:bit4, 如果是1,读地址随着每次传输而增加。如果为0,则每次读都指向相同的初始地址。对于外设到内存的传输,通常应该禁用此功能。 | + | * INCR_READ:bit4, 如果是1,读地址随着每次传输而增加。如果为0,则每次读都指向相同的初始地址。对于外设到内存的传输,通常应该禁用此功能。 |
- | * **DATA_SIZE**:bit3-2, 设置每个总线传输的大小(字节/半字/字)。READ_ADDR和WRITE_ADDR每次传输都增加这个量(1/2/3字节)。 | + | * DATA_SIZE:bit3-2, 设置每个总线传输的大小(字节/半字/字)。READ_ADDR和WRITE_ADDR每次传输都增加这个量(1/2/3字节)。 |
* 0x0→SIZE_BYTE | * 0x0→SIZE_BYTE | ||
* 0x1→SIZE_HALFWORD | * 0x1→SIZE_HALFWORD | ||
* 0x2→SIZE_WORD | * 0x2→SIZE_WORD | ||
- | * **HIGH_PRIORITY**:bit1,HIGH_PRIORITY在问题调度中给予通道优先处理:在每次调度中,优先考虑所有高优先级通道,然后只考虑一个低优先级通道,然后返回到高优先级通道。这只影响DMA调度通道的顺序。DMA的总线优先级没有改变。如果DMA未饱和,那么低优先级通道将不会出现吞吐量损失。 | + | * HIGH_PRIORITY:bit1,HIGH_PRIORITY在问题调度中给予通道优先处理:在每次调度中,优先考虑所有高优先级通道,然后只考虑一个低优先级通道,然后返回到高优先级通道。这只影响DMA调度通道的顺序。DMA的总线优先级没有改变。如果DMA未饱和,那么低优先级通道将不会出现吞吐量损失。 |
- | * **EN**:bit0, DMA通道启用。当值为1时,通道将响应触发事件,这将导致通道变为BUSY并开始传输数据。当0时,通道将忽略触发器,停止发送传输,并暂停当前的传输序列(例如,如果BUSY已经处于高电平,那么将继续保持高电平) | + | * EN:bit0, DMA通道启用。当值为1时,通道将响应触发事件,这将导致通道变为BUSY并开始传输数据。当0时,通道将忽略触发器,停止发送传输,并暂停当前的传输序列(例如,如果BUSY已经处于高电平,那么将继续保持高电平) |
- | + | ||
### 3. 示例 | ### 3. 示例 |