STM32CubeIDE(STM32L432KC片上ADC)
目录
一、概念
二、使用
1、定时器触发模式
1.1 软件配置
1.2 代码编写
2、定时器触发ADC 多通道+DMA
2.1 软件配置
2.2 代码编写
一、概念
1. 类型与精度:STM32L432KC的ADC是一个12位逐次逼近型模拟数字转换器,能够提供高精度的模拟信号测量。其精度通常优于±0.25%。
2. 通道数量:该ADC拥有多个输入通道,允许连接至不同的外部引脚以及一些内部源(如温度传感器、VREFINT等),能够测量16个外部信号源加上2个内部信号源,共计18个通道,这些通道分为规则通道组和注入通道组。
3. 转换速率:STM32L4系列的ADC支持多种采样率设置,可以根据应用需求调整转换速度与功耗之间的平衡。STM32L432KC的ADC支持高达几兆赫兹的采样率,具体取决于系统时钟配置。
4. 灵活的配置:通过STM32CubeMX软件或直接编程,用户可以灵活配置ADC的工作模式,包括但不限于连续转换、扫描模式(多通道连续转换)、单次转换或由事件触发的注入转换等。
5. 低功耗特性:作为STM32L4系列的一员,该ADC设计注重低功耗操作,支持多种电源模式,确保在不同应用场景下都能保持高效的能源利用。
6. 硬件过采样:STM32L432KC的ADC支持硬件过采样功能,可以通过增加采样次数提高有效分辨率,这对于需要高精度测量的应用非常有用。
7. 校准功能:为保证测量精度,该ADC还支持校准功能,用户可以通过相应的校准寄存器进行校正,以补偿由于制造工艺产生的误差。
8、香农采样定理:又称为奈奎斯特-香农采样定理,是信息论、通信工程和信号处理中的一个关键理论。该定理主要由哈里·奈奎斯特(Harry Nyquist)和克劳德·香农(Claude Shannon)分别在1928年和1949年提出和完善,它描述了为了能够从样本中无失真地重构原始连续信号所需的最低采样频率。根据香农采样定理:如果一个信号x(t)是带限的,即它的频谱在|f| > W Hz处为零,则只要采样频率fs大于信号最高频率的两倍,即fs > 2W Hz,就可以从采样值中完全恢复原信号。
二、使用
1、定时器触发模式
1.1 软件配置
①配置ADC通道五触发方式为TIM6溢出触发
②配置TIM6 1s溢出一次
③打开ADC中断,TIM6溢出中断不需要开
1.2 代码编写
①先打开TIM6定时和ADC中断
HAL_ADC_Start_IT(&hadc1); HAL_TIM_Base_Start(&htim6); while (1) { HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin); HAL_Delay(500); }
②在ADC回调函数中读取ADC采集数据
uint32_t val=0; void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) { if(hadc->Instance ==ADC1) { val=HAL_ADC_GetValue(&hadc1); printf("val:%d\r\n",(int)val); } }
2、定时器触发ADC 多通道+DMA
2.1 软件配置
①开三个通道
②DMA设置,循环转换模式
③ADC配置,其余配置同上定时器触发模式(ADC中断依旧要打开)
2.2 代码编写
①以DMA方式启动ADC,数据存储在buffer中。
uint32_t len=3; uint32_t buffer[len]; HAL_ADC_Start_DMA(&hadc1,buffer,len); HAL_TIM_Base_Start(&htim6); while (1) { HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin); HAL_Delay(500); }
②在回调函数中查看数据
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) { printf("val: %d,%d,%d \r\n",buffer[0],buffer[1],buffer[2]); }