ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
μDMA 控制器使用系统内存中的一个区域来存储一组通道控制结构表。控制表中的每个 μDMA 通道可能有一个或两个条目。表结构中的每个条目都包含源和目标指针、传输大小和传输模式。控制表可以位于系统内存中的任何位置,但它必须是连续的,并且按 1024 字节边界对齐。
表 15-3 描述了通道控制表的内存布局。每个通道在控制表中可以有一个或两个控制结构:一个主控制结构和一个可选的备用控制结构。该表的组织方式是:所有主条目位于表的前半部分,所有备用结构位于表的后半部分。主条目用于简单传输模式,在该模式下,每次传输完成后都可以重新配置和重新启动传输。在这种情况下,不会使用备用控制结构,因此只需在内存中分配表的前半部分;控制表的后半部分不是必需的,该内存可用于其他用途。如果使用更复杂的传输模式(例如乒乓或散聚模式),则还会使用备用控制结构,并且必须为整个表分配内存空间。
控制表中任何未使用的内存均可由应用程序使用,这包括应用程序未使用的任何通道的控制结构,以及每个通道的未使用控制字。
| 偏移 | 通道 |
|---|---|
| 0x0 | 0,主结构 |
| 0x10 | 1,主结构 |
| ... | ... |
| 0x1F0 | 31,主结构 |
| 0x200 | 0,备用结构 |
| 0x210 | 1,备用结构 |
| ... | ... |
| 0x3F0 | 31,备用结构 |
表 15-4 描述了控制表中的单个控制结构条目。每个条目按 16 字节边界对齐。该条目包含四个长字:源结束指针、目标结束指针、控制字和一个未使用条目。包含式结束指针指向传输的结束地址。如果源或目标是非递增的(如外设寄存器),则指针必须指向传输地址。
| 偏移 | 说明 |
|---|---|
| 0x000 | 源结束指针 |
| 0x004 | 目标结束指针 |
| 0x008 | 控制字 |
| 0x00C | 未使用条目 |
控制字包含以下字段:
通道的控制参数可以使用驱动程序库函数 void uDMAChannelControlSet(); 进行设置。在执行传输时,μDMA 控制器会更新传输大小和传输模式字段。在传输结束时,传输大小指示 0,传输模式指示停止。由于控制字会被 μDMA 控制器修改,因此在每次新传输之前必须重新配置控制字。源和目标结束指针不会被修改,因此如果源或目标地址保持不变,它们可以保持不变。
在开始传输之前,必须通过设置 UDMA:SETCHANNELEN 寄存器中的相应位来使能 μDMA 通道。可通过设置 UDMA:CLEARCHANNELEN 寄存器中的通道位来禁用通道。在完整 μDMA 传输结束时,控制器会自动禁用该通道。