我们在使用中可能经常用到ADC,同时也可能需要多通道进行轮训转换,今天我测试下使用STM32CUBEMX怎样配置我们的ADC多通道采集。
首先我们找我们的原理图,查看所有的模拟通道的接口。之后就是在cubemx中生成。
选择所有的ADC通道,注意这里好像支持了差分输入,所以我们需要注意,把两两之间的差分配置给去掉。
全部配置成单端。
采用非DMA轮训方式采集,就需要使能我们的不连续转换方式,不连续转换数量填1,然后我们的ADC位数也是上升了,来到了14位,同时其还有支持过采样技术,这里都不展开了,上面配置好之后我们配置下面的Rank这里按照我们的转换通道顺序对应下即可,这样就不会很乱了。
之后配置PWR,模式换成DC-DC。然后生成工程即可。
- if (HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK)
-
- {
-
- Error_Handler();
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- while (1)
-
- {
-
-
-
-
-
-
-
-
-
-
-
- for(i=0;i<6;i++)
-
- {
-
- HAL_ADC_Start(&hadc1);
-
- HAL_ADC_PollForConversion(&hadc1,10);
-
- ADC_Value[i] = HAL_ADC_GetValue(&hadc1);
-
- }
-
- HAL_Delay(500);
-
-
-
-
-
- }
在main函数中还是很简单的,先进行校准,然后开始采集。循环采集6次,存储数据。
不过搞到这里还不行,你会发现一直停在校准函数中,这时候我们需要stm32u5xx_hal_msp.c打开这个文件,添加两句话。主要就是使能VDDA电源供电,VDDA顾名思义就是模拟电源供电。这样就能采集数据了。
当我们接入3.3V给模拟口就会发现其数值满偏了,说明是正常的,后续通过计算就能转换出模拟电压了。