ADC——电压采集
初始化参数解析
首先在CubeMx当中新建工程,设置一些初始化的参数,具体如下图所示。
下面具体解释一下。
ADC_Resolution:配置ADC的分辨率,可选的分辨率有12位、10位、8位和6位。分辨率越高,AD转换数据精度越高,转换时间也越长;分辨率越低,AD转换数据精度越低,转换时间也越短。
ScanConvMode:可选参数为ENABLE和DISABLE,配置是否使用扫描。如果是单通道AD转换使用DISABLE,如果是多通道AD转换使用ENABLE。
ADC_ContinuousConvMode:可选参数为ENABLE和DISABLE,配置是启动自动连续转换还是单次转换。如果设置为DISABLE,则是单次转换。两者的区别在于连续转换直到所有的数据转换完成后才停止转换,而单次转换则只转换一次数据就停止,要再次触发转换才可以。所以如果需要一次性采集1024个数据或者更多,则采用连续转换。
ADC_ExternalTrigConvEdge:外部触发极性选择,如果使用外部触发,可以选择触发的极性,可选有禁止触发检测、上升沿触发检测、下降沿触发检测以及上升沿和下降沿均可触发检测。
ADC_ExternalTrigConv:外部触发选择。可根据项目需求配置触发来源。实际上,我们一般使用软件自动触发。软件触发当设置开始转换时ADC会立即启动转换,硬件触发则需要等待指定的外部事件发生时ADC才会启动转换。
ADC_DataAlign:转换结果数据对齐模式,可选右对齐ADC_DataAlign_Right或者左对齐ADC_DataAlign_Left。一般我们选择右对齐模式。
ADC_NbrOfChannel:AD转换通道数目。
ADC_Mode:ADC工作模式选择,有独立模式、双重模式以及三重模式。
ADC_Prescaler:ADC时钟分频系数选择,ADC时钟是有PCLK2分频而来,分频系数决定ADC时钟频率,可选的分频系数为2、4、6和8。
ADC_DMAAccessMode:DMA模式设置,只有在双重或者三重模式才需要设置,可以设置三种模式,具体可参考参考手册说明。
ADC_TwoSamplingDelay:2个采样阶段之前的延迟,仅适用于双重或三重交错模式。
一般过程
在CubeMx当中设置完初始参数之后,在keil当中编写代码。
while (1)
{
HAL_ADC_Start(&hadc1); //开启ADC转换
HAL_ADC_PollForConversion(&hadc1,50); //等待ADC转换结束
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC)) //获取转换状态
{
Voltage = ((float