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.

mspG2553中AD自动数据传输方法是如何控制



mspG2553中AD只有一个ADC10MEM 要使用序列通道采集多个ad值,但每次循环采样都将上一次的覆盖,如何将其进行分开读取

mspg2553系列中带有提供自动数据传输方法 那他的自动数据传输方法是如何控制,如何应用的

急求。。。。。

  • 在MSP430G2系列的ADC10模块,支持DTC(Data Transfer Controller)来传输ADC的采样结果,DTC模块可以不需要CPU的参与直接把ADC的采样结果值传输到RAM中的任意地址,只需要最大2个MCLK,其功能类似于DMA。其具体工作如下: 1. DTC可以自动将ADC的转换结果从ADC10MEN传输到任意片内存储单元,设置ADC10DTC1寄存器为一个非0值就可以使能DTC模块。 2. 当DTC使能时,每次ADC10完成转换和将转换结果装在到ADC10MEM后,数据传输就会启动。无需软件干预来管理ADC10,直到预先定义的转换数据量被传递。 3. 每次DTC传递需要一个MCLK,为避免DTC传递过程中其他总线竞争,CPU会暂停,如果CPU活动,需要一个MCLK周期来传递。这样就是2个MCLK。 4. 当ADC10忙的时候,DTC不能启动。所以当设置DTC时,程序必须保证挡墙没有正在进行的转换或序列转换。
  • 谢谢,在问一下如何确定已经转化完30次
     ADC10CTL1 = INCH_2 + CONSEQ_3;            // A3/A2/A1, single sequence
       ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
       ADC10DTC1 = 0x1E;                         // 3 conversions
       ADC10AE0 |= 0x07;  // P1.3,2,1 ADC10 option select

    当使用DTC时如何确定设定的采样次数 ADC的采样结果值已全部传输到RAM,

    ADC10CTL0 &= ~ENC;
        while (ADC10CTL1 & BUSY);               // Wait if ADC10 core is active
        ADC10SA = (unsigned int) ADC10_A;       // Data buffer start                         // P1.0 = 1
        ADC10CTL0 |= ENC + ADC10SC; 

    是不是当使用DTC时只发生一次中断,就是当设定的转化次数完成后,发生一次中断,还是和不使用DTC时一样每次中断完成都发生中断