手把手带你学会Microchip代码配置器MCC——学习教程6DMA直接存储器访问

编程入门 行业动态 更新时间:2024-10-14 12:22:48

手把手带你学会Microchip代码配置器MCC——学习教程6DMA直接<a href=https://www.elefans.com/category/jswz/34/1766391.html style=存储器访问"/>

手把手带你学会Microchip代码配置器MCC——学习教程6DMA直接存储器访问

本篇博客主要介绍在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上进行实际操作体验下。

以上内容来源大大通官网,速戳了解更多精彩内容吧~

更多推荐

手把手带你学会Microchip代码配置器MCC——学习教程6DMA直接存储器访问

本文发布于:2024-02-06 13:44:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1749291.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:存储器   手把手   带你   代码   教程

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!