28335中ADC_DMA通道配置问题

2019-07-20 16:39发布

在关于DMA通道配置其中一个例程为:(注释自己加的,不知道对不,问题也在其中了)
DMACH1BurstConfig(15,1,10);  //每次burst传送的word个数为15,每次burst后源地址偏移1,目标地址偏移10
DMACH1TransferConfig(9,-15,(-150 + 1)); //一次传送中burst次数为9,后面两个怎么解释?为什么这样设置?
DMACH1WrapConfig(100,100,100,100);  //这个不是设置返回地址相关的额吗?为什么都设置为100?

       后来又看了一个历程设置为:
DMACH1BurstConfig(3,1,10); //每次burst传送word个数为3,每次burst后源地址偏移1,目标地址偏移10
DMACH1TransferConfig(9,1,0);//一次传送中burst次数为9,完成一次burst后源地址偏移量(和上面的1有什么区别?),最后目标地址偏移为什么是0?
DMACH1WrapConfig(1,0,0,1); //为什么这次是这样设置返回地址的值?有什么限制吗?

       拜托各位牛人帮忙了,看了一天的DMA部分手册,实在是看不懂了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
Snow7
1楼-- · 2019-07-20 18:22
void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16
desbstep)
{
         EALLOW;
  
       // Set up BURST registers:
  
       DmaRegs.CH1.BURST_SIZE.all = bsize;  
                  
    // Number of words(X-1) x-ferred in a burst
  
       DmaRegs.CH1.SRC_BURST_STEP = srcbstep;  
                  
           // Increment source addr between
each word x-ferred
        
DmaRegs.CH1.DST_BURST_STEP = desbstep;        
      // Increment dest addr between each word
x-ferred
         EDIS;
}

void
DMACH1WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16
deswstep)
{
         EALLOW;
  
       // Set up WRAP registers:
     
    DmaRegs.CH1.SRC_WRAP_SIZE = srcwsize;     
                  
      // Wrap source address after N bursts
  
       DmaRegs.CH1.SRC_WRAP_STEP = srcwstep;  
                  
           // Step for source wrap
  
       DmaRegs.CH1.DST_WRAP_SIZE = deswsize;  
                  
         // Wrap destination address after N
bursts
         DmaRegs.CH1.DST_WRAP_STEP
= deswstep;              
                  
     // Step for destination
wrap
         EDIS;
}

void
DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16
deststep)
{
         EALLOW;
         //
Set up TRANSFER
registers:
         DmaRegs.CH1.TRANSFER_SIZE
= tsize;  // Number of bursts per transfer, DMA interrupt will occur
after completed
transfer
         DmaRegs.CH1.SRC_TRANSFER_STEP
= srctstep;              
        // TRANSFER_STEP is ignored when WRAP
occurs
         DmaRegs.CH1.DST_TRANSFER_STEP
= deststep;              
       // TRANSFER_STEP is ignored when WRAP
occurs
         EDIS;
}
米尔豪斯
2楼-- · 2019-07-20 22:16
看这个三个函数的定义写了哪些位,然后对照器件手册中特定位含义的说明
豆腐块
3楼-- · 2019-07-21 02:11
 精彩回答 2  元偷偷看……

一周热门 更多>