TI28069 使用DMA 搬移ADC 转换结果

本文详细解析了如何使用DMA(Direct Memory Access)将ADCResult6/7的4次数据搬移到RAM,并配置DMA产生中断,确保数据按67676767的模式存储。通过实例代码演示了DMABurstConfig、TransferConfig和WrapConfig的配置,以及DMA_MODE里的中断触发设置。
摘要由CSDN通过智能技术生成

这只是一个简单的应用,其目的是将4次 ADCResult 6 / 7 的数据搬移到RAM (占用8个16Bit 空间)中(后面用于ADC 滤波处理),且产生中断,ADC 结果的放置方式为 6 7 6 7 6 7 6 7 : 

实例代码:

    // Configure DMA Channel
    DMADest   = &DMABuf1[0];
    DMASource = &AdcResult.ADCRESULT6;
    // 6 7 6 7 6 7 6 7
    DMACH1AddrConfig(DMADest, DMASource);
    // 1 Burst will move 2 AdcResults
    DMACH1BurstConfig(1, 1, 1);
    // 4 Bursts will be moved in 1 transfer,
    // so 8 Grids will be filled in 1 transfer
    DMACH1TransferConfig(3, 0, 1);
    // 1 Burst will wrap SRC  Address
    // 4 Burst will wrap Dest Address
    DMACH1WrapConfig(0, 0, 3, 0);

    //Use DMA_SEQ2INT to start the x-fer.
    DMACH1ModeConfig(DMA_SEQ2INT,
                     PERINT_ENABLE,
                     ONESHOT_DISABLE,
                     CONT_ENABLE,
                     SYNC_DISABLE,
                     SYNC_SRC,
                     OVRFLOW_DISABLE,
                     SIXTEEN_BIT,
                     CHINT_END,
                     CHINT_ENABLE);

    StartDMACH1();

通俗易懂的解释:

DMACH1BurstConfig(1, 1, 1) 参数依次解释如下:
1,表示一次触发搬移 (1 + 1)个Word(这里也就是两个16Bits 的数据);
1,表示每搬完一个Word,源地址继上次偏移1个单位;
1,表示每搬完一个Word,目的地址继上次偏移1个单位;
特别注意:每个Burst 内部,地址会自动按照设置值进行偏移,但最后一次搬移,地址会停留在最后一个有效地址,比如pDest 起初为0,搬完第一个Word后,pDest = pDest + 1 (也就是1),搬完第二个地址后,pDest 仍然等于1;

DMACH1TransferConfig(3, 0, 1) 参数依次解释如下:
3,表示每完成(3 + 1)次Burst搬移(此例也就是每2个Word)之后,即产生中断(字面理解,4次Burst 等同于一次Transfer);
0,表示相对于前一次Burst结束的基础上,源地址需要进一步的偏移值,此例不偏移,是由于每搬完两个Word后(也就是一次Burst)就需要地址绕回,所以配置多少无所谓;
1,表示相对于前一次Burst结束的基础上,目的地址需要进一步的偏移值,此例偏移1,表示接着上一次Burst 完成后连续放置数据,注意避坑:如果此处配置为0,则会出现4次Burst的目的地址使用情况为 0 1,1 2,2 3,3 4,也就是只会出现在前5个单元,而不是8个目的地址单元均会出现数据;

DMACH1WrapConfig(0, 0, 3, 0) 参数依次解释如下:
0,表示(0 + 1)次Burst之后源地址需要绕回;
0,表示源地址直接绕回到0;
3,表示(3 + 1)次Burst 之后目的地址需要绕回;
0,表示目的地址直接绕回到0;


DMACH1ModeConfig() 这里重点配置有选择DMA 传输触发源,此例为ADCInt2 : DMA_SEQ2INT;是否需要使能中断ISR,此例为需要使能DMA 返回中断;
 

PS : 如有理解不当的地方,欢迎批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值