本文以STM32F429IGT6单片机为例。 STM32F429IGT6有 3 个 ADC,每个 ADC有 12 位、10 位、8 位和 6 位可选,每个ADC有 16 个外部通道。另外还有两个内部 ADC源和 V BAT 通道挂在 ADC1 上。ADC具有独立模式、双重模式和三重模式,对于不同 AD 转换要求几乎都有合适的模式可选。ADC功能非常强大,具体的我们在功能框图中分析每个部分的功能。 单个ADC功能框图如下所示:
掌握了 ADC的功能框图,就可以对 ADC有一个整体的把握,在编程的时候可以做到了然如胸,不会一知半解。框图讲解采用从左到右的方式,跟 ADC 采集数据,转换数据,传输数据的方向大概一致。 电压输入范围 ADC输入范围为:V REF- ≤ V IN ≤ V REF+ 。由 V REF- 、V REF+ 、V DDA 、V SSA 、这四个外部引脚决定。
我们在设计原理图的时候一般把 V SSA 和 V REF- 接地,把 V REF+ 和 V DDA 接 3V3,得到ADC的输入电压范围为:0~3.3V。
如果我们想让输入的电压范围变宽,去到可以测试负电压或者更高的正电压,我们可以在外部加一个电压调理电路,把需要转换的电压抬升或者降压到 0~3.3V,这样 ADC就可以测量了。 若测量的电压超过0~3.3V,一个简单的处理办法为:处理后电压的输入范围为(-10V~10V)
输入通道 我们确定好 ADC输入电压之后,那么电压怎么输入到 ADC?这里我们引入通道的概念,STM32 的 ADC多达 19个通道,其中外部的 16个通道就是框图中的 ADCx_IN0、ADCx_IN1...ADCx_IN5。这 16 个通道对应着不同的 IO 口,具体是哪一个 IO 口可以从手册查询到。其中 ADC1/2/3 还有内部通道: ADC1的通道 ADC1_IN16 连接到内部的 VSS,通道 ADC1_IN17 连接到了内部参考电压 V REFINT 连接,通道 ADC1_IN18 连接到了芯片内部的温度传感器或者备用电源 V BAT 。ADC2 和 ADC3 的通道 16、17、18 全部连接到了内部的 VSS。
|