This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSPM0G1507: dma+ADC 转换,debug第一次运行正常,复位或者非debug状态dma输出全为0

Part Number: MSPM0G1507

使用芯片:MSPM0G1507
目的:DAC输出指定信号,ADC根据定时器采样数据通过串口发出来
基于定时器触发dma进行adc采样,第一次debug运行都正常,脱离调试也正常,但是在调试中rest芯片,DMA输出数组值全为0,硬件脱离调试重新启动,DMA输出值也全为0,系统主时钟80M
与此同时DAC+DMA输出永远正常,部分时候会出现systick中断不触发的情况
具体配置如下:

syscfg:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* These arguments were used when this file was generated. They will be automatically applied on subsequent loads
* via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
* @cliArgs --device "MSPM0G150X" --part "Default" --package "LQFP-48(PT)" --product "mspm0_sdk@2.02.00.05"
* @v2CliArgs --device "MSPM0G1507" --package "LQFP-48(PT)" --product "mspm0_sdk@2.02.00.05"
* @versions {"tool":"1.21.2+3837"}
*/
/**
* Import the modules used in this configuration.
*/
const ADC12 = scripting.addModule("/ti/driverlib/ADC12", {}, false);
const ADC121 = ADC12.addInstance();
const ADC122 = ADC12.addInstance();
const DAC12 = scripting.addModule("/ti/driverlib/DAC12");
const DMA = scripting.addModule("/ti/driverlib/DMA");
const GPIO = scripting.addModule("/ti/driverlib/GPIO", {}, false);
const GPIO1 = GPIO.addInstance();
const SYSCTL = scripting.addModule("/ti/driverlib/SYSCTL");
const SYSTICK = scripting.addModule("/ti/driverlib/SYSTICK");
const TIMER = scripting.addModule("/ti/driverlib/TIMER", {}, false);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

运行效果:

    正常:

    

    不正常(调试界面点复位或者硬件上reset引脚给一次低电平脉冲):
    

ccs和keil同样现象

    

  • 是否是第一次debug会修改某寄存器值,直接运行或者复位后该值不再被修改导致功能异常

  • Fullscreen
    1
    2
    3
    4
    5
    6
    DL_DMA_setDestAddr(
    DMA, ADC0_DMA, (uint32_t) (&adcBuf[5]));
    DL_DMA_setSrcAddr(DMA, ADC0_DMA, (uint32_t) DL_ADC12_getFIFOAddress(
    ADC0_INST));
    DL_DMA_setTransferSize(
    DMA, ADC0_DMA, ADC_BUFFER_SIZE);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    补充一下DMA相关配置

  • 您好,

         请问测试的是自己的板子?请检查芯片的复位电路部分。

  • 您好,是自己的板子,之前的问题是配置了fifo,不确定是哪边配置问题然后dma导致寄存器值异常,现在不用fifo就可以了,现在还有个问题,上电启动后DA正常,AD采集数据不对,复位按钮按一下就好应该是什么原因?

    上图是复位电路部分

  • 您好,

          猜测上电复位时间不够。

          

  • 复位电容增加到47u依然不行,应该不是这个问题

  • 您好,

         分析这两种复位情况的区别,可检查一下芯片的上电时序。

x 出现错误。请重试或与管理员联系。