本帖最后由 arm菜鸟人 于 2013-7-15 21:29 编辑
使用MSP430F149 ADC12
想进行ADC转换,就是不成功。
请大家帮忙看看问题出在哪里。
/****************************************************************************************
函数名称: ADC12_Init(void)
功 能: ADC12 初始化
参 数: 无
返回值 : 无
****************************************************************************************/
void ADC12_Init(void)
{
P6SEL |= 0x01; // 选择P6.0作为 ADC
P6DIR &= ~BIT0; // 设置P6.0为输入
ADC12CTL0 &= ~ENC; // 配置ADC寄存器 必须将ENC清零
ADC12CTL0 |= ADC12ON+SHT0_8+MSC; // 打开ADC
// 采样保持时间为 256 * ADC12CLK
// 多次采样转换
ADC12CTL0 |= REFON + REF2_5V; // 打开参考电压发生器
// 使用2.5V参考电压
ADC12CTL1 |= SHP+CONSEQ_2; // ADC12SC 启动 - SHSx = 00
// 脉冲采样模式 SHP = 1
// ADC12DIV = 000 /1
// ADC12SSLx = 00 内部时钟
// CONSEQx = 10 单通道多次转换
ADC12MCTL0 |= SREF_1; // SREF0 = 001 - VR+ = VREF+/VR-=AVss
// INCH = 0000 - A0
ADC12CTL0 |= ENC; // 使能ADC12
}
/****************************************************************************************
函数名称: ADC12_Convert(void)
功 能: ADC12 启动函数
参 数: 无
返回值 : 无
说明 :
****************************************************************************************/
unsigned int ADC12_Convert(void)
{
unsigned char i;
unsigned int temp;
unsigned long int adc_temp;
for ( i = 0; i < Num_of_Results; i++)
{
ADC12CTL0 |= ADC12SC; // ADC12SC 启动模式
while ((ADC12IFG & BIT0) == 0); // 等待ADC 完成
temp = ADC12MEM0;
adc_temp += temp;
}
adc_temp >>= 4; // 求平均值
temp=adc_temp;
return temp;
}
|