當(dāng)前位置:首頁(yè) >> 代理品牌 >> 國(guó)民技術(shù)
產(chǎn)品分類:國(guó)民技術(shù)
國(guó)民技術(shù)Nationz單片機(jī)DMA與通道映射關(guān)系
DMA(Direct Memory Access)直接存儲(chǔ)器訪問(wèn),是MCU的一個(gè)外設(shè),它的主要功能是在不占用CPU資源的狀況下搬運(yùn)數(shù)據(jù),通過(guò)DMA來(lái)傳輸數(shù)據(jù),CPU可同時(shí)在處理其它數(shù)據(jù),類似于CPU的多線程原理,DMA功能可以大大提升單片機(jī)的運(yùn)行效率。
本文檔分別對(duì)N32G03X/N32G43X、N32G457的DMA通道映射關(guān)系進(jìn)行說(shuō)明,便于開(kāi)發(fā)者快速理解DMA與通道映射關(guān)系,更多的詳細(xì)配置請(qǐng)參閱應(yīng)用手冊(cè)及SDK文檔。
更多國(guó)民技術(shù)單片機(jī)的開(kāi)發(fā)資料、開(kāi)發(fā)板、技術(shù)支持、免費(fèi)樣品、芯片訂購(gòu)事宜,請(qǐng)聯(lián)絡(luò)國(guó)民技術(shù)代理綠都電子,聯(lián)絡(luò)方式: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:系統(tǒng)總共有 35個(gè)DMA外設(shè)請(qǐng)求??蓮耐庠O(shè)(TIMx[x=1、8、3、6]、 ADC、 SPI/I2S、 SPI2、I2Cx[x=1、 2]、LPUART 和 USARTx[x=1、2])獲得。DMA 控制器有5個(gè)獨(dú)立的通道,每個(gè)通道對(duì)應(yīng)外設(shè)的請(qǐng)求可配置。通過(guò)配置 DMA 通道 x 通道選擇寄存器來(lái)實(shí)現(xiàn)。當(dāng)某個(gè)通道 CH_CHSEL[5:0]=NUM,則該通道選擇 Ch [NUM] 對(duì)應(yīng)的外設(shè)請(qǐng)求。N32G43x:DMA 控制器接收到從外設(shè)產(chǎn)生的63個(gè)請(qǐng)求,每個(gè)請(qǐng)求都有對(duì)應(yīng)的響應(yīng)握手信號(hào)。外設(shè)的DMA 請(qǐng)求,可以通過(guò)設(shè)置相應(yīng)外設(shè)寄存器中的控制位,被獨(dú)立地開(kāi)啟或關(guān)閉。不同外設(shè)的請(qǐng)求通過(guò)用戶配置輸入到 DMA 某個(gè)通道,具體見(jiàn)寄存器描述。選擇 DMA 通道時(shí),可與外設(shè)隨意對(duì)應(yīng),注意除了正常 DMA 初始化操作,還需要加 DMA_RequestRemap。
1.2 功能
1.2.1 仲裁器
N32G03x 的 DMA 控制器有 5 個(gè)通道,N32G43x 的 DMA 控制器有 8 個(gè)通道。每個(gè)通道對(duì)應(yīng)不同的外設(shè)的DMA 請(qǐng)求。雖然每個(gè)通道可以接收多個(gè)外設(shè)的請(qǐng)求,但是同一時(shí)間只能接收一個(gè),不能同時(shí)接收多個(gè)。通道默認(rèn)情況下幾個(gè)通道軟件優(yōu)先級(jí)相同,優(yōu)先級(jí)都為 0,硬件邏輯通道號(hào)越小優(yōu)先級(jí)越高。仲裁器根據(jù)通道請(qǐng)求的優(yōu)先級(jí)來(lái)啟動(dòng)外設(shè)/存儲(chǔ)器的訪問(wèn)。優(yōu)先權(quán)管理分 2 個(gè)階段:
? .最高優(yōu)先級(jí)
? .中優(yōu)先級(jí)
? .低優(yōu)先級(jí)
1.2.2 通道配置過(guò)程
下面是配置 DMA 通道 x 的過(guò)程(x 代表通道號(hào)):
1. 在 DMA_PADDRx 寄存器中設(shè)置外設(shè)寄存器的地址。發(fā)生外設(shè)數(shù)據(jù)傳輸請(qǐng)求時(shí),這個(gè)地址將是數(shù)據(jù)傳輸?shù)脑椿蚰繕?biāo)。
3. 在 DMA_TXNUMx 寄存器中設(shè)置要傳輸?shù)臄?shù)據(jù)量。在每個(gè)數(shù)據(jù)傳輸后,這個(gè)數(shù)值遞減。
4. 在 DMA_CHCFGx 寄存器的 PRIOLVL[1:0]位中設(shè)置通道的優(yōu)先級(jí)。
6. 設(shè)置 DMA_CHCFGx 寄存器的 CHEN 位,啟動(dòng)該通道。
一旦啟動(dòng)了 DMA 通道,它即可響應(yīng)連到該通道上的外設(shè)的 DMA 請(qǐng)求。當(dāng)傳輸一半的數(shù)據(jù)后,半傳輸標(biāo)志(HTXF)被置 1,當(dāng)設(shè)置了允許半傳輸中斷位(HTXIE)時(shí),將產(chǎn)生一個(gè)中斷請(qǐng)求。在數(shù)據(jù)傳輸結(jié)束后,傳輸完成標(biāo)志(TXCF)被置 1,當(dāng)設(shè)置了允許傳輸完成中斷位(TXCIE)時(shí),將產(chǎn)生一個(gè)中斷請(qǐng)求。
1.2.3 初始化配置通道映射
其 中 選 擇 使 用 的 外 設(shè) 時(shí) , 進(jìn) 入 n32g031_dma.h 即可看到 所 有 的 映 射 外 設(shè) 。
使用例子:
配置外設(shè)對(duì)應(yīng)到 DMA 的哪個(gè)通道是 DMA 初始化、DMA_RequestRemap 中的 xxx_DMA_CHANNEL 參數(shù)位置,定義如下,自行選擇 DMA 通道。
2 N32G45x
2.1 映射請(qǐng)求
DMA1 控制器的 8 個(gè)通道可從外設(shè)(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 個(gè)獨(dú)立的請(qǐng)求,通過(guò)邏輯或輸入到 DMA1 控制器,參見(jiàn)下圖的 DMA1 請(qǐng)求映像。根據(jù)通道優(yōu)先級(jí),同一時(shí)間只有一個(gè)請(qǐng)求有效。通過(guò)配置對(duì)應(yīng)外設(shè)的寄存器,每個(gè)外設(shè)的 DMA 請(qǐng)求均可以獨(dú)立的開(kāi)啟或關(guān)閉。下表為外設(shè)對(duì)應(yīng)的輸入請(qǐng)求通道:
DMA2 控制器的 8 個(gè)通道可從外設(shè)(TIMx[x=5、 6、 7、 8]、 ADCx[x=3、 4]、 SPI/I2S3、 UARTx[x=4、6、 7]、QSPI、 DVP、 DAC 通道 1、 2 和 SDIO)獲得的 8 個(gè)獨(dú)立的請(qǐng)求,通過(guò)邏輯或輸入到 DMA2 控制器,參見(jiàn)下圖的 DMA2 請(qǐng)求映像。根據(jù)通道優(yōu)先級(jí),同一時(shí)間只有一個(gè)請(qǐng)求有效。通過(guò)配置對(duì)應(yīng)外設(shè)的寄存器,每個(gè)外設(shè)的 DMA 請(qǐng)求均可以獨(dú)立的開(kāi)啟或關(guān)閉。
2.2 功能
2.2.1 仲裁器
DMA 仲裁器用來(lái)處理多個(gè)通道同時(shí)發(fā)起訪問(wèn)請(qǐng)求的情況,根據(jù)每個(gè)通道的優(yōu)先級(jí)來(lái)決定響應(yīng)哪一個(gè)通道請(qǐng)求。優(yōu)先等級(jí)判斷包括軟件和硬件兩種方式:
? .最高優(yōu)先級(jí)
? .中優(yōu)先級(jí)
? -硬件方式:當(dāng)請(qǐng)求通道的軟件優(yōu)先級(jí)相同,則編號(hào)低的通道優(yōu)先級(jí)高。例如:通道 1 和通道 2 配置為相同的軟件優(yōu)先級(jí),則通道 1 的優(yōu)先級(jí)更高。
2.2.2 通道配置過(guò)程
下面是配置 DMA 通道 x 的過(guò)程(x 代表通道號(hào)):
2. 在 DMA_MADDRx 寄存器中設(shè)置數(shù)據(jù)存儲(chǔ)器的地址。
3. 在 DMA_TXNUMx 寄存器中設(shè)置要傳輸?shù)臄?shù)據(jù)量。在每個(gè)數(shù)據(jù)傳輸后,這個(gè)數(shù)值遞減。
5. 在 DMA_CHCFGx 寄存器的 PRIOLVL[1:0]位中設(shè)置通道的優(yōu)先級(jí)。
6. 設(shè)置 DMA_CHCFGx 寄存器的 CHEN 位,啟動(dòng)該通道。
一旦啟動(dòng)了 DMA 通道,它即可響應(yīng)連到該通道上的外設(shè)的 DMA 請(qǐng)求。傳輸過(guò)程中,當(dāng)數(shù)據(jù)傳輸一半時(shí)HTXF 被置一,當(dāng)數(shù)據(jù)傳輸完成后 TXCF 被置一,當(dāng)傳輸錯(cuò)誤時(shí) ERRF 被置一。這三個(gè)標(biāo)志可通過(guò)開(kāi)啟對(duì)應(yīng)中斷使能共用一個(gè)獨(dú)立中斷資源。
2.2.3 初始化配置通道映射代碼
選擇通道時(shí)注意通道對(duì)應(yīng)的外設(shè),多個(gè)外設(shè)不要同時(shí)配置到同一個(gè)通道。
2、N32G45x 中相同 DMA 同一個(gè)通道不可同時(shí)使用,比如 DMA1 中,通道 2 內(nèi)功能不可同時(shí)使用。
4、同一個(gè)通道同時(shí)配置了多個(gè)外設(shè),系統(tǒng)會(huì)以最后一次配置為準(zhǔn)。
5、此應(yīng)用筆記有配套 Excel 表,可快速查找外設(shè)對(duì)應(yīng)通道號(hào)。
更多國(guó)民技術(shù)單片機(jī)的開(kāi)發(fā)資料、開(kāi)發(fā)板、技術(shù)支持、免費(fèi)樣品、芯片訂購(gòu)事宜,請(qǐng)聯(lián)絡(luò)國(guó)民技術(shù)代理綠都電子,聯(lián)絡(luò)方式:0755-83777479,18688790400,philip.yf@szlvdu.com