- STM32ADC是12位的,因此ADC的结果范围为0~4095,对应电压是0~3.3V
- 转换频率1MHZ(可以调)
- 采用14MHZ的内部时钟
- 逐次逼近型ADC原理:内部有个DAC,将数字转换成模拟,给它一个输入输出的模拟信号和我们输入的模拟信号进行比较,比我们的大的话就调小DAC输入,小的话就调大DAC的输入,直到两者相等,DAC的输入就是我们输入。
该过程是一个量化编码的过程,在量化编码之前需要进行采样保持,采样保持的作用是:由于我们量化编码是需要一小段时间的,因此要输入一个稳定的电压给逐次逼近电路,我们通过一个采样开关,开关闭合时连接一个电容去收集输入电压,采样完成后,将电容的电压作为逐次逼近电路的输入电压。
以上的过程得到的是一个AD值(12位ADC是0~4095),这时我们可以根据参考电压(比如3.3V)得到一个实际的电压
- ADC转换时间
- 采样时间越长精度越高,越能避免毛刺信号的干扰,不过转换时间也会延长,STM32库函数给出了以下的采样时间(55.5代表55.5个ADCCLK,55.5*(1/14MHZ))
- 同时可以增大ADCCLK来加快转换时间
- 输出抖动解决方法(江科协32:33):读取多个ADC值取平均值(均值滤波),或则减小分辨率
- 规则组和注入组:规则组一次触发能选中16个通道进行转换,注入组一次触发能选中4个通道进行转换,但是注入组的数据寄存器可以存储4个转换结果,规则组的数据寄存器只能存储1个转换结果,因此需要配合DMA使用,当一个通道转换完成后触发DMA将数据搬走,防止被下一个数据覆盖
- 非扫描模式只有序列1有效,非连续模式转换一次就停止转换不再进行下一次转换,转换完成后EOC会置1
- 数据的右对齐和左对齐,我们一般采用右对齐,左对齐我们一般是只取高八位,这样就将12位的ADC转换成8位的ADC,降低了ADC精度
- 提高ADC的精度:增加采样时间,增加分辨率,保证ADC时钟信号稳定
- 分辨率:参考电压*(1/2^位数),比如12位ADC,8位ADC。精度:实际数字输出与理论预期数字输出之间的接近度