各位大神好,麻烦帮小弟指点下以下问题。谢谢
硬件上:
代码如下:
/*
*******************************************************************************************************
** 函数名称 :main()
** 函数功能 :进行3通道电压ADC转换,并把结果转换成电压值,发送到串口。
** 调试说明 :
*******************************************************************************************************
*/
int main (void)
{
uint32 ADC_Data;
char str[20];
PINSEL0 = 0x00000005; // 管脚连接串口
PINSEL1 = 1 << 28; // P0.30连接到AD0.3
UART0_Init();
/* 进行ADC模块设置 */
AD0CR = (1 << 3) | // SEL=8,选择通道3
((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0 << 16) | // BURST=0,软件控制转换操作
(0 << 17) | // CLKS=0, 使用11clock转换
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
(1 << 24) | // START=1,直接启动ADC转换
(0 << 27); // 直接启动ADC转换时,此位无效
DelayNS(10);
ADC_Data = AD0DR3; // 读取ADC结果,并清除DONE标志位
while (1)
{
AD0CR |= 1 << 24; // 进行第一次转换
while ((AD0DR3 & 0x80000000) == 0); // 等待转换结束
AD0CR |= 1 << 24; // 再次启动转换
while ((AD0DR3 & 0x80000000) == 0); // 等待转换结束
ADC_Data = AD0DR3; // 读取ADC结果
ADC_Data = (ADC_Data >> 6) & 0x3ff;
sprintf(str, "%4d mV VIN3", ADC_Data);
ISendStr(0,0,0x30,str);
DelayS(1);
}
return 0;
}
硬件上的AD管脚都换过了,AD0.0~AD0.2输出都是同样的值 3FF,用万用表确实有分压1.8V左右的,请各位大神帮忙看下
|