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.

MSP430FR5949 AD突然不工作的原因,单片机在跑,通信都正常,唯独AD模块不工作了,AD转换的值不变了,这是什么原因呢?以前发过,求TI大神回复。

时钟配置

STATIC VOID Bsp_InitClk(VOID)
{
PJSEL0 |= PJ_LFXIN | PJ_LFOUT;/*时钟32kHz*/

FRCTL0 = FRCTLPW | NWAITS_1;/*16M以上要使用等待1*/

PM5CTL0 &= ~LOCKLPM5;/*打开时钟并且进行设置*/

CSCTL0_H = CSKEY >> 8;/*时钟解锁允许设置*/

CSCTL1 = DCOFSEL_4+DCORSEL;/*16M -铁电不能用24M只能用16M*/

CSCTL2 = SELA__LFXTCLK | SELS__DCOCLK | SELM__DCOCLK ;

CSCTL3 = DIVA__1 /*选择辅助时钟分频1*/\
|DIVM__1 /*选择主时钟分频1*/\
|DIVS__16;//16分频,SPI时钟 SMCLK 1M

CSCTL4 |= LFXTOFF;/*外接9<C<12.5pf*/

CSCTL4 &= ~(LFXTOFF);/*开启片外时钟晶振*/

do
{
CSCTL5 &= ~(LFXTOFFG);/* Clear XT2 fault flag */
SFRIFG1 &= ~OFIFG;
}while (SFRIFG1&OFIFG);/* Test oscillator fault flag */

CSCTL0_H = 0;/*锁住时钟设置*/
}

AD部分的初始化

STATIC VOID Bsp_InitAD(VOID)
{
/* 初始化AD引脚 *///P1.0,P1.1
P1SEL1 |= P1_ADI|P1_AC2;
P1SEL0 |= P1_ADI|P1_AC2;
// P1REN &=~P1_ADI;
// P1REN &=~P1_AC2;
P3SEL1 |= P3_AC1|P3_BIT1|P3_BIT2;
P3SEL0 |= P3_AC1|P3_BIT1|P3_BIT2;

//
// while(REFCTL0 & REFGENBUSY); // If ref generator busy, WAIT
REFCTL0 |= REFVSEL_3; //调高后影响采样精度
REFCTL0 |= REFON;
//REFCTL0 |= REFON;//10.30
ADC12CTL0 &=~ADC12ENC;
//ADC12CTL0 = ADC12ON+ADC12SHT0_8+ADC12MSC;

ADC12CTL1 = ADC12SHP\
|ADC12CONSEQ_1 \
|ADC12SHS_0\
|ADC12SSEL_0;

ADC12CTL2 = ADC12RES_2;

ADC12CTL3 = ADC12CSTARTADD_0|ADC12TCMAP;
//电流 A0
ADC12MCTL0 = ADC12VRSEL_1\
|ADC12INCH_0;
//电压AC2 A1
ADC12MCTL1 = ADC12VRSEL_1\
|ADC12INCH_1;
//电压AC1 A12
ADC12MCTL2 = ADC12VRSEL_1\
|ADC12INCH_12;
//基准1.25 A13
ADC12MCTL3 = ADC12VRSEL_1\
|ADC12INCH_13;
//电池 A14
ADC12MCTL4 = ADC12VRSEL_1\
|ADC12INCH_14;
//温度
ADC12MCTL5 = ADC12VRSEL_1\
|ADC12INCH_30\
|ADC12EOS;


ADC12CTL0 = ADC12ON\
|ADC12MSC\
|ADC12ENC\
|ADC12SHT0_8;
}