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确实不错。