最近在用matlab读取心电信号,用的采集器是ads1298,要求读取时实时显示信号,采集器有八个通道,输出8个波形。串口读取准备用回调函数INSTRCALLBACK,具体操作不大会。
以下是通讯协议说明:
电脑主机通过USB电缆与采集器相连,通过虚拟的USB转232串口实现与采集器的通讯。RS232通讯波特率采用256000,无校验位,8位数据位,1位停止位;采集器与电脑间通讯采用定长数据帧来实现,其中电脑向采集器发送数据帧的长度固定为4字节,采集器向电脑主机返回的数据帧固定长度为27字节。
主机发送
电脑主机向采集器发送的数据帧的格式及内容定义如下:
序号 帧内容 第1字节 第2字节 第3字节 第4字节
1 单字节指令 0x72 0x01 指令字节 0xFF填充
2 寄存器写指令 0x72 0x02 地址 写入内容
3 开始AD 0x72 0x03 0xFF填充 0xFF填充
4 停止AD 0x72 0x04 0xFF填充 0xFF填充
电脑主机向采集器发送的数据帧包括四种指令类型:
向ADS1298发送单字节指令:首字节固定为0x72,第二字节为0x01,第三字节为指令字节,内容详见ADS1298 Datasheet P40中的Opcode Command Definitions。
向ADS1298发送寄存器设置指令:首字节固定为0x72,第二字节为0x02,第三字节为需要写入的寄存器的地址,第四字节为需要写入的内容,内容详见ADS1298 Datasheet P44页中的Register Assignments。
开始连续数据采集:首字节固定为0x72,第二字节为0x03,第三以及第四字节采用0xFF填充,采集器收到开始数据采集指令后便开始连续数据采集,直至收到停止指令为止。
停止数据采集:首字节固定为0x72,第二字节为0x04,第三以及第四字节采用0xFF填充,采集器收到停止数据采集指令后即停止当前的数据采集工作。
采集器指令应答
对于主机发送的指令1和指令2,采集器收到指令执行成功后会返回应答帧,应答帧长度为27字节,指令应答帧格式如下
字节1 字节2 字节3 字节4 …… …… …… 字节27
0xFE 0xFF 0xFF 无效 无效 无效 无效 无效
对于指令3和指令4,采集器将不予应答。
数据帧格式
采集器收到开始数据采集指令后即开始根据固定的频率进行AD转换并将AD的结果通过数据帧返回给主机,采集器的采集通道为8通道,每通道的量化结果为24位(3字节),按照从低到高的顺序发送。
字节1 字节2 字节3 字节4 字节5 字节6 …… 字节25 字节26 字节27
0xFF 0xFF 0xFF CH1低 CH1中 CH1高 …… CH8低 CH8中 CH8高
每通道的AD结果为:
DNn=CHn高×65536+CHn中×256+CHn低
DN值与电压的对应关系
INP-INN=(DNn-0x800000)/2^24 ×Vref/G
其中Vref为AD的参考电压,G为设置的AD输入增益。
输入通道:
ADS1198 Input Channels Derived Lead
1 V6 = V6 – WCT
2 LI = LA – RA
3 LII = LL – RA
4 V2 = V2 – WCT
5 V3 = V3 – WCT
6 V4 = V4 – WCT
7 V5 = V5 – WCT
8 V1 = V1 – WCT
WCT = (LA + RA + LL)/3