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

msp430G2553中的ad序列转换怎么读取每次的采样值

在msp430中

  ADC10CTL0 &= ~ENC;
  ADC10CTL0 |= ADC10IE + ADC10ON  + REF2_5V + ADC10SHT_2;
     ADC10CTL1 |= CONSEQ_1+ INCH_2+SHS_0+ADC10SSEL_0;
     ADC10AE0 |= 0x07;
       _EINT();

while(1)

{

  ADC10CTL0 |= ENC + ADC10SC; //ad开始转化
    while(ADC10BUSY==1);
       if(ci==30)
             {
             ci=0;
            lcd_pos(1,0);
            ad_shuju(&ADC10_A[2]);
            lcd_pos(2,0);
            ad_shuju(&ADC10_A[1]);
            lcd_pos(3,0);
            ad_shuju(&ADC10_A[0]);
                }}

#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
 ADC10_A[ci]=ADC10MEM;
  ci++;  // Clear CPUOFF bit from 0(SR)
}

jiabao mo:

回复 Triton Zhang:

我在ccs中没有发现具体关于Sequence of channels,有更具体的一些历程吗?

Bing Liu9:

回复 Triton Zhang:

您好,我现在在用MSP430G2553和SHARP96,做AD转换并显示图像的程序。能请您指导一下吗

Ling Zhu2:

回复 Bing Liu9:

 请问你遇到的具体问题是什么呢?

Bing Liu9:

回复 Ling Zhu2:

您好,这是我自己写的一个AD转换并在SHARP96上显示模拟波形的程序,没有发现错误但是LCD上无法显示AD转换后的波形#include "msp430g2553.h"#include "grlib.h"#include "Sharp96x96.h"#include "HAL_MSP-EXP430G2_Sharp96x96.h"int p,v,i,b,pos,temp;long ad;const tRectangle myRectangle = { 10, 10, 90, 90};

// Function Prototypesvoid clockInit(void);void boardInit(void);void timerInit(void);void flashInit(void);void timerInit(void);void Delay_long(void);void Delay_short(void);// Global variablestContext g_sContext;tRectangle g_sRect;

void main(void){ // Stop WDT WDTCTL = WDTPW + WDTHOLD;

// Initialize the boards boardInit(); clockInit(); timerInit(); flashInit();

__bis_SR_register(GIE);

// Set up the LCD LCDInit(); GrContextInit(&g_sContext, &g_sharp96x96LCD); GrContextForegroundSet(&g_sContext, ClrBlack); GrContextBackgroundSet(&g_sContext, ClrWhite); GrContextFontSet(&g_sContext, &g_sFontFixed6x8); GrClearDisplay(&g_sContext); GrFlush(&g_sContext);

// Intro Screen GrStringDrawCentered(&g_sContext, "Start…", AUTO_STRING_LENGTH, 25, 5, TRANSPARENT_TEXT); GrFlush(&g_sContext); Delay_long(); GrClearDisplay(&g_sContext); //GrRectDraw(&g_sContext, &myRectangle); //GrFlush(&g_sContext); //Delay_long(); DCOCTL = CALDCO_1MHZ; BCSCTL2|=SELM_0;

P1DIR=0XFF; P1OUT=0XFF; ADC10CTL0=SREF_1+ADC10SHT_1+REF2_5V+REFON+ADC10ON+MSC; //选择参考电压(Vr+=Vref+,Vr-=AVss),Vref+=2.5V,内部参考电压发生器打开多次采样转换位 ADC10CTL1=INCH_2+ADC10DIV_1+CONSEQ_2; // 选择2通道采样,ADC时钟2分频,单通道多次采样 ADC10AE0|=BIT2; P2DIR|=0XFF; P2OUT=0X00;

while(1) { ADC10CTL0|=ENC+ADC10SC; // 启动AD采样 temp=ADC10MEM; //读取寄存器的值 pos=80-((int)((temp/1024.0)*80));//描点的纵坐标 GrCircleDraw(&g_sContext, i,pos,0.5); GrFlush(&g_sContext); Delay_long();

}}#pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR(void) { __bic_SR_register_on_exit(CPUOFF); //唤醒CPU }

void clockInit(void){ // Set DCO frequency at 8MHz // ACLK = VLO/1 // SMCLK= DCO/1 // MCLK = DCO/1 // If calibration constant erased if (CALBC1_8MHZ==0xFF) { // do not load, trap CPU!! while(1); } DCOCTL = 0; BCSCTL1 = CALBC1_8MHZ; DCOCTL = CALDCO_8MHZ; BCSCTL3|= LFXT1S_2;}

void boardInit(){ // Set all port as outputs and drive pins low P1OUT = 0; P2OUT = 0; P1DIR = 0xFF; P2DIR = 0xFF;}

void flashInit(){ // Configure flash memory timing // MCLK/18 for Flash Timing Generator // 8MHz/(16+1+1) = 444.44 KHz FCTL2 = FWKEY + FSSEL0 + FN4 + FN0;

}

void timerInit(){ TA0CTL = TASSEL_2 +ID_3+ MC_1+ TAIE +TACLR; TA0CCTL0 |= CCIE; TA0CCR0 = 32000-1;}

void Delay_long(){ __delay_cycles(SYSTEM_CLOCK_SPEED * 4);}

void Delay_short(){ __delay_cycles(SYSTEM_CLOCK_SPEED * 0.25);}

#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){ Sharp96x96_SendToggleVCOMCommand(); TA0CCR0 += 32000-1; TA0CTL &= ~TAIFG;

}

梵者:

回复 Ling Zhu2:

序列通道多次转换是不是这样理解先把高通道采完在采第通道,如果是的话,那是不是可以直接用数组读取采样的数据呢?

那么问题有来了,这样是不是不能保证不同序列同时采样?

灰小子:

回复 梵者:

hi 梵者

你也用的msp430g2553吗?

这个mcu的adc模块是adc10,只有一个ADC10MEM寄存器,所以需要每个通道采集后都要及时存储到其他变量或数组,不然会被覆盖掉

Ling Zhu2:

回复 梵者:

梵者

序列通道多次转换是不是这样理解先把高通道采完在采第通道,如果是的话,那是不是可以直接用数组读取采样的数据呢?

那么问题有来了,这样是不是不能保证不同序列同时采样?

梵者:

回复 灰小子:

我刚学msp430,用的是f5310,那么能不能直接用数组把ad的采样值读出来,而不用dma呢?

梵者:

回复 Ling Zhu2:

在序列重复采样时,是不是可以直接用数组把采样值读出来,而不用dma呢?

赞(0)
未经允许不得转载:TI中文支持网 » msp430G2553中的ad序列转换怎么读取每次的采样值
分享到: 更多 (0)