完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、前言
为了正确使用STM32H7上的ADC模数转换器,必须先把CubeMX上的ADC配置梳理一遍。为此,在ADC1上开启通道IN2与通道IN6为例学习如何配置CubeMX。 二、Cloack Configuration 配置ADC的时钟源adc_ker_ck的频率为72M。有了72M的时钟源,ADC1,ADC2,ADC3就能经过异步时钟模式2分频得到36M的最高的工作频率。下面介绍Parameter Settings配置时讲到如何配置异步时钟模式2分频。 三、ADC1 Mode and Configuration 四、Configuration Parameter Settings的细节有一点多,学习ADC的重点。 4.1、ADC_Setting 4.1.1、Clock Prescaler(时钟预分频) 目的是让ADC的工作频率达到36M(ADC工作频率超过36M会不稳定)。异步时钟模式(基于PLL2P时钟)可以选择Asynchronous clock mode divided by 1,2,4,6,8,10,12,16,32,64,128,256,同步时钟模式(基于AHB时钟)可以选择Synchronous clock mode divided by 1,2,4。在上面的时钟配置上,adc_ker_ck的时钟频率为70M,所以使用Asynchronous clock mode divided by 2就能让ADC的工作频率为36M。 值得注意,同步时钟模式任何选项都会让ADC的工作频率超过36M。STM32H743的时钟频率是480M,所以AHB时钟频率是240M。就算选择Synchronous clock mode divided by 4, ADC的工作频率也超过36M(240M/4 = 60M)。那么同步时钟模式就那么没有使用的价值吗?查看官方手册,同步模式的优点在于ADC与定时器都基于AHB时钟,那么定时器触发定时器时,ADC的同步触发能更加精确。 4.1.2、Resolution(分辨率) 分辨率越高,逐次逼近转换时间越长。根据实际的项目要求选择分辨率即可。 4.1.3、Scan Conversion Mode(扫描模式) 当使能一个以上通道时,默认开启。 4.1.4、Continuous Conversion Mode(连续转换模式) 选择是否使能连续转换模式。不使能相当于单次转换模式,ADC会将通道的所有转换执行一次。使能的话,相当于连续转换模式,该模式用于常规通道。在连续转换模式下,如果发生软件或者硬件触发,ADC会执行所有常规通道的转换,随后会自动重启并继续执行每一个通道的转换。若想使用ADC+DMA的话,必须先使能连续转换模式。 4.1.5、Discontinuous Conversion Mode(不连续序列转换模式) 配置ADC规则组转换序列的不连续方式。这里的不连续含义是指每次触发进行一个子组的转换,跟Continuous Conversion Mode的连续含义不一样。例如使能了该配置,该参数的下方就立马出现Number Of Discontinuous Conversions,如果它设为2,且ADC1使能了通道1,2,5,7,10,11的话,那么第一次触发ADC1采样时,就会采样通道1与通道2的值,再一次触发ADC1采样的话,就会采样通道5与通道7值,如此类推。值得注意的是,Continuous Conversion Mode与Discontinuous Conversion Mode不能同时使能,两者不能共存。 4.1.6、End of Conversion Selection(结束转换的选择) 选择结束转换的事件。有End of single conversion(EOC) 与 End of sequence of conversion(EOS)两种选择。这两个事件会触发中断与DMA。一般选择EOS,等所有通道转换完毕后,产生中断后将全部数据取出来,或者使用DMA将全部数据取出来。 4.1.7、Overrun behaviour(溢出处理行为) 选择Overrun data overwritten。ADC+DMA是很好的组合,根据安富莱的解释,有了DMA的话,不管怎样都会溢出错误。 4.1.8、Left Bit Shift(左移位数) 选择No bit shift即可。可以选择0 ~ 15bit shift,一般不使用它。 4.1.9、Conversion Data Managerment Mode(转换数据管理模式) 不使用DMA的话,不使用DFSDM数字滤波器做后期处理的话,选择Regular Conversion data stored in DR register only即可。其实就是选择存放转换完成的模拟量数据的地方而已。 4.1.10、Low Power Auto Wait(低功耗自动等待) 有低功耗要求的话,就使能。 4.2、ADC Regular ConversionMode 4.2.1、Enable Regular Conversions(使能规则转换) 使能它才能采集各个通道上的模拟量。 4.2.2、Enable Regular Oversamping(使能规则过采样) 使能过采样。有一些细节稍微需要注意一下。 4.2.3、Oversamping Right Shift(过采样位右移) 过采样器能将累加的采样值进行右移。有什么用?比如过采样设置15,那么将采集16个值进行累加。接着配置右移动4位的话,相当于将刚才的累加值除以16,得到平均值。不需要在程序里求平均了。当然,如果大家喜欢在程序里求平均值也是可以的。 4.2.4、Oversamping Ratio(过采样率) 过采样器会进行数据预处理,以减轻CPU的负担。例如过采样设置15,将采样16个值,将16个值进行累加。一般的单片机可能不支持过采样,那么只能用程序实现累加了。总得来说,Oversamping Ratio帮助CPU累加采样值,Oversamping Right Shift帮助CPU求平均值。 4.2.5、Regular Oversamping Mode(规则过采样模式) 一般使用Oversampling Continued Mode。另外一个Oversamping Resumed Mode不知道是什么意思,后续继续研究。 4.2.6、Triggered Regular Oversampling(规则过采样捕捉) 选择捕捉的方式,捕捉等待所有过采样转换结束(Signal Trigger for all oversampled conversions)。另外一个是捕捉每一个过采样转换结束。 4.2.7、Numer of Conversion(转换通道的数量) 转换通道的数量(支持1 - 16)。 4.2.8、External Trigger Conversion Soure(触发转换的外部来源) 选择触发转换的来源: Regular Conversion launched by software (软件触发) Timer 1 Capture Compare 1 event (定时器1捕获比较事件1) Timer 1 Capture Compare 2 event(定时器1捕获比较事件2) Timer 1 Capture Compare 3 event(定时器1捕获比较事件3) … (各种定时器触发来源) 除软件触发外,其他基本都是定时器触发。关于定时器的使用笔记如下: STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式) STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式) 4.2.9、External Trigger Conversion Edge(触发转换的外部沿) 选择定时器触发时,需要进一步选择触发的沿。选择软件触发时,该项为None。 Trigger detection on the rising edge(上升沿) Trigger detection on the falling edge(下降沿) Trigger detection on the rising and falling edge(上升与下降沿) 4.2.10、Rank Channel 选择采样的通道 Sampling Time 过采样的时间。ADC的采样速度 = 过采样时间 + 逐次逼近时间 Offset Number 摘自安富莱教程 Offset Signed Saturation 摘自安富莱教程 4.3、ADC Injected Conversion Mode ( ADC注入转换模式) 先不管。 4.4、Analog Watchdog 比如使用模拟窗口看门狗监控CPU的温度,超过设定的阀值就产生看门狗中断,防止CPU的温度过高。在监控CPU的温度上有一定的使用价值。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1606 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1538 浏览 1 评论
969 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
681 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1584 浏览 2 评论
1861浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
643浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
528浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
503浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 07:14 , Processed in 0.563349 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号