嵌入式ARM芯片ADC模数转换功能分析

303 阅读2分钟

1 STM32 F4系列ADC模数转换

  • STM32F407ZGT6 有 3 个 ADC,每个 ADC 有 12 位、10 位、8 位和 6 位可选,每个 ADC 有 16 个外部通道。另外还有两个内部 ADC 源和 VBAT 通道挂在 ADC1 上。ADC 具有独立模式双重模式三重模式,对于不同 AD 转换要求几乎都有合适的模式可选。 image.png

2 STM32H743系列ADC模数转换

  • STM32H743 有 3个 ADC,每个 ADC有 16 位、14位、12 位、10 位和 8 位可选,每个ADC 有 20个外部通道。ADC3的通道 ADC3_INP/INN18 连接到芯片内部的温度传感器V SENSE ,通道 ADC3_INP/INN19 连接到了内部参考电压 V REFINT 连接,通道ADC3_INP/INN17 连接到了备用电源 V BAT 。ADC2通道 16、17连接到了 DAC的内部通道1、2。ADC具有独立模式、双重模式,对于不同 AD 转换要求几乎都有合适的模式可选。
  • STM32H743 的 ADC 最大的转换速率为 4.5Mhz,也就是转换时间为 0.22us(12 位分辨率时),不要让 ADC 的时钟超过 36M,否则将导致结果准确度下降。
  • STM32H743 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。规则通道相当于你正常运行的程序,而注入通道呢,就相当于中断,STM32H743 其 ADC 的规则通道组最多包含 16 个转换,而注入通道组最多包含 4 个通道。
  • 引脚对照表: image.png

3 HAL库ADC模块开发

3.1 F407 ADC模块开发

image.png image.png

  • 分频计算 image.png image.png image.png
  • 时钟配置,配置ADC属性(168M,最大36M,所以4分频) image.png image.png image.png image.png
  • ADC配置 image.png image.png image.png
  • 生成工程 image.png

3.2 H743 ADC模块开发

image.png

  • 配置晶振 image.png
  • 配置串口 image.png image.png
  • 配置ADC通道 image.png
  • 时钟配置 image.png image.png image.png image.png
  • 程序设计 image.png image.png
  • ADC属性设置 image.png
  • 通道一属性 image.png image.png image.png
  • 使用串口打印 image.png image.png image.png
  • ADC代码开发 image.png image.png image.png image.png

3.3 F4系列多重模式(速率相对于单重模式要快三倍)

image.png image.png

  • 若要达到36M时,需要这样设置,进行1分频后,为36M ADC采样率 image.png
  • 若要采用21M速率时,设置PCLK2为84M, 进行4分频后,为21M ADC采样率 image.png image.png image.png image.png image.png
  • 以ADC占主导,所以启动顺序3,2,1,只要启动ADC1的DMA即可 image.png image.png image.png image.png