首页 理论教育 嵌入式应用技术:STM32固件库ADC启动

嵌入式应用技术:STM32固件库ADC启动

时间:2023-10-21 理论教育 版权反馈
【摘要】:首次将ADON位置1时,会将ADC从掉电模式中唤醒。STM32的ADC启动有软启动与外部触发事件启动两种。其中ADC_CR2中的SWSTART位用于规则通道的启停,JSWSTART位用于注入通道的启停。ADC_SMPR2控制的是通道0~9,ADC_SMPR1控制的是通道10~17。其中STM32的采样周期最小是3个ADC_CLK周期,即如果需要最快的采样速度,则设置采样周期为3个ADC_CLK周期。

嵌入式应用技术:STM32固件库ADC启动

要使用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转换一次电压需要的时间。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