TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430G2553的AD DTC功能的一个小问题

TI的工程师好!我这两天在学MSP430G2553的AD模块,其中多通道采样用了DTC功能,对通道11(半电源)和通道10(内置温度传感器)进行采样,一开始定义的数据存储区是一个大小为2的数组,调试总是有问题,后来发现只要采用DTC,指定INCH_X后,就会将INCH_X以下的所有通道都采样并传输到数据存储区中,也就是ADC10AE0失效了?如果是这样的话,那假如我只想采样通道10和11,那么意味着寄存器ADC10DTC1的值至少为12(最高通道为11,总共12个通道,每个通道至少采样一次)?同时数据存储区大小也必须为12?请问是这样理解的吗?谢谢!

step by step:

楼主,

你好,如果没有在ADC10AE0/1中使能的通道应该不会被采样的,你可以参考一下下面的代码,使用DCT采集A3~A1通道的数据,没有采集A0通道,结果放到0x200开始的3个字节中,希望对你有帮助:

// MSP430G2x33/G2x53// —————–// /|\| XIN|-// | | |// –|RST XOUT|-// | |// >—|P1.3/A3 P1.0|–>LED// >—|P1.2/A2 |// >—|P1.1/A1 |//// D. Dang// Texas Instruments Inc.// December 2010// Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10//******************************************************************************#include <msp430.h>

int main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT ADC10CTL1 = INCH_3 + CONSEQ_1; // A3/A2/A1, single sequence ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE; ADC10DTC1 = 0x03; // 3 conversions ADC10AE0 |= 0x0E; // P1.3,2,1 ADC10 option select P1DIR |= 0x01; // Set P1.0 output

for (;;) { ADC10CTL0 &= ~ENC; while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active ADC10SA = 0x200; // Data buffer start P1OUT |= 0x01; // P1.0 = 1 ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit P1OUT &= ~0x01; // P1.0 = 0 }}

// ADC10 interrupt service routine#pragma vector=ADC10_VECTOR__interrupt void ADC10_ISR(void){ __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)}

赞(0)
未经允许不得转载:TI中文支持网 » MSP430G2553的AD DTC功能的一个小问题
分享到: 更多 (0)