🌸 一朵花做不成花环。 —— 赫伯特
ADC介绍
12位ADC是一种逐次逼近型模拟数字转换器。它有18个通道,可测量16个外部和2个内部信号 源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐 方式存储在16位数据寄存器中。
ADC通道
规则通道:规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规 则组中转换的总数写入ADC_SQR1寄存器的L[3:0]位中。
注入通道:注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入 组里的转换总数目必须写入ADC_JSQR寄存器的L[1:0]位中。
ADC的模式
单次转换模式 单次转换模式下,ADC只执行一次转换
连续转换模式 在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换
扫描模式 此模式用来扫描一组模拟通道 如果要是多个通道,未开启扫描模式,他只会转换第一个通道。
注入通道管理
触发注入 注入通道的外部触发
自动注入 如果设置了JAUTO位,在规则组通道之后,注入组通道被自动转换 PS:在此模式里,必须禁止注入通 道的外部触发。
间断模式 间断模式较扫描模式需要更多的触发事件才能完成所有的通道转换操作(就是不一次性把所有通道转换)
校准
ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在 校准期间,每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中 每个电容器上产生的误差。
PS:1 建议在每次上电后执行校准。
2 启动校准前,ADC必须处于关电状态(ADON=’0’)超过至少两个ADC时钟周期。
外部触发转换
转换可以由外部事件触发(例如定时器捕获,EXTI线)。如果设置了EXTTRIG控制位,则外部事 件就能够触发转换。EXTSEL[2:0]和JEXTSEL2:0]控制位允许应用程序选择8个可能的事件中的 某一个可以触发规则和注入组的采样。
DMA请求
因为规则通道转换的值储存在一个唯一的数据寄存器中,所以当转换多个规则通道时需要使用 DMA,这可以避免丢失已经存储在ADC_DR寄存器中的数据。
只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR寄存器传输到用户 指定的目的地址。
注: 只有ADC1和ADC3拥有DMA功能。由ADC2转化的数据可以通过双ADC模式,利用ADC1的 DMA性能来实现
ADC中断
规则和注入组转换结束时能产生中断,当模拟看门狗状态位被设置时也能产生中断。它们都有独立的中断使能位。
CubeMX配置
我这里使用了,规则组,通道0,1,Vrefint Channel,Vrefint Channel内部参照电压
这里内部参照电压为1.2V
选择模式为 连续 扫描模式
Keil代码
打开ADC—DMA
然后对读到的内部参照电压的值,反推VDD,芯片供电电压
串口接收的数据
本人水平较低,参考了他人文章,写着也是平时回顾,欢迎各位指正、交流!共勉!
上文:定时器的强制输出模式、输出比较模式 、PWM模式—CubeMX结合ST官方手册-CSDN博客
下文:stm32,DMA探索