读取MAX30101 HR和SP02数据
Reading MAX30101 HR and SP02 data
我正在尝试根据 MAX30101 High-Sensitivity Pulse Oximeter and Heart-Rate Sensor 计算心率和外周毛细血管氧饱和度 (SPO2)。我知道当我处于 HR 模式时,我的样本有 3 个字节,而当我处于 SPO2 模式时,样本有 6 个字节。我不明白得到原始数据后要做什么。
我知道对于 SpO2,我需要使用比率 R=(ACred/DCred)/(ACir/DCir),然后 SpO2=104-17R(如图 in this datasheet: https://pdfserv.maximintegrated.com/en/an/AN6409.pdf ),但我不知道如何获得 AC i DC 组件,或如何获得 HR。数据表中没有关于它的任何具体信息。有人可以向我解释一下,或者提供一个例子吗?我只能return原始数据。
这是我为使用 stm32ide:
阅读一个示例而创建的部分代码
void max_readFIFO_one_sample(uint8_t mode)
{
if (mode= hr)
{
ret= HAL_I2C_Master_Transmit(&hi2c1, MAX_ADDRw, 0x05, 1, HAL_MAX_DELAY);
ret= HAL_I2C_Master_Receive(&hi2c1, MAX_ADDRr, temp, 3, HAL_MAX_DELAY);
}
else if (mode == spo2)
{
uint8_t temp[6] = {0};
ret= HAL_I2C_Master_Transmit(&hi2c1, MAX_ADDRw, 0x05, 1, HAL_MAX_DELAY);
ret= HAL_I2C_Master_Receive(&hi2c1, MAX_ADDRr, temp, 6, HAL_MAX_DELAY);
}
}
您必须使用直流滤波,因为响应的电气特性使其充满噪声。您需要找到一种方法来平滑产生的锯齿状曲线,以便您可以获得更稳定和可用的响应(更少的噪音)。您提到的文章描述了一种方法,但还有其他方法,包括仅取平均值。要点:您需要将信号值的范围视为特定时间的特定信号值,以便获得有意义的结果。您必须找到一种方法将模拟连续值转换为数字离散值。
我正在尝试根据 MAX30101 High-Sensitivity Pulse Oximeter and Heart-Rate Sensor 计算心率和外周毛细血管氧饱和度 (SPO2)。我知道当我处于 HR 模式时,我的样本有 3 个字节,而当我处于 SPO2 模式时,样本有 6 个字节。我不明白得到原始数据后要做什么。
我知道对于 SpO2,我需要使用比率 R=(ACred/DCred)/(ACir/DCir),然后 SpO2=104-17R(如图 in this datasheet: https://pdfserv.maximintegrated.com/en/an/AN6409.pdf ),但我不知道如何获得 AC i DC 组件,或如何获得 HR。数据表中没有关于它的任何具体信息。有人可以向我解释一下,或者提供一个例子吗?我只能return原始数据。
这是我为使用 stm32ide:
阅读一个示例而创建的部分代码void max_readFIFO_one_sample(uint8_t mode)
{
if (mode= hr)
{
ret= HAL_I2C_Master_Transmit(&hi2c1, MAX_ADDRw, 0x05, 1, HAL_MAX_DELAY);
ret= HAL_I2C_Master_Receive(&hi2c1, MAX_ADDRr, temp, 3, HAL_MAX_DELAY);
}
else if (mode == spo2)
{
uint8_t temp[6] = {0};
ret= HAL_I2C_Master_Transmit(&hi2c1, MAX_ADDRw, 0x05, 1, HAL_MAX_DELAY);
ret= HAL_I2C_Master_Receive(&hi2c1, MAX_ADDRr, temp, 6, HAL_MAX_DELAY);
}
}
您必须使用直流滤波,因为响应的电气特性使其充满噪声。您需要找到一种方法来平滑产生的锯齿状曲线,以便您可以获得更稳定和可用的响应(更少的噪音)。您提到的文章描述了一种方法,但还有其他方法,包括仅取平均值。要点:您需要将信号值的范围视为特定时间的特定信号值,以便获得有意义的结果。您必须找到一种方法将模拟连续值转换为数字离散值。