4、ADC采集
学习目标
1.了解ADC基本知识。
2.学习ADC的基本使用,将采集到的数值显示在串口助手上。
STM32F1 的 ADC 介绍:
ADC(analog to digital converter)即模数转换器,它可以将模拟信号转 换为数字信号。按照其转换原理主要分为逐次逼近型、双积分型、电压频率转换 型三种。
STM32 拥有 1~3 个 ADC(STM32F101/102 系列只有 1 个 ADC),这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。 STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。
STM32F103 系列最少都拥有 2 个 ADC,我们选择的 STM32F103C8T6 包含有 2 个 12位ADC。STM32 的 ADC 最大的转换速率为 1Mhz,也就是转换时间为 1us(在 ADCCLK=14M,采样周期为 1.5 个 ADC 时钟下得到),不要让 ADC 的时钟超过 14M,否则将导致结果准确度下降。
STM32 的 ADC 在单次转换模式下,只执行一次转换,该模式可以通过 ADC_CR2 寄存器的 ADON 位(只适用于规则通道)启动,也可以通过外部触发启动(适用于规则通道和注入通道),这是 CONT 位为 0。
以规则通道为例,一旦所选择的通道转换完成,转换结果将被存在 ADC_DR 寄存器中,EOC(转换结束)标志将被置位,如果设置了 EOCIE,则会产生中断。然后 ADC 将停止,直到下次启动。
STM32 的 ADC 通道与GPIO 对应表如下:
![](/assets/img/stm32/STM32F103C8T60.96TFT/68.png)
硬件搭建
ADC采集实验所用电位器模块及杜邦线需要另购,否则缺少重要配件,无法完成本节课程。
![](/assets/img/stm32/STM32F103C8T60.96TFT/69.png)
三、程序分析
ADC初始化代码:
![](/assets/img/stm32/STM32F103C8T60.96TFT/70.png)
获取ADC的值:
![](/assets/img/stm32/STM32F103C8T60.96TFT/71.png)
获得多次取ADC平均值:
![](/assets/img/stm32/STM32F103C8T60.96TFT/72.png)
获取实际电压:
![](/assets/img/stm32/STM32F103C8T60.96TFT/73.png)
显示实际电压:
![](/assets/img/stm32/STM32F103C8T60.96TFT/74.png)
主函数:
![](/assets/img/stm32/STM32F103C8T60.96TFT/75.png)
四、实验现象
程序下载完成之后,对串口助手进行如下图配置之后,调节电位器旋钮,可以在串口助手接收窗口查看到电压在0-3.3v之间实时变化的效果。
![](/assets/img/stm32/STM32F103C8T60.96TFT/76.png)