STM32同步采样FFT获取相位差_单片机测相位差系统流程图
关于STM32测量两路正弦波信号相位差,主要问题是要确保两路ADC进行同步采样,但STM32是顺序执行逻辑,如何做到同步采样呢?虽然无法做到真正的同步采样,但也能接近同时采集了。
方法:利用定时器触发ADC采样,首先开启ADC1和ADC2,再开启定时器同时触发两路ADC进行采样。就像你同时打开两盏灯一样,如果已经接通了电源,你无法同时按下两个开关,两盏灯不可能同时亮,但如果你首先切断电源,再打开两个开关,最后接通电源,这样两盏灯就同时亮了,把ADC看作灯,定时器触发看作电源,这样就很好理解了。最后进行FFT变换得到相位差。
代码部分:单片机STM32F407,利用cubemx进行配置。
ADC配置:
TIM配置:
开启DMA
接下来看工程代码
千万注意顺序先开ADC再开定时器
主函数代码
It.c代码
调节信号发生器两个信号频率1KHz,幅度0-2V,使用串口查看相位差,
误差大概0.1到0.2度左右