您现在的位置是:首页 > 正文

AFE4400的使用

2024-02-01 05:13:17阅读 2

随着人们越来越重视医疗健康,相对应的产品也随之推出。TI就很好的走在前面,对于生理信号采集方面不仅推出了ADS124x系列和ADS129x系列,也推出了集成了光传感器AFE系列。

AFE4400 是一款非常适合于脉冲血氧仪应用的完全集成模拟前端 (AFE)。 此器件包含一个具有集成模数转换器 (ADC) 的低噪声接收器通道、一个 LED 发射部件和针对传感器以及 LED 故障检测的诊断功能。

数据手册介绍到此结束。不废话,接下来介绍电路原理图。原理图也是根据数据手册的典型应用得到的。两个红光和红外LED选用的是DCM05(或者DCM03)


NRST芯片复位,低电平有效,复位后需要重新配置寄存器。

PD_ALM为光电传感器断开信号,LED_ALM为LED断开信号,DIAG_END是检测终了信号,这3个信号可连接单片机,用于检测器件的连接情况。

AFE_PDN为低功耗引脚,低电平有效。

ADC_RDY为信号采集并转换完成,此时可通过SPI读取转换结果。


PCB布局也非常简单,左边芯片为AFE4400,右边的芯片是stm8L151.

程序方面主要讲一下寄存器配置和数据读取。

void AFE4404_Set_Value(void)
{
  //AFE4400_Set_Register(CONTROL0,        0x04);
  AFE4400_Set_Register(LED2STC,         6050);
  AFE4400_Set_Register(LED2ENDC,        7998);
  AFE4400_Set_Register(LED2LEDSTC,      6000);
  AFE4400_Set_Register(LED2LEDENDC,     7999);
  AFE4400_Set_Register(ALED2STC,        50);
  AFE4400_Set_Register(ALED2ENDC,       1998);
  AFE4400_Set_Register(LED1STC,         2050);
  AFE4400_Set_Register(LED1ENDC,        3998);
  AFE4400_Set_Register(LED1LEDSTC,      2000);
  AFE4400_Set_Register(LED1LEDENDC,     3999);
  AFE4400_Set_Register(ALED1STC,        4050);
  AFE4400_Set_Register(ALED1ENDC,       5998);
  AFE4400_Set_Register(LED2CONVST,      4);
  AFE4400_Set_Register(LED2CONVEND,     1999);
  AFE4400_Set_Register(ALED2CONVST,     2004);
  AFE4400_Set_Register(ALED2CONVEND,    3999);
  AFE4400_Set_Register(LED1CONVST,      4004);
  AFE4400_Set_Register(LED1CONVEND,     5999);
  AFE4400_Set_Register(ALED1CONVST,     6004);
  AFE4400_Set_Register(ALED1CONVEND,    7999);
  
  AFE4400_Set_Register(ADCRSTSTCT0,     0);
  AFE4400_Set_Register(ADCRSTENDCT0,    3);
  AFE4400_Set_Register(ADCRSTSTCT1,     2000);
  AFE4400_Set_Register(ADCRSTENDCT1,    2003);
  AFE4400_Set_Register(ADCRSTSTCT2,     4000);
  AFE4400_Set_Register(ADCRSTENDCT2,    4003);
  AFE4400_Set_Register(ADCRSTSTCT3,     6000);
  AFE4400_Set_Register(ADCRSTENDCT3,    6003);
  
  AFE4400_Set_Register(PRPCOUNT,        7999);
  
  AFE4400_Set_Register(CONTROL1,        0x100);
//  AFE4400_Set_Register(TIA_AMB_GAIN,    0x004481);
  AFE4400_Set_Register(TIA_AMB_GAIN,    0x004141);
  AFE4400_Set_Register(LEDCNTRL,        0x8F8F);
  AFE4400_Set_Register(CONTROL2,        0x100);
}

前面的寄存器是配置芯片的时序的,这里的配置使用的是官方手册给的数值,这里不做讨论,详细意思在手册上能查阅。由于我们使用的是8M的晶振,寄存器PRPCOUNT的值为7999,意味着一个周期为1ms,这里采样率为1000Hz,对于采集血氧饱和度足矣。

AFE4400读取寄存器的方式有些特别,根据手册所述需要设置CONTROL0的读写位之后才能读取数据。

