实验要求:通过ADC1通道(PA1)采集电位器的电压,并显示ADC转换的数字量及换算后的电压值。
首先要确定最小刻度。
Vref=3.3V,所以输入电压有效范围在0V<=Vin<=3.3V,推导出最小刻度为 3.3V / 2^12(12位ADC)。
再确定转换时间。采样时间239.5个ADC时钟周期为例,可以得到转换时间为21us。
因为使用的是单通道,所以不使用扫描模式。因为未使用到DMA,所以使用单词扫描模式。
-----------------------------------------------------------------------------------------------------------------------
接下来介绍相关的HAL库函数:
1. HAL_ADC_Init():配置ADC工作参数;
2. HAL_ADCEx_Calibration_Start(): ADC校准;
3. HAL_ADC_MspInit(): 存放NVIC、CLOCK、GPIO初始化代码;
4.HAL_RCCEx_PeriphCLKConfig(): 设置扩展外设时钟,如:ADC、RTC等;
5. HAL_ADC_ConfigChannel(): 配置ADC相应通道的相关参数;
6. HAL_ADC_Start(): 启动A/D转换;
7. HAL_ADC_PollFortConversion(): 等待规则通道转换完成;
8. HAL_ADC_GetValue(): 获取规则通道通道A/D转换结果;
-----------------------------------------------------------------------------------------------------------------------
接下来介绍关键结构体:
1、ADC_HandleTypeDef g_adc_handle.Instance: ADC寄存器基地址;
2、g_adc_handle.Init.DataAlign: 数据对齐方式,有左/右对齐,一般选择右对齐;
3、g_adc_handle.Init.ScanConvMode: 扫描模式,此模式用于扫描一组模拟通道。通过ADC_CR1寄存器中