多语言展示
当前在线:1768今日阅读:126今日分享:42

STM32的ADC模块如何设置

STM32的ADC模块是STM32的重要模块,是用于检测模拟信号的必不可少的功能模块,掌握了如何设置ADC模块,可以实现工业应用上不同的模拟信号采集问题,下面我们一起来看看如何设置ADC模块?
工具/原料

keil

方法/步骤
1

ADC怎么从1路扩展成两路ADC:(1)设置ADC的通道数量:ADC_InitStructure.ADC_NbrOfChannel = ADC_GALLERY_COUNT; (2)各路ADC的转换次序:ADC_RegularChannelConfig(ADC1, ADC1_CHANNE, ADC1_NUM, ADC_SampleTime_239Cycles5);      ADC_RegularChannelConfig(ADC1, ADC2_CHANNE, ADC2_NUM, ADC_SampleTime_239Cycles5);

2

怎么保证ADC采样出来的值能准确,ADC值波动少:如果用的是DMA方式,则里面放入的ADC值是在随时变化的,所以可以从相应的SRAM中读出相应的数据,然后每次取N个值,去除最大值,去除最小值,最后再求平均值,这样可以保证ADC得到的值比较稳定。

3

如果设置了DMA位,在每次EOC后,DMA控制器把规则组通道的转换数据传输到SRAM中。而注入通道转换的数据总是存储在ADC_JDRx寄存器中。

4

注入组的数据左对齐方式中,要注意第一位不是数据值,而是SEXT填充,所以读取数据时一定要注意这一点

5

因为规则通道转换的值储存在一个唯一的数据寄存器中,所以当转换多个规则通道时需要使用DMA,这可以避免丢失已经存储在ADC_DR寄存器中的数据。 只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR寄存器传输到用户指定的目的地址。

6

ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在校准期间,每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差。

7

ADC12_INx(x表示4~9或14~15之间的整数),表示这个引脚可以是ADC1_INx或ADC2_INx。例如:ADC12_IN9表示这个引脚可以配置为ADC1_IN9,也可以配置为ADC2_IN9。

8

ADC供电要求:2.4V到3.6V;ADC输入范围:VREF- ≤ VIN ≤ VREF+。ADC使用的高端/正极参考电压,2.4V ≤ VREF+ ≤ VDDA 。ADC使用的低端/负极参考电压,VREF- = VSSA 。

9

采样时间计算STM32的AD输入时钟不得超过14MHZ,转换时间为12.5个周期,总共的ADC转换时间 = 间隔周期 + 转换时间。ADC_RegularChannelConfig(ADC1, ADC1_CHANNE, ADC1_NUM, ADC_SampleTime_239Cycles5);   //设置ADC1通道10采样时间为239周期,用于设置间隔时间转换时间固定为12.5个周期,频率为AD设置输入时钟。

注意事项

如果有帮助到你,请记得帮我【投一票】或【赞一个】哦 ~ 谢谢啦~

推荐信息