2518|0

2056

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

[TI首届低功耗设计大赛]+寄存器版本的DMA0实验+ [复制链接]

本帖最后由 IC爬虫 于 2014-10-1 16:49 编辑

这篇是FR5969的片内直接数据存储DMA的寄存器版本操作的简单试验。

      下面提供的代码使用的是DMA0通道, 重复DMA数据块传送, 在主循环中重复执行DMA0CTL |= DMAREQ;  软件触发数据的传送。实现了16字的数据块在地址1C20-1C2Fh传送到地址为1C40h-1C4fh的空间中,使用的通道为DMA0.使用软件执行DMAREQ 触发数据传送.每次传送,源地址和目的地址及DMA的大小都是软件重置,因为设置的传送模式为模式5。P1.0控制的LED2在主循环中翻转。其实DMA在传送的过程中有很多的中断功能,如:数据传输完成后的中断功能。
使用DMA有非常道的优势,繁琐的数据搬移不在需要CPU 的干预,能节省CPU的操作时间,对降低功耗有利。而且数据的搬移也非常的块,一般只要MCLK时钟的2个时钟周期。在把ADC的转换的数据寄存器中的值通过DMA数据传输通道传到内存中,又高效而且不会有读取不及时灯问题。

FR5X系列的芯片的DMA有多种的数据传送方式,有:
1. 固定地址到固定地址;
2. 固定地址到数据块
3. 数据块到固定地址
4. 数据块到数据块
  1. //******************************************************************************
  2. //  MSP430FR59xx Demo - DMA0, 重复DMA数据块传送, 软件触发
  3. //
  4. //  描述: 16字的数据块在地址1C20-1C2Fh传送到地址为1C40h-1C4fh的空间中,使用的通
  5. //        道为DMA0.使用软件执行DMAREQ 触发数据传送.每次传送,源地址和目的地址及
  6. //        DMA的大小都是软件重置,因为设置的传送模式为模式5。P1.0控制的LED2在主循
  7. //        环中翻转。
  8. //  ** RAM 所在的区域 0x1C00 - 0x1C3F used - 确保没有编译器冲突 **
  9. //   MCLK = SMCLK = default DCO
  10. //
  11. //
  12. //                 MSP430FR5969
  13. //             -----------------
  14. //         /|\|                 |
  15. //          | |                 |
  16. //          --|RST              |
  17. //            |                 |
  18. //            |             P1.0|-->LED
  19. //
  20. //   IC爬虫   QQ:1394024051
  21. //   
  22. //   Sep 2014
  23. //   Built with IAR Embedded Workbench V6.1
  24. //******************************************************************************

  25. #include "msp430.h"

  26. /*******************************************************************************
  27. *函数名 :int main
  28. *描述   :主函数
  29. *输入   :无
  30. *输出   :无
  31. *调用   :内部调用
  32. ******************************************************************************/
  33. int main(void)
  34. {
  35.   WDTCTL = WDTPW | WDTHOLD; // 停止看门狗

  36.   // Configure GPIO
  37.   P1OUT = 0;
  38.   P1DIR = BIT0;             //配置LED2的控制管脚P1.1为输出方向

  39.   PM5CTL0 &= ~LOCKLPM5;     // 关闭上电端口默认输出高阻抗的功能,使能上电保持起始设置
  40.    
  41.   // 配置 DMA 通道 0
  42.   __data16_write_addr((unsigned short) &DMA0SA,(unsigned long) 0x1C20);
  43.                                             // 源数据块的起始地址
  44.   __data16_write_addr((unsigned short) &DMA0DA,(unsigned long) 0x1C40);
  45.                                             // 目的地址的起始地址
  46.   DMA0SZ = 16;                              // 传送的大小
  47.   DMA0CTL = DMADT_5 | DMASRCINCR_3 | DMADSTINCR_3; // 重复传送,源地址按增长的方向,目的地址按增长的方向
  48.   DMA0CTL |= DMAEN;                         // 使能 DMA0

  49.   while(1)
  50.   {
  51.     P1OUT |= 0x01;                          // P1.0 = 1, LED on
  52.     DMA0CTL |= DMAREQ;                      // 触发数据传送
  53.     P1OUT &= ~0x01;                         // P1.0 = 0, LED off
  54.   }
  55. }
复制代码

6-DMA-数据传输.rar (24.34 KB, 下载次数: 3, 售价: 1 分芯积分)



 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表