现在的位置: 首页 > 实战项目 > 正文
基于FPGA和STM32F0简易示波器的实现
2016年09月01日
浏览 5,028 次
硬禾实战营

一.学员作品

 

下图分别是PCB设计图和最终实物图。

            1          2

                    图1.PCB设计图                                                     图2.实物图

 

二.项目背景

 

示波器是用途广泛的测量仪器,也称电子硬件工程师的眼睛。传统示波器由硬件电路实现数据的采集和处理,利用软件技术在屏幕上设计出方便逼真的仪器模板,实现对各种信号的处理,加工和分析,通过波形或数据显示出测量结果。

 

一般示波器的工作过程分为存储和显示两个阶段。在存储工作阶段,模拟输入信号先经过适当的放大或衰减,然后经过取样和量化两个过程的数字化处理,将模拟信号转化成数字化信号,最后,数字化信号在逻辑控制电路的控制下一次写入到 FIFO中,FIFO 缓存器是用 FPGA 芯片采用硬件编程语言编写异步FIFO缓存器,工作频率比专用 FIFO 芯片高许多,并且性能稳定。FIFO 采用8Bit数据宽度。对于高频信号和脉冲信号应用 FIFO 存储工作模式,低频信号用实时工作模式。

 

模拟信号的实时采样是对一个周期内的信号的不同点取样,它与取样示波器的跨周期取样是不同的。N 个取样点得到的数字量分别存储于地址号为OOH-0NH 的 N个FIFO 存储单元中,这样,采样点所存储的地址信息即表示了采样点的时间信息。在显示时依序取出采样离散化数据,再通过数据处理,送上位机进行波形显示。将数字存储技术和微处理器用于取样示波器,可以构成存储取样示波器。

 

示波器设计框图如下图:

3

图3.示波器框架图

 

三.项目要求

 

本次项目是基于小脚丫FPGA开发板,STM32F042 Nucleo开发板以及OLED显示屏实现数字示波器的设计,通过FPGA和STM32的搭配,了解两者工作方式。深入了解示波器的原理。具体的要求如下:

① 采用FPGA+ADC08100高速AD芯片实现对数据的采集;

② STM32可以实时的自动调节选择量程,选择放大电路的放大倍数;

③ FPGA内部开辟FIFO存储转换数据,写满后进行读数据。

④ 利用STM32F042 Nucleo与FPGA通过STM32内部硬件SPI总线建立通信,控制FPGA内部FIFO的读操作,传送转化得到数据,另外通过软件模拟SPI驱动显示屏显示;

⑤ 增加按键控制,实现幅度以及相位的调节,通过OLED显示屏来显示出波形。

 

四.硬件设计部分

 

1.电源设计部分

4

图4.升压/反向电路

5

图5.升压/反向电路

6

图6.-5V输出电路

2.数据采集电路部分

 

7

图7.衰减电路

8

图8.放大增益选择电路

9

图9.电平抬升和跟随电路

3.STM32接口部分

9

图10.电平抬升和跟随电路

4.FPGA接口部分

10

图11.小脚丫FPGA引脚接线图

 

5.硬件电路调试   

12  13                                图12.一倍放大电路波形                                                图13.十倍放大电路波形

 

五.软件控制部分

 

程序流程图

 

本次的设计以STM32位主控制器,负责数据接收处理,波形显示和命令收发,FPGA负责时钟的倍频和数据缓存。显示部分,既可以通过串口打印波形参数,也可以通过OLED触摸屏显示。由于此STM32的板子主频太慢,导致整体的波形刷新间隔很长,所以此次的方案还可以继续改善,换用大屏,另外屏幕的驱动显示应该是最终的核心内容了。

 

此次设计方案选用OLED屏。它是自发光屏幕,由于STM32板子上的仅有的SPI资源已经被分配给了FPGA,所以只能用模拟SPI驱动。刷屏的思路是用数组将显示的数据转化为相对应的像素点,通过数组数据更新后统一刷屏,实现画波形,刷新速度约10ms左右。

 

主流程图分为STM32处理数据,波形显示部分,FPGA包括PLL的100倍频,AD采集,SPI的收发以及FIFO的读写。

QQ截图20160901145909