国庆也算是出去浪了几天,当然 回来也不能忘记学习。经过前些天的摸索与学习对STM32的ADC有了一个了解,下面是学习过程(个人学习观点,仅供参考,如有错误或改进之处还望指出,臣不甚感激)。
更为详细的讲解可以参考一下这位前辈的博客:https://blog.youkuaiyun.com/XUXUECHEN/article/details/40748595
初识ADC有一种茫然的状态同时又会觉得它的功能强大,在stm32中有3个ADC,每个ADC都有16个转换通道,由此可知它的强大。首先通过它的引脚功能图可以看出每个引脚所对应的ADC转换通道。这样在编写程序的时候就不会把通道搞错。
有了上述的了解之后呢,还要记住ADC所能检测的电压范围是0~3.3V,如果检测的电压值大于3.3V就会把ADC烧坏,还有就是ADC转换的时钟频率,在72M的主控CPU中它的转换频率不能大于14M也就是6分频否则检测的值会不准确。采样周期为1.5个时钟周期。stm32的ADC转换有两种通道,规则通道和注入通道,注入通道可以抢占式地打断规则通道的采样,执行注入通道采样后,再执行之前的规则通道采样,和中断类似。当然本次学习是基于规则转换的,库函数操作。有了以上的了解之后来看看ADC的库函数:
对于一些基本的库函数就不列出来了,具体参考stm32固件库使用手册。这里来讲一下几个重要的库函数,第一个就是ADC_Init()在这个函数里有以下参数
其中ADC_Mode又包含了10种模式
ADC_ExternalTrigConv 函数里有多种触发方式,一般常用软件触发。
这里要注意ADC转换的数据对齐方式,因为stm32的ADC是12位的,而它的数据寄存器ADC_DR是16位的。至于是左对齐还是右对齐?在读取ADC的数据时是从高位开始的,所以一般右对齐就好。
ADC_SampleTim
STM32之3路ADC同步转换
最新推荐文章于 2025-05-20 09:06:17 发布