要使用ADC,首先要打开ADC,使其工作。可将ADC_CR2寄存器中的ADON位置1来为ADC供电。首次将ADON位置1时,会将ADC从掉电模式中唤醒。可将ADON位清0来停止转换并使ADC进入掉电模式。在此模式下,ADC几乎不耗电(只有几微安)。
STM32的ADC启动有软启动与外部触发事件启动两种。
1.软启动
这个方法是最直接也是最简单的,由控制位置1启动,置0结束。其中ADC_CR2中的SWSTART位用于规则通道的启停,JSWSTART位用于注入通道的启停。
2.外部触发事件启动
图8-2 外部触发事件源
如图8-2所示,注入通道与规则通道各有15个定时器触发源。注入通道的外部触发信号是EXTI_15;规则通道的外部触发信号是EXTI_11。EXTI_15与EXTI_11的连线配置可参考外部中断章节的内容,即可以使用GPIO的外部信号来启动ADC。
要使用外部触发ADC,可通过JEXTEN位与EXTEN位使能。选择哪个触发源来启动ADC,需要用到JEXTSEL[3:0]与EXTSEL[3:0]。JEXTSEL[3:0]用于注入通道,EXTSEL[3:0]用于规则通道。以上控制位均在ADC_CR2寄存器内,如图8-3所示。(www.xing528.com)
图8-3 ADC_CR2寄存器
3.ADC的时钟
与其他ADC一样,STM32的ADC同样需要时钟,其时钟ADC_CLK由PCLK2经过分频产生,频率最大值为36MHz,典型值为30MHz。分频因子由ADC通用控制寄存器ADC_CCR的ADCPRE[1:0]设置。可设置的分频系数有2、4、6和8,但没有1分频。
4.采样时间
ADC需要若干个ADC_CLK周期完成对输入电压进行采样,采样周期=1/ADC_CLK,采样的周期数可通过ADC采样时间寄存器ADC_SMPR1和ADC_SMPR2中的SMP[2:0]位设置。ADC_SMPR2控制的是通道0~9,ADC_SMPR1控制的是通道10~17。每个通道可以分别用不同的时间采样。
其中STM32的采样周期最小是3个ADC_CLK周期,即如果需要最快的采样速度,则设置采样周期为3个ADC_CLK周期。
ADC的总转换时间跟ADC的输入时钟和采样时间有关,公式为:Tconv=采样周期+12个周期。利用公式可以计算出ADC转换一次电压需要的时间。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。