- UID
- 129443
- 性别
- 男
|
我在使用GP32芯片里面的AD模块进行AD采样时,发现当被测电压小于0.5V时,AD采样的值均为0x16,当被测电压大于0.5V时,AD采样的值才正确,这是什么原因?? 部分程序如下:
//寄存器定义
ADSCR = 0b00000000; //关闭ADC电源,转换结束不产生中断,一次ADC转换,
ADCLK = 0b00110000; //A/D采用内部总线时钟,ADC采样频率= Fbus/n=2M/2=1M左右
//一路AD采样
/**** ADC获取1路AD转换结果 channel:通道号 *****/
unsigned char ADCvalue(unsigned char channel)
{
//选取通道号ADCH4-ADCH0=000000--00111
unsigned char tmp;
channel = channel & 0b00011111;
tmp = ADSCR | channel;
ADSCR = tmp;
do
{
asm("nop");
}while (ADSCR_COCO == 0); //转化结束
tmp = ADR; //读采样结果
return(tmp);
}
|
|