A 硬件配置ok之后,就剩下软件了。接下来就是接口的配置信息下发了。上电流程如下所示:
void ADS1292_PowerOnInit(void)
{
// ADS_CLKSEL=1;//启用内部时钟
// ADS_START=0; //停止数据输出
// ADS_RESET=0; //复位
// delay_ms(1000);
// ADS_RESET=1;//芯片上电,可以使用
// delay_ms(100); //等待稳定
ADS1292_Send_CMD(SDATAC);//发送停止连续读取数据命令
delay_ms(100);
ADS1292_Send_CMD(RESET);//复位
delay_s(1);
ADS1292_Send_CMD(SDATAC);//发送停止连续读取数据命令
delay_ms(100);
//ADS1292_Send_CMD(STANDBY);//进入待机模式
}
B 初始化完成之后,就可以进行数据读取和解析了。这部分的数据如下所示:
while(Set_ADS1292_Collect(0))//0 正常采集 //1 1mV1Hz内部侧试信号 //2 内部短接噪声测试
{
// printf("ADS1292寄存器设置失败\r\n");//串口打印调试使用
delay_s(1);
DS3 =!DS3;//PC13端口接LED,用于指示ADS1292 初始化状态
}
C 该adc有三种数据采集模式,具体如下所示,三种模式,对应的不同调试信息。
//配置ads1292采集方式
u8 Set_ADS1292_Collect(u8 mode)
{
u8 res;
delay_ms(10);
switch(mode)//设置采集方式
{
case 0:
res =ADS1292_Single_Read();
break;
case 1:
res =ADS1292_Single_Test();
break;
case 2:
res =ADS1292_Noise_Test();
break;
}
if(res)return 1; //寄存器设置失败
ADS1292_Send_CMD(RDATAC); //启动连续模式
delay_ms(10);
ADS1292_Send_CMD(START); //发送开始数据转换(等效于拉高START引脚)
delay_ms(10);
return 0;
}
算法解析
A 采集到的数据一般需要进行滤波和算法处理,
这里一般需要用到fir滤波器,过滤掉数据过来的噪声信号。
//使能FIR带通滤波
ecg_fir_res = ecg_fir_tilter(ecg_avr); //FIR带通滤波
ecg_avr_long=filter1(ecg_fir_res); //滤除50Hz,1秒滑窗内的平均值,作为去直流的基线
ecg_fir_res = ecg_fir_res - ecg_avr_long; //去直流
总结备忘
A 采集到的数据其实需要多种算法滤波处理的。根据不同的应用,需要使用不同的算法的。这个后面根据实际需求再进行分析和解析。
Original: https://www.cnblogs.com/dylancao/p/16473006.html
Author: 虚生
Title: 基于ADS1292芯片的解决方案之源码解析
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551696/
转载文章受原作者版权保护。转载请注明原作者出处!