本帖最后由 tianshuihu 于 2015-12-21 16:02 编辑
便携示波器的核心在于 波形不失真的 高速采集和同步显示
最终显示的不失真 主要包含两个方面:调理电路信号幅度的线性响应,软件上时间轴的线性采集。
信号幅度的线性响应:
这个主要是通过硬件来实现,根据输入信号幅度的不同选择合适的放大/衰减倍率,将信号的幅度线性调整到AD的输入范围内。
之前的帖子,已经对AD前端的信号调理信号进行了测试,能够满足我们的设计要求。
时间轴的线性采集:
为了把屏幕上的显示波形和实际波形对应起来,至少要做到两点:采样率恒定,采样率准确。
为了保证采样率的恒定性,即相邻采样点的时间间隔一直,我们采用了最高采样率2MHz连续采样,DMA转存AD结果,转存缓冲区长度 1024*16。由于整个采集过程不需要MCU干预,纯硬件实现AD采集,所以保证了AD采样的恒定性。
当实际需要的采样率不高时,选用软件分频:如200 kHz采样时,只需要将2M Hz的采样结果每10个选取1个即可。
但是直接的软件分频是不可靠的!!!
因为AD在连续采样,所以DMA一直在更新数据,直接读取可能读到更新了部分的一帧数据,那么就没法保证“恒定采样率”
不过F7还是很强大的,DMA可以设置半传输完成中断(Half Transfer Complete Interrupt)。那么在一帧数据采集完成一半进入中断的时候,处理上半帧数据,DMA还在继续更新下半帧的结果,只要能在一帧数据采集完之前完成退出中断,就不会影响数据的准确性。同理,下半帧采集完成的时候,即可处理下半帧数据,DMA继续更新上半帧的结果。
经过这样处理,我们把实时采样率扩展到了 1k Hz ~ 2M Hz(实际上可以远小于1kHz,不过目前没有太大必要)
为了保证采样率的准确性, AD的时钟源选用25M外部有源晶振经片内PLL分频后得到的30M时钟。由于石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以可以保证基准频率的稳定性。
另外,低频采样时的晶振的初始误差会带来很大的影响,所以在低频采样时加入了软件补偿。实测结果显示,在1kHz采样时,频率误差不超过0.1%。
下面几张图是不同采样率下的测试结果(方波适合观察时间轴的边界,所以都采用方波测试)
2M采样率 10k Hz 方波测试
1M采样率 5k Hz 方波测试
10k采样率 50 Hz 方波测试
2k采样率 10 Hz 方波测试
1k采样率 5 Hz 方波测试
从测试的结果来看,1k ~ 2M 采样率变换时,均能完好的还原输入信号,证明了软件设计的合理性和可靠性!
PS. 信号源采用 Agilent 33522a,测试信号峰值100mV,无偏置