打印
[MM32软件]

请问MM32 AD读取问题,设定AD0通道动作读出来的数值不变维持在某值是设定上哪里有问题?

[复制链接]
874|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2024-3-11 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位安安
想请教一个有关于AD问题
目前我使用MM32F031V8T这个MCU
我目前我会用到两组AD通道
AD0以及AD1动作
我发现在切换过程中疑似有问题
于是我就分开独立进行
发现设定AD0通道动作读出来的数值不变维持在某值
可是设定AD1却是可以行得通
是我设定上哪里有问题吗?
以下附程式码(初始化及读值)
不好意思 要请教大家多多帮忙了><



void ADC_Init(void){
RCC->AHBENR  |= 1<<17;      //使能GPIOA时钟
    RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;   //使能ADC1时钟
    GPIOA->CRL  &= 0XFFFFFF00;     //PA0 anolog输入
    RCC->APB2RSTR |= RCC_APB2RSTR_ADC1RST;    //ADC interface reset
    RCC->APB2RSTR &= ~(RCC_APB2RSTR_ADC1RST); //ADC interface reset close   
    ADC1->ADCFG |= ADCFG_ADCPRE_8|ADCFG_ADCPRE_10;//osc 8M*2/1 = 16M,16MHz/(7+1)/2 = 1Mhz =>period = 2us
    ADC1->ADCR  &= ~(ADCR_ADMD_PERIOD|ADCR_ADMD_CONtiNUE|ADCR_ALIGN_LEFT);//单次非周期模式,数据右对齐
ADC1->ADCR   |= ADCR_ADMD_SINGLE;
    ADC1->ADCFG |= ADCFG_ADEN;     //ADC使能
    ADC1->ADCR |= ADCR_ADST;     //开始转换
}

uint16_t Func_GetADValue(void){
usADSTA = ADC1->ADSTA;
ADC1->ADCFG &= ~ADCFG_ADEN;     //ADC Disable
ADC1->ADSTA = 0x00;
ADC1->ADCHS  = ADCHS_CHEN0;     //CH0=>ADCHS_CHEN0 ;CH0 =>ADCHS_CHEN1 (只改变这通道设定)
ADC1->ADCR |= ADCR_ADST;     //开始转换
ADC1->ADCFG |= ADCFG_ADEN;     //ADC enable
ADC1->ADCR |= ADCR_ADST;
do{
  usADSTA = ADC1->ADCR;
  usADSTA &= ADCR_ADST;
}while(usADSTA != 0);
usCH0Value = ADC1->ADDATA&0xfff;
return usCH0Value;
}

使用特权

评论回复
沙发
610u| | 2024-3-20 15:52 | 只看该作者
在ADC初始化函数中,您需要确保配置ADC的时钟、分频系数、工作模式等参数正确。请检查ADCFG和ADCR寄存器的配置是否符合您的需求。

使用特权

评论回复
板凳
610u| | 2024-3-20 15:54 | 只看该作者
也可以通过打印调试信息或者使用调试工具来进一步排查问题所在。

使用特权

评论回复
地板
610u| | 2024-3-20 16:45 | 只看该作者
在读取AD值之前,您通过配置ADCHS寄存器来选择AD通道,但在读取之后,您没有恢复ADCHS寄存器的值。这可能导致后续的AD转换仍然使用了AD1通道而不是AD0通道。建议在读取完成后,将ADCHS寄存器的值恢复为需要的通道。

使用特权

评论回复
5
610u| | 2024-3-20 17:05 | 只看该作者
在读取AD值之前,启动了一次AD转换,然后等待转换完成。但在这段等待的过程中,您并未检查转换是否完成。建议使用ADSTA寄存器中的标志位来判断AD转换是否完成,而不是简单地等待一段固定的时间。这样可以确保在转换完成之后再去读取AD值。

使用特权

评论回复
6
610u| | 2024-3-20 18:25 | 只看该作者
在读取AD值后,您直接返回了AD值。建议在返回之前,先将ADCFG寄存器中的ADEN位清除,再进行返回操作。这样可以在下一次读取AD值之前,确保ADC被禁用。

使用特权

评论回复
7
jcky001| | 2024-3-26 17:08 | 只看该作者
ADC初始化配置问题

使用特权

评论回复
8
两只袜子| | 2024-3-26 17:59 | 只看该作者
检查AD0通道所连接的模拟输入信号。如果该信号是一个固定值或者没有变化,ADC的读取结果自然会保持不变。

使用特权

评论回复
9
cr315| | 2024-3-26 19:30 | 只看该作者
检查ADC的供电电压和参考电压是否稳定且正确

使用特权

评论回复
10
laocuo1142| | 2024-3-26 20:10 | 只看该作者
件读取逻辑问题

使用特权

评论回复
11
powerantone| | 2024-3-26 21:46 | 只看该作者
可能是ADC模块本身存在故障

使用特权

评论回复
12
flycamelaaa| | 2024-3-26 22:00 | 只看该作者
检查ADC通道与模拟输入信号之间的硬件连接。确保没有短路、断路或接触不良等问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

379

主题

1429

帖子

1

粉丝