深入ADC采样
同步采样
需要同时采集多个信号怎么办,有没有一种方式可以让两个ADC同时开始转换,同时得到采样信息,这样的采样能更好的固定信号的相位差异
有的,兄弟有的
请看同步采样
同步采样的简单实现
基于一个ADC采集交流信号,TIM同时触发两个ADC进行采样
同步采样的一般实现
ADC配置
ADC_Mode
- Independent mode 独立模式
- 双ADC模式
- Dual Combined regular simultaneous mode
同步规则组模式:两个ADC同步采样同一个规则通道(常用于差分输入或提高采样精度) - Dual Combined interleaved mode
交叉模式:两个ADC交替采样同一个规则通道(ADC1转换时ADC2采样下一数据,实现单通道采样率翻倍) - Dual Combined alternate trigger mode
交替触发模式:两个ADC轮流响应同一个触发信号(每次触发仅启动一个ADC,提高触发资源利用率) - Dual Combined injected simultaneous mode
同步注入组模式:两个ADC同步采样同一个注入通道 - Dual Injected simultaneous only mode
仅注入组同步模式:只有注入通道使用同步模式,规则通道仍各自独立工作 - Dual Regular simultaneous + injected simultaneous mode
规则通道和注入通道都使用同步模式 - Dual Interleaved + injected simultaneous mode
规则通道使用交替模式(追求极高采样率),注入通道使用同步模式
学习文章
同步采样
请先食用上述主食再继续以下的饭后甜点
文中将ADC配置为双ADC规则同步模式。在这种模式下,ADC1和ADC2同时采样不同的通道(但使用同一个触发),然后将两个结果合并成一个32位数据(ADC1在低16位,ADC2在高16位)
ADC1 扫描通道CH0,CH1,CH2和CH3
ADC2 扫描通道CH4
双ADC同步模式下的转换过程
在双ADC规则同步模式下,每次触发(软件触发)会同时启动ADC1和ADC2的转换。转换规则如下:
- 第一次触发:
- ADC1转换Rank1(Channel0,PA0)
- ADC2同时转换Rank1(Channel4,PA4)
转换完成后,数据组合成一个32位数据: - 低16位:ADC1的转换结果(PA0)
- 高16位:ADC2的转换结果(PA4)
这个32位数据被DMA传输到内存数组的第一个元素(ADC_result[0])。
- 第二次触发:
- ADC1转换Rank2(Channel1,PA1)
- ADC2同时转换Rank2(Channel4,PA4)-> 再次采样PA4
转换结果组合后存入ADC_result[1]: - 低16位:ADC1结果(PA1)
- 高16位:ADC2结果(PA4)
- 第三次触发:
- ADC1转换Rank3(Channel2,PA2)
- ADC2转换Rank3(Channel4,PA4)-> 再次采样PA4
存入ADC_result[2]。
- 第四次触发:
- ADC1转换Rank4(Channel3,PA3)
- ADC2转换Rank4(Channel4,PA4)-> 再次采样PA4
存入ADC_result[3]。
- 由于配置了连续转换模式,且DMA为循环模式,上述过程会不断重复。
ADC与DMA
-
在多通道中,我们设置ADC为扫描,这样的设置会使得ADC会不断扫描所有的规则组通道,转换的结果会都会储存在ADC转换
寄存器中,后一个转换结果覆盖前一个转换结果,所以不能直接读取寄存器。
一个好的办法是使用DMA(normal模式即可),ADC转换完成,ADC状态寄存器修改,DMA开始搬运,保存每次转换结果。 -
同步采样中我们还设置ADC为连续转换,当ADC规则组通道全部转换完成,ADC会返回转换第一个通道,循环往复
此时,我们的DMA也要配置为循环模式,不断覆盖之前的采样值。
ADC设置连续模式时,ADC的触发方式应该设置为软件触发,结束一次转换后会重新转换。
再之前的例子中博主直接设置扫描和连续转换,实属于一步到位了
具体调用函数
采样方法
- 多通道扫描 + 连续转换 + DMA循环模式
- 单通道 + 连续转换 + DMA循环模式
- 多通道扫描 + 单次转换 + DMA普通模式
超频采样
简单做个锚点,我向来不是极端玩家
等有需要再用
再谈ADC采样精度
在之前的文章中,我提到ADC的精度和其12位的设计有关,
因为电压的不确定,所以其有效位只是8-9位,也就是说,
有15(0000 0000 1111)是无效的,15*3.3/4096 = 0.012084
,即0.02V的误差
这只是很简单的理解,详情点击
那么如何提高其精度呢?(坑+1,待俺再学学)

浙公网安备 33010602011771号