本系列文章链接


本文主要介绍TMS320C6455的与EDMA3相关的内容,参考文档为:
SPRU966C - TMS320C645x DSP Enhanced DMA (EDMA3) Controller User’s Guide

整体结构

  学习一种外设的使用,最直接的方法就是看例程。基本上只要能够掌握主要寄存器的功能,就可以比较得心应手了。
  C6455的EDMA3包括了一个通道控制器(CC)和四个传输控制器(TC)。DMA有64个外部事件输入,对应64个DMA通道。CC中有4个队列(Queue)。每个通道和队列(16个入口)或是和参数表(256个入口)都可以用寄存器来绑定。
  总共有8个Region可以进行操作,这个主要是用于多用户时的编程,不同用户间的EDMA将不相互影响。
  手册中还提到了阴影寄存器(Shadow Register),我的理解是同一个功能的寄存器有不同的地址。

主要寄存器

  • DCHMAP和QCHMAP 将Channel和PaRAM绑定
  • DMAQNUM和QDMAQNUM,将Channel和Queue绑定
  • Q0->T0, Q1->T1, Q2->T2, Q3->T3
  • QUEPRI 队列优先级
  • 一堆错误指示相关的寄存器
  • DRAE和QRAE Region访问使能

CSL的使用

Module相关设置

  1. CSL_edma3Open();
  2. CSL_edma3HwSetup(); 指定了所用的队列
  3. CSL_edma3HwControl(); Region相关设置

通道相关设置

  1. CSL_edma3ChannelOpen(); 选择要设置的通道和Region
  2. CSL_edma3GetParamHandle(); 通道和PaRAM绑定
  3. CSL_edma3ParamSetup(); 设置PaRAM

  在同一个Region中还可以对另外的通道进行设置