本文来源:RISC-V大赛 - 木子科技
本文作者:nefuy
本文转自:芯片开放社区(OCC)
开始开发一个核心功能, ADC实现模拟信号采集和心电数据分析。
ADC首先得确认模拟地, 参考电压的范围, 参考电路图找到ADC_VREFP和ADC_VREFN, 做好电平配置。
心电采集模块采取AD8232心电模块, 用来测量心脏的电活动心率监测器。AD8232是一款用于ECG及其他生物电测量应用的集成信号调理模块。 该器件设计用于在具有运动或远程电极放置产生的噪声的情况下提取、放大及过滤微弱的生物电信号。 该设计使得超低功耗模数转换器(ADC)或嵌入式微控制器能够轻松地采集输出信号。
AD8232采用双极点高通滤波器来消除运动伪像和电极半电池电位。 该滤波器与仪表放大器结构紧密耦合,可实现单级高增益及高通滤波,从而节约了空间和成本。
AD8232采用一个无使用约束运算放大器来创建一个三极点低通滤波器,消除了额外的噪声。 用户可以通过选择所有滤波器的截止频率来满足不同类型应用的需要。 为了提高系统线路频率和其他不良干扰的共模抑制性能,AD8232内置一个放大器,用于右侧驱动(RLD)等受驱导联应用。
AD8232包含一项快速恢复功能,可以减少高通滤波器原本较长的建立长尾现象。 如果放大器轨电压发生信号突变(如导联脱离情况),AD8232将自动调节为更高的滤波器截止状态。 该功能让AD8232可以实现快速恢复,因而在导联连接至测量对象的电极之后能够尽快取得有效的测量值。
采取心电模块, 以及心电导联到左右手和右腿驱动, 三个电极即可测量出心电曲线, 收集一组ADC转换出来的串口上传数据, excel画图如下:
其中,曲线中中断的地方就是电极脱落的报警信号.
后续继续算法开发, 选取合适的采样率, 加上数字滤波器, 分析出心率异常, 心脏疾病初步诊断, 非常有利于外部急救响应.
附加ADC读取简单程序:
static csi_adc_t adc;//PA3 int get_pa3_adc() { uint32_t adc_data; csi_pin_set_mux(EXAMPLE_ADC_CHANNEL0_PIN,EXAMPLE_ADC_CHANNEL0_PIN_FUNC); csi_adc_init(&adc,0); csi_adc_freq_div(&adc,128); csi_adc_sampling_time(&adc,2); csi_adc_channel_enable(&adc,0,true); csi_adc_start(&adc); adc_data = csi_adc_read(&adc); printf("%d\n",adc_data); //uninit adc csi_adc_uninit(&adc); return adc_data; }