打印

28335中ADC_DMA通道配置问题求助

[复制链接]
949|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lefeng|  楼主 | 2016-8-27 20:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADC, DMA, RS, ST, AC
  在关于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部分手册,实在是看不懂了。

相关帖子

沙发
拉克丝| | 2016-8-27 20:31 | 只看该作者
看这个三个函数的定义写了哪些位,然后对照器件手册中特定位含义的说明,就明白了函数的参数代表什么了:每个参数有注释的:

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;
}

使用特权

评论回复
板凳
Snow7| | 2016-8-27 20:56 | 只看该作者
DMACH1TransferConfig(9,-15,(-150 + 1)); //一次传送中burst次数为9,后面两个怎么解释?为什么这样设置?

使用特权

评论回复
地板
米尔豪斯| | 2016-8-27 21:13 | 只看该作者
DMACH1WrapConfig子函数中的数值是根据什么定出来的呢?

使用特权

评论回复
5
gygp| | 2016-8-29 22:18 | 只看该作者
DMA直接设置地址吧

使用特权

评论回复
6
gygp| | 2016-8-29 22:21 | 只看该作者
设定初始地址直接读取就行了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

200

主题

1087

帖子

0

粉丝