STM32F103 一:ADC

  • 前言
  • 总结
  • 数据采集系统
  • A/D转换原理
  • A/D转换器的主要参数
  • STM32 ADC的一些配置
  • 扫描模式
  • 规则组注入组
  • 转换模式
  • ADC 寄存器
  • ADC实验


前言

将模拟量转换为数字量的过程称为模数(A/D)转换,完成这一转换的器件叫模数转换器(ADC),将数字量转换为模量的过程叫数模(D/A)转换,完成这一转换的器件成为数模转换器(DAC)。
可以去看看刘凯老师的课:https://www.bilibili.com/video/BV1at411K74k/?p=52&spm_id_from=pageDriver&vd_source=9385b7f8c739b9e3ef3f21ddaebd2eb9

总结

  1. STM32的ADC通常最大精度是12位,使用时也可以配置成10位、8位或6位等。精度会影响转换速度和数据计算。
  2. STM32中ADC的时钟通常由PCLK2(ABP2外设时钟)分频得来,在 STM32F405RG 中最大可以达到36MHz。
  3. ADC每处理一次数据分为 采样 和 转换 两个过程。 采样时间可以配置,比如 STM32F405RG 中最小为3个ADC时钟周期;转换时间和精度有关,12位精度下为12个ADC时钟周期、10位精度下为10个ADC时钟周期,依此类推。**每采样一个数据所需的时间为 (采样周期 + 转换周期) / ADC时钟频率。**比如当ADC时钟频率为30MHz,采样周期选最小值3,精度为12位时,每处理一次数据耗时为 (3+12)/30/1000000 (秒) = 0.5微秒
  4. 引脚数量大于等于100的封装上通常会有 VREF 引脚,ADC可转换的电压不大于 VREF 上的电压;引脚数量小于100的封装其 VREF 直接就是在芯片内部连接到 VDDA 的。
  5. ADC工作最后得到的数据换算成真实电压的时候主要和 VREF 以及精度有关。比如12位精度下 真实电压 = 数据 * VREF / (4096 - 1) ,10位精度下 真实电压 = 数据 * VREF / (1024 - 1) ,依此类推。ADC因为工作原理关系本身有1个分辨率的误差;单片机在除以4096、1024等这些数值的时候可以用右移的方式提高效率。所以通常可以不要 -1 ,即12位精度下 真实电压 = 数据 * VREF / 4096
  6. STM32芯片VDD、VDDA和VREF的关系 所以VDDA必须和VDD连接,因为系统VDD电压一般是3.3V,所以导致ADC的VREF参考电压只能是3.3V。
  7. HAL库对很多外设的使用设计了 轮询 、中断 、DMA 三种方式。STM32的ADC采样转换有 单次 / 连续 转换模式 。另外每个ADC每次处理时只能处理一个通道,所以多通道时还涉及 扫描 模式 。
  8. STM32的ADC还有规则转换(Regular)和注入转换(Injected),注入就相当于在正常规则转换过程中插入中断,优先进行注入转换
  9. stm32 ADC的使用
    HAL库ADC的使用

    固件库ADC使用

数据采集系统

数据采集系统由模拟信号采集,ADC,数字信号处理三大部分组成。

stm32f103 demo_arm


AD上传感器器转换后的信息一般为电压,电阻等电学量。

stm32f103 demo_stm32f103 demo_02

A/D转换原理

A/D转换包含采样保持和量化编码两个内容。一般AD转换的时间在us级别。

采样后得到的样点幅值转换为数字量,即为量化,编码的过程。

stm32f103 demo_数据_03

A/D转换器的主要参数

STM32的分辨率一般是12位

stm32f103 demo_单片机_04

STM32 ADC的一些配置

stm32f103 demo_单片机_05


规则组做常规,注入组做特别检测

ADC时钟(转换速率),支持ADC的GPIO引脚,中断,看门狗(监测外部量的变化而触发中断),触发器(采集频率)

stm32f103 demo_stm32_06


stm32f103 demo_单片机_07

扫描模式

stm32f103 demo_stm32_08

规则组注入组

转换启动,数据寄存器

stm32f103 demo_stm32_09

转换模式

stm32f103 demo_单片机_10


stm32f103 demo_数据_11


stm32f103 demo_arm_12


DMA可以将数据转到SRAM里面。

stm32f103 demo_stm32_13

ADC 寄存器

stm32f103 demo_数据_14


stm32f103 demo_stm32f103 demo_15

ADC实验

HAL库ADC的使用

固件库ADC使用