8h3k32s2 adc采集
各位大神求助个问题,用主控芯片8h3k32s2的adc采集电压,供电是3.3v,0v时采集出来原始值为3426,3.3v采集出来原始值为3596,很小的变化这是为什么,求解答一下谢谢程序是这样的
void ADC_config(void)
{
ADC_CONTR|=0x80; //开AD转换电源
delay_ms(10); //适当延时等待AD转换供电稳定
ADC_CONTR|=0x0A; //选择P0.4作为模拟功能AD使用
ADC_CONTR&=0xFA; //选择P0.4作为模拟功能AD使用
ADCCFG&=0xFC; //AD转换速度为416个时钟数转换一次
ADCCFG|=0x0C; //AD转换速度为416个时钟数转换一次
ADC_CONTR&=0xDF; //清AD转换完成标志
EADC=0; //禁止ADC转换中断
ADCCFG|=0x20; //ADC转换结果ADC_RES存高4位,ADC_RESL存低8位
ADC_CONTR|=0x40; //启动AD转换,ADC_START=1
}
/**************************************
功能描述:ADC口检测AD转换值函数
入口参数:无
返回值:ADC 12位数据
***************************************/
uint16 Get_ADC12bitResult(void)
{
uint16 AD_Dat=0;
ADC_CONTR&=0xDF; // 将ADC_FLAG清0
ADC_CONTR&=0xBF; //关闭AD转换,ADC_START=0
//12位AD结果的高4位放ADC_RES的低4位,低8位在ADC_RESL
AD_Dat = ADC_RES; //将ADC_RES低4位移到应在的第9位至第12位
AD_Dat <<= 8;
AD_Dat|= ADC_RESL; //将ADC_RESL的8位移到应在的低8位
ADC_CONTR|=0x40; //启动AD转换,ADC_START=1
return AD_Dat;
}
采集ADC的时候需要将对应的IO口设置为高阻输入,否则其他的模式下,IO口同时在输出,就会对导致采样数据不正确 王昱顺 发表于 2025-2-18 14:53
采集ADC的时候需要将对应的IO口设置为高阻输入,否则其他的模式下,IO口同时在输出,就会对导致采样数据不 ...
设置了用的p1.1
GPIO_InitStructure.Pin= GPIO_Pin_1; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
GPIO_InitStructure.Mode = GPIO_HighZ; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P1,&GPIO_InitStructure); //初始化 王昱顺 发表于 2025-2-18 14:53
采集ADC的时候需要将对应的IO口设置为高阻输入,否则其他的模式下,IO口同时在输出,就会对导致采样数据不 ...
能看看上述原理图中有没有错误吗其中的avcc和agnd要接吗
mcxhoten 发表于 2025-2-18 14:56
设置了用的p1.1
GPIO_InitStructure.Pin= GPIO_Pin_1; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7 ...
原因是因为你设置ADC通道的时候设置为10通道了,数据手册查询,对应的是P0.2端口。
可以尝试将ADC的配置函数和查询函数更改为官方的示例部分,原函数有许多问题。 mcxhoten 发表于 2025-2-18 15:00
能看看上述原理图中有没有错误吗其中的avcc和agnd要接吗
是需要接的,具体详见手册说明:
王昱顺 发表于 2025-2-18 15:04
原因是因为你设置ADC通道的时候设置为10通道了,数据手册查询,对应的是P0.2端口。
可以尝试将ADC的配置 ...
好的感谢 https://www.stcaimcu.com/forum.p ... id=15124&pid=146538
mcxhoten 发表于 2025-2-18 15:00
能看看上述原理图中有没有错误吗其中的avcc和agnd要接吗
AVCC与AGND没有连接,则ADC相关的模拟电路没有电源,所以异常。
请链接AGND与GND链接,AVCC与VCC链接,即可正常。
页:
[1]