前言
在医疗领域常常使用的心电图仪并不是很复杂的仪器。其原理跟示波器非常相似,只不过,心电图仪测量的是低频小信号。心电信号(也叫ECG信号)的幅值一般在0.05mV-4mV之间,要求分辨力至少为0.1mV,其频率在0.05-100Hz之间,主要的频率成份集中在5~20Hz之间。一般的示波器垂直刻度最小为10mV/div,分辨力约为0.4mV。其次,把探头接在左右手,在示波器上只会观察到50Hz的工频干扰。所以,示波器并不适合测量心电信号。我们选用ADS1298芯片,可以很好的完成心电信号的采集。本文不涉及硬件设计,只梳理一下芯片的操作及如何用FPGA实现芯片的控制。硬件设计可参考官网的DEMO板
芯片操作
ADS1298芯片是通过SPI接口与控制芯片进行交互数据。ADS1298作为从端,控制芯片(FPGA)做为主端。ADS1298重要管脚列表功能如下:
名称 | 类型 | 说明 |
DRDY_N | 数字输出 | 数据就绪,低电平有效 |
DAISY_IN | 数字输入 | 菊花链输入,若未使用与DGND短接 |
RESET_N | 数字输入 | 系统复位,低电平有效 |
CS_N | 数字输入 | SPI片选,低电平有效 |
DOUT | 数字输出 | SPI数据输出 |
SCLK | 数字输入 | SPI时钟 |
DIN | 数字输入 | SPI数据输入 |
CLK | 数字输入或输出 | 外部主时钟输入或内部时钟输出 |
START | 数字输入 | 开始转换 |
CLK_SEL | 数字输入 | 主时钟选择 |
芯片控制流程
芯片的控制流程我们主要按照数据手册上的应用信息来设计控制程序。
程序编写
按照芯片的控制流程,我们采用状态机的形势来完成芯片的配置及数据采集。状态机定义如下图:
写寄存器SPI接口时序图如下:
读数据SPI接口时序如下:
FPGA仿真波形
整体的写读时序波形
读数据时序波形,总共9个24bit数据,第一个数据为状态数据,后面依次是采集到8个通道的数据
最终将代码在Quartusii中综合编译,下载到开发板里,可以通过SIGNALTAP抓取到数据。
注意事项
- SPI的模式为CPOL=0且CPHA=1
- 在读数据时,CS需要一直保持低电平
结语
到此,我们可以正常的配置芯片的工作状态,同时读取采集到的数据,如果想用该芯片实现心电信号的采集并显示,还需要做的工作还比较多,需要我们仔细阅读数据手册,和官方的DEMO板资料,了解硬件的设计及采集探头的接法。由于个人能力,精力有限,如果文中有误还请谅解,同时希望能告诉我,共同交流学习,一起进步,谢谢!