接口解析
A 该芯片和主控使用的是SPI接口通信的。
SPI接口一般有四根线,确保四根线准确连接是对的。
B 该芯片可以有中断模式数据触发,所以,主控mcu需要有外部中断处理流程。
//DRDY中断初始化 EXTI_ClearITPendingBit(EXTI_Line8);//清除中断标志 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource8);//选择管脚 EXTI_InitStructure.EXTI_Line=EXTI_Line8; //选择中断线路 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //设置为中断请求,非事件请求 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; //外部中断使能 EXTI_Init(&EXTI_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //选择中断通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //子优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道 NVIC_Init(&NVIC_InitStructure);
配置解析
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 采集到的数据其实需要多种算法滤波处理的。根据不同的应用,需要使用不同的算法的。这个后面根据实际需求再进行分析和解析。
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2019-07-13 音频算法speex中的aec分析以及解析