国民技术Nationz单片机DMA与通道映射关系
DMA(Direct Memory Access)直接存储器访问,是MCU的一个外设,它的主要功能是在不占用CPU资源的状况下搬运数据,通过DMA来传输数据,CPU可同时在处理其它数据,类似于CPU的多线程原理,DMA功能可以大大提升单片机的运行效率。
本文档分别对N32G03X/N32G43X、N32G457的DMA通道映射关系进行说明,便于开发者快速理解DMA与通道映射关系,更多的详细配置请参阅应用手册及SDK文档。
更多国民技术单片机的开发资料、开发板、技术支持、免费样品、芯片订购事宜,请联络国民技术代理绿都电子,联络方式:0755-83777478,18688790400,philip.yf@szlvdu.com
N32G030系列MCU:N32G030F6U7, N32G030F6S7, N32G030K6L7, N32G030K6Q7, N32G030K6Q7-1, N32G030K8L7, N32G030C8L7, N32G030C8T7, N32G030F8S7
N32G031系列MCU:N32G031F6U7, N32G031F6S7, N32G031K6L7, N32G031K6Q7, N32G031K6Q7-1, N32G031F8U7, N32G031F8S7, N32G031K8L7, N32G031K8Q7, N32G031K8Q7-1, N32G031C8L7
N32G430系列MCU:N32G430C6L7, N32G430K6L7,N32G430C6Q7, N32G430K6Q7, N32G430G6Q7, N32G430F6Q7, N32G430F6S7, N32G430F6S7-1,N32G430C8L7, N32G430K8L7,N32G430C8Q7, N32G430K8Q7, N32G430G8Q7, N32G430F8Q7,N32G430F8S7, N32G430F8S7-1
N32G457系列MCU:N32G457RCL7, N32G457REL7, N32G457MCL7, N32G457MEL7, N32G457VCL7, N32G457VEL7, N32G457QEL7, N32G457RBL7, N32G457MBL7, N32G457VBL7, N32G457CBL7, N32G457CCL7, N32G457CEL7
N32G03x:系统总共有 35个DMA外设请求。可从外设(TIMx[x=1、8、3、6]、 ADC、 SPI/I2S、 SPI2、I2Cx[x=1、 2]、LPUART 和 USARTx[x=1、2])获得。DMA 控制器有5个独立的通道,每个通道对应外设的请求可配置。通过配置 DMA 通道 x 通道选择寄存器来实现。当某个通道 CH_CHSEL[5:0]=NUM,则该通道选择 Ch [NUM] 对应的外设请求。N32G43x:DMA 控制器接收到从外设产生的63个请求,每个请求都有对应的响应握手信号。外设的DMA 请求,可以通过设置相应外设寄存器中的控制位,被独立地开启或关闭。不同外设的请求通过用户配置输入到 DMA 某个通道,具体见寄存器描述。选择 DMA 通道时,可与外设随意对应,注意除了正常 DMA 初始化操作,还需要加 DMA_RequestRemap。
1.2 功能
1.2.1 仲裁器
N32G03x 的 DMA 控制器有 5 个通道,N32G43x 的 DMA 控制器有 8 个通道。每个通道对应不同的外设的DMA 请求。虽然每个通道可以接收多个外设的请求,但是同一时间只能接收一个,不能同时接收多个。通道默认情况下几个通道软件优先级相同,优先级都为 0,硬件逻辑通道号越小优先级越高。仲裁器根据通道请求的优先级来启动外设/存储器的访问。优先权管理分 2 个阶段:
.最高优先级
.中优先级
.低优先级
1.2.2 通道配置过程
下面是配置 DMA 通道 x 的过程(x 代表通道号):
1. 在 DMA_PADDRx 寄存器中设置外设寄存器的地址。发生外设数据传输请求时,这个地址将是数据传输的源或目标。
3. 在 DMA_TXNUMx 寄存器中设置要传输的数据量。在每个数据传输后,这个数值递减。
4. 在 DMA_CHCFGx 寄存器的 PRIOLVL[1:0]位中设置通道的优先级。
6. 设置 DMA_CHCFGx 寄存器的 CHEN 位,启动该通道。
一旦启动了 DMA 通道,它即可响应连到该通道上的外设的 DMA 请求。当传输一半的数据后,半传输标志(HTXF)被置 1,当设置了允许半传输中断位(HTXIE)时,将产生一个中断请求。在数据传输结束后,传输完成标志(TXCF)被置 1,当设置了允许传输完成中断位(TXCIE)时,将产生一个中断请求。
1.2.3 初始化配置通道映射
其 中 选 择 使 用 的 外 设 时 , 进 入 n32g031_dma.h 即可看到 所 有 的 映 射 外 设 。
使用例子:
配置外设对应到 DMA 的哪个通道是 DMA 初始化、DMA_RequestRemap 中的 xxx_DMA_CHANNEL 参数位置,定义如下,自行选择 DMA 通道。
2 N32G45x
2.1 映射请求
DMA1 控制器的 8 个通道可从外设(TIMx[x=1、 2、 3、 4]、 ADCx[x=1、 2]、 SPI1、 SPI/I2S2、I2Cx[x=1、2、 3]、 UART5 和 USARTx[x=1、 2、 3])获得的 8 个独立的请求,通过逻辑或输入到 DMA1 控制器,参见下图的 DMA1 请求映像。根据通道优先级,同一时间只有一个请求有效。通过配置对应外设的寄存器,每个外设的 DMA 请求均可以独立的开启或关闭。下表为外设对应的输入请求通道:
DMA2 控制器的 8 个通道可从外设(TIMx[x=5、 6、 7、 8]、 ADCx[x=3、 4]、 SPI/I2S3、 UARTx[x=4、6、 7]、QSPI、 DVP、 DAC 通道 1、 2 和 SDIO)获得的 8 个独立的请求,通过逻辑或输入到 DMA2 控制器,参见下图的 DMA2 请求映像。根据通道优先级,同一时间只有一个请求有效。通过配置对应外设的寄存器,每个外设的 DMA 请求均可以独立的开启或关闭。
2.2 功能
2.2.1 仲裁器
DMA 仲裁器用来处理多个通道同时发起访问请求的情况,根据每个通道的优先级来决定响应哪一个通道请求。优先等级判断包括软件和硬件两种方式:
.最高优先级
.中优先级
-硬件方式:当请求通道的软件优先级相同,则编号低的通道优先级高。例如:通道 1 和通道 2 配置为相同的软件优先级,则通道 1 的优先级更高。
2.2.2 通道配置过程
下面是配置 DMA 通道 x 的过程(x 代表通道号):
2. 在 DMA_MADDRx 寄存器中设置数据存储器的地址。
3. 在 DMA_TXNUMx 寄存器中设置要传输的数据量。在每个数据传输后,这个数值递减。
5. 在 DMA_CHCFGx 寄存器的 PRIOLVL[1:0]位中设置通道的优先级。
6. 设置 DMA_CHCFGx 寄存器的 CHEN 位,启动该通道。
一旦启动了 DMA 通道,它即可响应连到该通道上的外设的 DMA 请求。传输过程中,当数据传输一半时HTXF 被置一,当数据传输完成后 TXCF 被置一,当传输错误时 ERRF 被置一。这三个标志可通过开启对应中断使能共用一个独立中断资源。
2.2.3 初始化配置通道映射代码
选择通道时注意通道对应的外设,多个外设不要同时配置到同一个通道。
2、N32G45x 中相同 DMA 同一个通道不可同时使用,比如 DMA1 中,通道 2 内功能不可同时使用。
4、同一个通道同时配置了多个外设,系统会以最后一次配置为准。
5、此应用笔记有配套 Excel 表,可快速查找外设对应通道号。
更多国民技术单片机的开发资料、开发板、技术支持、免费样品、芯片订购事宜,请联络国民技术代理绿都电子,联络方式:0755-83777479,18688790400,philip.yf@szlvdu.com