手把手带你学会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上进行实际操作体验下。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值