电子产业一站式赋能平台

PCB联盟网

搜索
查看: 50|回复: 0
收起左侧

STM32CubeMx配置ADC详解

[复制链接]
匿名  发表于 2024-8-17 08:19:00 |阅读模式

Clock PrescalerADC 时钟最后会从系统时钟除以预分频系数。
ADC 会在数个 ADC 时钟周期内对输入电压进行采样,时钟周期数可配置。
总转换时间的计算公式如下:
tCONV = 采样时间 + 12.5 x ADC 时钟周期
采样时间可配置,最少1.5个ADC时钟周期,采样时间太短可能导致电容充电不到位,影响采样精度。
这里的采样时间就是ADC内部电容的充电时间,12.5是一个固定的时间,就是12位ADC逐次逼近过程,开关切换所需要的时间,不明白的小伙伴可以去了解一下我的一篇关于ADC原理的文章逐次逼近型ADC原理及STM32如何提高ADC的采样精度解读
示例:
如果 ADC_CLK = 16 MHz,采样时间为 1.5 个 ADC 时钟周期:
tCONV = 1.5 + 12.5 = 14 个 ADC 时钟周期 = 0.875 μs
ADC 通过将 EOSMP 标志置 1 来指示采样阶段结束
Resolution?ADC位数:
比如12位,最大就是4096,如果对应参考电压3.3V,那么1bit就是805uV
Data Alignment数据对齐方式,2个字节是16位,12位ADC占2个字节空4位,对齐方式就是选择高位空4位还是低位空4位
Sequencer使能配置ADC的序列转换。启用后,可以在一次转换中依次转换多个通道,通道顺序可配置。多通道是需要开启,不然需要手动配置切换通道,徒增烦恼。只有一个通道时可以不开启。
HAL_ADC_Start触发ADC第一个通道开始转换
HAL_ADC_PollForConversion等待当前通道转换完成
Scan Conversion Mode扫描模式,启用时,ADC会在一次触发下扫描所有选中的通道。同上,多通道时需要使能。使能后可以轮询或者DMA获取各个通道的值,不然通道不会自动切换。
Continuous Conversion Mode连续转换模式,一次触发,连续转换。软件触发由HAL_ADC_Start()完成
Discontinuous Conversion Mode不连续转换模式,ADC会转换多个通道,但在每次转换完成后会暂停,直到下一次触发。
Continuous Conversion Mode和Discontinuous Conversion Mode都配置成Disabled则每次触发只转换一个通道。
HAL_ADC_GetValue获取当前通道的值,开始下一通道的转换
DMA Continuous Requests启用或禁用DMA连续请求模式。
nd Of Conversion Selection配置ADC的转换结束标志,可以选择在单次转换结束时产生中断,或在序列转换完成时产生中断。
Overrun behaviour告诉ADC采样时,ADC还未读取上一次转换结果时,可能新的转换被触发并已经完成准备写入数据寄存器。
Low Power Auto Wait启用时,ADC会在新的数据被读取之前自动停止转换以节省功耗。
Auto Off启用时,ADC会在新的数据被读取之前自动停止转换以节省功耗。软件触发的话,下次启动需要调用HAL_ADC_Start,而低功耗不需要调用。
Oversampling Mode启用时,ADC会在每次转换中进行多次采样并进行平均,以提高分辨率或减少噪声。
SamplingTime Common 1 & Common 2作为一个常量,用来为不同的ADC通道配置不同的采样时间,即电容充电时长。
Number Of Conversio设置在一次ADC序列中要转换的通道数量。
External Trigger Conversion Source选择外部触发源,用于启动ADC的转换。
可以软件触发,定时器、中断、外部引脚等触发
当外部触发源生成一个触发信号时,ADC会响应这个信号并启动一次转换。这种方式可以确保在指定的时间点或事件发生时自动进行采样。
External Trigger Conversion Edge配置外部触发信号的边沿,可以选择上升沿、下降沿或双边沿
Trigger Frequency
Rank在扫描模式下,配置各个通道的顺序
Analog Watchdog模拟看门狗可以监控ADC转换结果是否超出设定的阈值范围,并在超出范围时产生中断。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表