淘宝商城网上购物网,优化网站找哪家,网站建设进程方案,wordpress title 自定义查看《STM32中文参考手册》里ADC的介绍和特性 STM32的ADC最大转换速率为1Mhz#xff0c;即1us#xff0c;在ADCCLK14M#xff0c;采样周期为1.5个ADC时钟下得到。当ADC的时钟超过14M时#xff0c;将导致结果准确度下降。 规则通道相当于正常运行的程序。注入通道就相当于中…查看《STM32中文参考手册》里ADC的介绍和特性 STM32的ADC最大转换速率为1Mhz即1us在ADCCLK14M采样周期为1.5个ADC时钟下得到。当ADC的时钟超过14M时将导致结果准确度下降。 规则通道相当于正常运行的程序。注入通道就相当于中断。因此注入通道的转换可以打断规则通道的转换在注入通道被转换完成之后规则通道才得以继续转换。 单次、连续、扫描模式的理解
举例用ADC1规则通道的顺序为CH0CH1CH2CH3。
1、非扫描模式 在单次转换模式下启动ADC1则①开始转换CH0转换完成后停止等待ADC的下一次启动继续从第①步开始转换。 在连续转换模式下启动ADC1则①开始转换CH0转换完成后回到第①步。
2、扫描模式 在单次转换模式下启动ADC1则 ①开始转换CH0 ②转换完成后自动开始转换CH1 ③转换完成后自动开始转换CH2 ④转换完成后自动开始转换CH3 ⑤转换完成停止等待ADC的下一次启动下一次ADC启动后从第①步开始转换。 在连续转换模式下启动ADC1,则 ①开始转换CH0 ②转换完成后自动开始转换CH1 ③转换完成后自动开始转换CH2 ④转换完成后自动开始转换CH3 ⑤转换完成后返回第一步。 下面以规则通道的单次转换为例。 ADC初始化配置示例
void Adc_Init(void)
{ ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE ); RCC_ADCCLKConfig(RCC_PCLK2_Div6);GPIO_InitStructure.GPIO_Pin GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN;GPIO_Init(GPIOA, GPIO_InitStructure); ADC_DeInit(ADC1);ADC_InitStructure.ADC_Mode ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode DISABLE;ADC_InitStructure.ADC_ContinuousConvMode DISABLE;ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel 1;ADC_Init(ADC1, ADC_InitStructure); ADC_Cmd(ADC1, ENABLE);ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1));ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));
} 单次转换获取ADC值示例
u16 Get_Adc(u8 ch)
{ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));return ADC_GetConversionValue(ADC1);
} 通常我们不会直接使用单次采集得到的ADC而是多采集几次可以求算术平均值也可以去掉一个最高值和一个最低值再求算术平均值。这样处理后得到的ADC值更可靠。
代码示例
u16 Get_Adc_Average(u8 ch, u8 times)
{u32 temp_val 0;u8 t;for(t 0; t times; t){temp_val Get_Adc(ch);delay_ms(5);}return (temp_val / times);
} 获取电压值是ADC常见的应用计算公式为U adc_value * (3.3 / 4096)。 STM32 ADC的分辨率为12所以4096。3.3V为参考电压值注意不是VCC!
正点原子战舰开发板ADC参考电压电路如下 可以简单理解为VDDA就是ADC的参考电压值即3.3V。
《STM32中文参考手册》里ADC引脚的定义