ADC

1.Introduction

12位ADC是逐次逼近型模数转换器(12位分辨率 采集电压=Vref*ADC_DR/4096),多达18个多路服用通道允许测量16个外部和2个内部信号。不同通道的AD转换可以用作单次,连续,扫描,不连续的模式。ADC转换的结果可以以左对齐或者右对齐的方式存放在16位的数据寄存器中。模拟看门狗可以检测输入电压是否在用户定义的最高和最低电压的阈值之内。ADC的时钟是由PCLK2经过分频产生的一个不超过14MHZ的时钟信号。

2.ADC main features

• 12-bit resolution
• Interrupt generation at End of Conversion, End of Injected conversion and Analog
watchdog event
• Single and continuous conversion modes
• Scan mode for automatic conversion of channel 0 to channel ‘n’
• Self-calibration
• Data alignment with in-built data coherency
• Channel by channel programmable sampling time
• External trigger option for both regular and injected conversion
• Discontinuous mode
• Dual mode (on devices with 2 ADCs or more)
• ADC conversion time:
– STM32F103xx performance line devices: 1 µs at 56 MHz (1.17 µs at 72 MHz)
– STM32F101xx access line devices: 1 µs at 28 MHz (1.55 µs at 36 MHz)
– STM32F102xx USB access line devices: 1.2 µs at 48 MHz
– STM32F105xx and STM32F107xx devices: 1 µs at 56 MHz (1.17 µs at 72 MHz)
• ADC supply requirement: 2.4 V to 3.6 V
• ADC input range: VREF- ≤ VIN ≤ VREF+
• DMA request generation during regular channel conversion
               

3.ADC functional description

1) ADC on-off control

通过设定ADC_CR2寄存器的ADON标志位来上电启动,ADC转换发生在ADON设定一秒后。你可以通过reset ADON位来中止转换并进入Power down模式,这个模式下ADC将几乎不损耗电源。

2)ADC clock

时钟控制器提供的时钟ADCCLK与PCLK2(APB2)同步。RCC控制器具有用于ADC时钟专用的可编程预分频器。

3)Channel selection

16个多路复用的通道。可以将他转化两个组:规则组和注入组。一组由一系列能在任何通道以任何顺序完成的转换组成。比如,他可以以下列序列进行转换:Ch3,Ch5,Ch5...

规则组:最多由16个转换组成。转换的通道和转换的个数由ADC_SQRx寄存器和ADC_SQR1的L[3:0]寄存器指定

注入组:最多由4个转换组成。转换的通道和转换的个数由ADC_JSQR寄存器和ADC_JSQR的L[1:0]寄存器指定

4)单次转换模式

在单次转换模式中ADC只做一次转换。这个模式可以由set ADC_CR2寄存器中ADON位或者外部触发,当CONT位位0时:

一旦一次转换完成

规则组:

转换的数据存储在16位的ADC_DR寄存器中

EOC(转换结束标志位)被置位

如果set EOCIE ,一个中断将会产生

5)连续转换模式

在连续转换模式中,ADC在一个转换结束后立即开始。set ADON 或者由外部触发

CONT位为1:

6)扫描模式:

这个模式用于扫描一个组的模拟通道

通过set ADC_CR1寄存器的SCAN位来选择扫描模式,一旦选择这个模式,通过ADC_SQRx寄存器选择的所有通道将会被转换。单次转换执行这个组的每一个 通道。在每一个转换结束,这个组的下个通道会自动转换。如果set CONT,转换不会在这个组的最后一个通道转换完成后结束,而是继续从这个组的第一个通道开始继续转换。

但使用扫描模式时,DMA位一定要置位,直接存储器访问控制器用于在每次更新ADC_DR regiseter把规则组转换后的数据传送到SRAM.注入组每次被转换的数据存储在ADC_JDRx寄存器中

7)非连续模式

规则组

使能这个模式通过设置ADC_CR1寄存器中的DISCEN。这个模式可以转换通过ADC_SQRx寄存器中选择的序列的不大于8的转换序列。通过向ADC_CR1寄存器中的DISCNUM[2:0]bits写入值来指定n。

当发生一个外部出触发的时候,开始转换下一个n个ADC_SQRx寄存器中选定的序列直到所有序列转换完成。序列的总长度由ADC_SQR1的L[3:0]指定。

Example:
n = 3, channels to be converted = 0, 1, 2, 3, 6, 7, 9, 10
1st trigger: sequence converted 0, 1, 2. An EOC event is generated at each conversion
2nd trigger: sequence converted 3, 6, 7. An EOC event is generated at each
conversion
3rd trigger: sequence converted 9, 10. An EOC event is generated at each conversion
4th trigger: sequence converted 0, 1, 2. An EOC event is generated at each conversion

8)校准

ADC有一个内建的校准模式。校准显著的减少了因为内部电容器组的变化。在校准期间,会为每一个

电容组 计算出一个纠错码,在所有随后的转换中,会使用此代码消除每一个电容组的误差贡献。

通过设置ADC_CR2的CAL开始启动校准。校准一旦结束,CAL位就会被硬件reset并且正常转换将会被执行。推荐在上电的时候开始一次校正。校正码将会被存储在ADC_DR中只要校正阶段结束。

9)数据对齐

ADC_CR2寄存器中的ALIGN bit 选择转换之后数据存储的对其模式,左对齐或者右对齐。

10)逐个通道可编程采样时间

ADC采集输入电压的时钟周期可以用ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]改变。每个通道可以以不同的时间采样。

总的采样时间可以用下面公式计算:

Tconv = Sampling time + 12.5 cycles

比如用ADCCLK=14MHZ,采样时间为1.5个周期

Tconv = 1.5 + 12.5 = 14 cycles = 1us
 

猜你喜欢

转载自blog.csdn.net/hqm178933/article/details/83241420
ADC
今日推荐