void AFE4400_Set_READABLE(u8 isReadable)
{
  SPI_WriteByte(CONTROL0);  //写入寄存器地址
  SPI_WriteByte(0x00);
  SPI_WriteByte(0x00);
  SPI_WriteByte(isReadable);
}

u32 AFE4400_Read_Register(u8 reg_address)
{
  u32 temp0=0, temp1=0, temp2=0;
  u32 temp=0;
  
  AFE_CS_L;
  AFE4400_Set_READABLE(1);
  
  SPI_WriteByte(reg_address);  //写入寄存器地址
  temp0 = SPI_ReadByte();
  temp1 = SPI_ReadByte();
  temp2 = SPI_ReadByte();
  AFE_CS_H;
  
  temp = temp0<<16 | temp1<<8 | temp2;
  return temp;
}

void AFE4400_Set_Register(u8 reg_address, u32 data)
{
  AFE_CS_L;
  AFE4400_Set_READABLE(0);
  
  SPI_WriteByte(reg_address);  //写入寄存器地址
  SPI_WriteByte((data>>16)&0xFF);
  SPI_WriteByte((data>>8)&0xFF);
  SPI_WriteByte((data)&0xFF);
  AFE_CS_H;
}

数据读取通过ADC_RDY信号的下降沿触发之后使用SPI读取。

通过蓝牙发送到手机编写的APP中,画图显示波形。


最后附上驱动代码:http://download.csdn.net/detail/devintt/9849976





网站文章

  • 学习计划表(长期)

    一:课程学习 数学:1. 高等数学 2. 线性代数 英语:1. 英语四级 2. 英语六级 政治:1. 思修 2. 毛概 3. 近代史 4.马原 5. 时事 专业:1. 信息技术(计算机基础) 2. 自...

    2024-02-01 05:12:48
  • 深度学习deep learning

    深度学习deep learning

    一、简介 深度学习是包含多个隐层的机器学习模型,核心是基于训练的方式,从海量数据中挖掘有用信息,实现分类与预测。 早期的深度学习模型:编码器、循环神经网络、深度置信网络、卷积神经网络 衍生模型:堆叠降...

    2024-02-01 05:12:41
  • mui中的页面传值方法

    1.通过url传值: 父页面: mui.openWindow({ url: xxx.html?date=&#39;+str, }); var thisURL = document.URL;//获取页面...

    2024-02-01 05:12:33
  • com.aspose.cad.cadexceptions.ImageSaveException: Image export failed. 解决方案

    com.aspose.cad.cadexceptions.ImageSaveException: Image export failed. 解决方案

    项目使用aspose-cad做dwg转svg/png,本地调试正常,部署到linux换进报错com.aspose.cad.cadexceptions.ImageSaveException: Image export failed.

    2024-02-01 05:12:00
  • QSqlTableModel使用简介

    QSqlTableModel使用简介

    【代码】QSqlTableModel使用简介。

    2024-02-01 05:11:53
  • html5 梵高 星,复华文旅:穿越吧!梵高

    创意定位复华耀世SPIRIT为宣传自身优势和高端定位推出的H5作品,作品以梵高的描述为主线,讲述了梵高在世界各地的惨痛遭遇后在澳大利亚黄金海岸找到幸福人生的故事,以此引起人们对复华耀世的关注和了解。策...

    2024-02-01 05:11:46
  • 20200716NOIP模拟测

    T1【题目描述】有一个正整数序列AAA,AAA中含有NNN个正整数A1,A2,...,ANA_1 ,A_2 , ... , A_NA1​,A2​,...,AN​ 。现在依次执行以下QQQ个操作: Bi...

    2024-02-01 05:11:17
  • 密钥协商机制

    密钥协商机制

    https://www.cnblogs.com/-9-8/p/7985989.html 转自cnblogs, 作者: _9_8 密钥协商机制 https://www.cnblogs.com/-9-8/p/7985989.html 密钥协商机制,主要来得到通信双方的临时会话密钥。主要的方式有: 一、依靠非对称加密(公钥)算法; RSA,ECC等。   ...

    2024-02-01 05:11:11
  • java编程题:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现 热门推荐

    /** * 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现 * */ public class Test { public static void main(String[] args) { System.out.println(&quot;结果是:&quot;+Test.foo(30)); } /** * 递归算法实现 */

    2024-02-01 05:10:38
  • 记录一个比较好的学习数据结构的网站

    有各种动画演示: http://student.zjzk.cn/course_ware/data_structure/web/main.htm

    2024-02-01 05:10:23