前言
将模拟量转换为数字量的过程称为模数(A/D)转换,完成这一转换的器件叫模数转换器(ADC),将数字量转换为模量的过程叫数模(D/A)转换,完成这一转换的器件成为数模转换器(DAC)。 可以去看看刘凯老师的课:https://www.bilibili.com/video/BV1at411K74k/?p=52&spm_id_from=pageDriver&vd_source=9385b7f8c739b9e3ef3f21ddaebd2eb9
总结
- STM32的ADC通常最大精度是12位,使用时也可以配置成10位、8位或6位等。精度会影响转换速度和数据计算。
- STM32中ADC的时钟通常由PCLK2(ABP2外设时钟)分频得来,在 STM32F405RG 中最大可以达到36MHz。
- ADC每处理一次数据分为 采样 和 转换 两个过程。 采样时间可以配置,比如 STM32F405RG 中最小为3个ADC时钟周期;转换时间和精度有关,12位精度下为12个ADC时钟周期、10位精度下为10个ADC时钟周期,依此类推。**每采样一个数据所需的时间为 (采样周期 + 转换周期) / ADC时钟频率。**比如当ADC时钟频率为30MHz,采样周期选最小值3,精度为12位时,每处理一次数据耗时为 (3+12)/30/1000000 (秒) = 0.5微秒
- 引脚数量大于等于100的封装上通常会有 VREF 引脚,ADC可转换的电压不大于 VREF 上的电压;引脚数量小于100的封装其 VREF 直接就是在芯片内部连接到 VDDA 的。
- ADC工作最后得到的数据换算成真实电压的时候主要和 VREF 以及精度有关。比如12位精度下 真实电压 = 数据 * VREF / (4096 - 1) ,10位精度下 真实电压 = 数据 * VREF / (1024 - 1) ,依此类推。ADC因为工作原理关系本身有1个分辨率的误差;单片机在除以4096、1024等这些数值的时候可以用右移的方式提高效率。所以通常可以不要 -1 ,即12位精度下 真实电压 = 数据 * VREF / 4096
- STM32芯片VDD、VDDA和VREF的关系
所以VDDA必须和VDD连接,因为系统VDD电压一般是3.3V,所以导致ADC的VREF参考电压只能是3.3V。 - HAL库对很多外设的使用设计了 轮询 、中断 、DMA 三种方式。STM32的ADC采样转换有 单次 / 连续 转换模式 。另外每个ADC每次处理时只能处理一个通道,所以多通道时还涉及 扫描 模式 。
- STM32的ADC还有规则转换(Regular)和注入转换(Injected),注入就相当于在正常规则转换过程中插入中断,优先进行注入转换
- stm32 ADC的使用
HAL库ADC的使用 https://blog.csdn.net/Naisu_kun/article/details/121532288 固件库ADC使用 https://blog.csdn.net/weixin_43002939/article/details/124447899
数据采集系统
数据采集系统由模拟信号采集,ADC,数字信号处理三大部分组成。 AD上传感器器转换后的信息一般为电压,电阻等电学量。
A/D转换原理
A/D转换包含采样保持和量化编码两个内容。一般AD转换的时间在us级别。 采样后得到的样点幅值转换为数字量,即为量化,编码的过程。
A/D转换器的主要参数
STM32的分辨率一般是12位
STM32 ADC的一些配置
规则组做常规,注入组做特别检测 ADC时钟(转换速率),支持ADC的GPIO引脚,中断,看门狗(监测外部量的变化而触发中断),触发器(采集频率)
扫描模式
规则组注入组
转换启动,数据寄存器
转换模式
DMA可以将数据转到SRAM里面。
ADC 寄存器
ADC实验
HAL库ADC的使用 https://blog.csdn.net/Naisu_kun/article/details/121532288 固件库ADC使用 https://blog.csdn.net/weixin_43002939/article/details/124447899
|