TQ210 ADC
int read_adc(int ch)
{
// 使能预分频功能,设置A/D转换器的时钟 = PCLK/(65+1)
TSADCCON0 = (1<<16)|(1 << 14) | (65 << 6);
// 清除位,设为普通转换模式,禁止read start
TSADCCON0 &= ~((1<<2)|(1<<1));
// 选择通道
ADCMUX = 1; //ch
// 设置位为1,启动A/D转换
TSADCCON0 |= (1 << 0);
// 当A/D转换真正开始时,位会自动清0
while (TSADCCON0 & (1 << 0));
// 检测位,当它为1时表示转换结束
while (!(TSADCCON0 &(1 << 15)) );
// 读取数据
return (TSDATX0 & 0xfff);
}
void adc_test(void)
{
printf("\r\n##################adc test################\r\n");
while(1)
{
printf("adc = %d\r\n",read_adc(1));
delay(0x100000);
}
}
请教天嵌工程师,按210手册和TQ210开发板原理图配置好后,一直没有数据显示,不知道那里配置不对,还是你们开发板有什么地方需要特点配置才能工作,在read_adc里debug发现while (TSADCCON0 & (1 << 0));一直退不出来,说明ADC转换没有启动。然后我用你们自带的ADC测试程序是可以测试,并且改变可调电阻AIN1的值能正常变化,说明硬件应该没问题。期待回复,谢谢。
自己顶下
怎么没有人回复呢 有人调试过吗
int read_adc(int ch)
{
// 使能预分频功能,设置A/D转换器的时钟 = PCLK/(65+1)
TSADCCON1=(1<<17)| (1<<16)|(1 << 14) | (65 << 6);
// 清除位,设为普通转换模式,禁止read start
TSADCCON1 &= ~((1<<2)|(1<<1));
// 选择通道
ADCMUX = 1; //ch
// 设置位为1,启动A/D转换
TSADCCON1 |= (1 << 0);
// 当A/D转换真正开始时,位会自动清0
while (TSADCCON1 & (1 << 0));
// 检测位,当它为1时表示转换结束
while (!(TSADCCON1 &(1 << 15)) );
// 读取数据
return (TSDATX1 & 0xfff);
}
改用这组寄存器,问题是一样的 没有人在TQ210上做这个裸机程序吗{:5_330:}
页:
[1]