你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32G431开发板ADC的问题

[复制链接]
hujjj 提问时间:2020-4-8 12:33 /
    我使用STM32G431RB开发板开通了ADC1的11、14、15三个通道,通过DMA获得转化值,存在两个问题一直没有解决,一是获得的数组数据与实际通道很难一一对应,即有时重启后会出现数组对应通道的数据会与前次不同,比方说前次数组下标0是对应14通道,而重启后有可能会对应15通道。二是得到的数值不准确,我是用杜邦线连接的,将连接全部切断后数据仍然照旧显示,只有重启后才会显示近似0值,此时再连接上杜邦线,ADC的数值并不会变化。我的代码是通过STM32CubeMX配置的,也许是我哪里配置不正确所致。基本配置的截图如下:

    GPIO的设置:
adc2_01.jpg


    DMA设置:
adc2_02.jpg


adc2_03.jpg


    NVIC设置:
adc2_04.jpg


    用户常数设置:
adc2_05.jpg


    CAD参数设置:
adc2_06.jpg


adc2_07.jpg


adc2_08.jpg


adc2_09.jpg


adc2_10.jpg


    在程序中相关的代码:
    DAM数组定义:
uint32_t adc_buff[4];
uint16_tadc_val[3][11];  //存放10组数据及平均值

    主程序中的相关代码:
    HAL_ADCEx_Calibration_Start(&hadc1,1);   //开启自动校准
    HAL_ADC_Start_DMA(&hadc1,adc_buff,3);    //启动AD转换开关并使能DMA传输和中断


    读取转换值的函数:
void Get_ADC_Val(uint8_t id)
{  
    uint8_t i;
    HAL_ADC_Start_DMA(&hadc1,(uint32_t *) adc_buff,3);
HAL_ADC_ConvHalfCpltCallback(&hadc1);
for ( i=0;  i<3;  i++ )   //分别处理三路ADC
    {   
        adc_val[id] = (float)(adc_buff&0xfff)*2000/4096;  //最大测量电压20V,保留两位小数
    }
    HAL_ADC_Stop_DMA(&hadc1);
}

    请教各位看看我的设置有哪些问题,谢谢!
收藏 评论3 发布时间:2020-4-8 12:33

举报

3个回答
hujjj 回答时间:2020-4-8 12:36:32
这是主程序中调取ADC数据和计算平均值的代码:

            //ADC处理
                        adc_id++;
                        if(adc_id > 9) adc_id = 0;
                        Get_ADC_Val(adc_id);         //读取adcl转换数据,存放在id下标数组中

            for( i=0; i<3; i++){
                                adc_val[i][10] = 0;      //计算10次测量的平均值
                                for( j=0; j<10; j++){
                                    adc_val[i][10] += adc_val[i][j];
                                }
                                adc_val[i][10] = adc_val[i][10] / 10;
                        }
hujjj 回答时间:2020-4-8 14:04:08
是不是开启的通道不连续的问题?我目前开通的是11、14和15三个通道。
hujjj 回答时间:2020-4-8 18:44:28
经过上网搜索,对比各项设置,已经基本解决了问题。由于反复修改,目前尚不清楚究竟是哪里设置不正确,还待慢慢对比截图。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版