同步采样
需要同时采集多个信号怎么办,有没有一种方式可以让两个ADC同时开始转换,同时得到采样信息,这样的采样能更好的固定信号的相位差异
有的,兄弟有的
请看同步采样
同步采样的简单实现
基于一个ADC采集交流信号,TIM同时触发两个ADC进行采样
graph LRA[TIM] -->|TRGO触发|B[ADC1]A --> |TRGO触发|C[ADC2]
学习文章
同步采样的一般实现
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为循环模式,上述过程会不断重复。