Microchip代碼配置器MCC學習教程6 --DMA直接存儲器訪問

關鍵字 :MicrochipDMAMCC
本篇博文主要介紹在MCC中如何快速使用DMA這個功能。

對於DMA,想必大家都不陌生,主要功能就是讓存儲器和外設之間進行數據傳輸,最關鍵的是不需要CPU進行干預,能有效的提供數據傳輸的吞吐率。如下圖。



       目前大多數晶片都帶有DMA這個功能,值得一提的是PIC在8bit MCU裡面也有一部分晶片支持DMA,例如PIC18FxxK42和PIC18FxxK83 MCU。
       首先,我們先打開MCC中DMA這個模塊,如下圖。


      
接下來,我們介紹DMA中,每個寄存器對應表示的含義。如下圖。





       目前在8bit PIC18FxxK42中只支持兩路DMA,具體的邏輯框圖如下圖。


       傳輸方向/源地址/目的地址:
       DMA數據傳輸方向是固定的,即從源地址到目的地址。具體的說,DMA能將數據從源地址讀出,然後寫入目的地址。
       源地址  (讀操作):flash,EEPROM,GPR(SRAM), SFR(外設寄存器);
       目的地址(寫操作):GPR (SRAM),SFR(外設寄存器);
       源地址起始地址寄存器,為24位,DMAxSSAU-DMAxSSAH-DMAxSSAL;

       目的地址起始地址寄存器,為16位, DMAxDSAH-DMAxSSAL。

       傳輸數據長度:
       傳輸數據長度由源端數據長度和目的端數據長度決定。這兩個數據長度可以設置不同。當設置不同時,每次傳輸的長度由較小的一端決定。
       典型的傳輸形式舉例:
       N:1 - 將N字節長度數據通過串口/SPI口傳輸出去;
       N:N – 將數據塊在存儲器不同地址間搬移;
       1:N – 將ADC採集到數據依次寫入到一塊預定的存儲器空間;
       1:1 – 兩個通信口橋接。

       DMA 啟動/停止控制:
       DMA數據搬移啟動可以由軟體操作,也可以由其他外設進行觸發。同樣的,停止操作也是可以由軟體操作或硬體觸發。

       DMA與CPU資源使用仲裁:
       可以設為DMA高優先級或CPU高優先級。當DMA高優先級時,DMA操作時,CPU執行暫停;當CPU高優先級時,DMA利用CPU空閒時間進行DMA傳輸。

       做好相應設置後,點擊MCC生成代碼,可以找到dma1.C的文件,如下圖。

       現在DMA的功能也基本介紹清楚,希望各位看官們,能在MCC上進行實際操作體驗下。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論

陈毅滨

陈毅滨

2020年12月21日
希望持续更新,对于刚入门Microchip的小菜鸟来说,手把手学MCC确实不错。