MAX30208CLB+开发指南

医疗级无线电子体温计方案套芯片
MAX30208+nRF52823+
±0.1°C精度、I2C接口数字温度传感器
【备货信息】
MAX30208CLB+ UDFN 10 pin
MAX30208CLB+T UDFN 10 pin

【Functional Diagram】

MAX30208CLB+开发指南
【关键特性】
高准确度、高精度
±0.1°C精度@ +30°C至+50°C
±0.15°C精度@ +0°C至+70°C
低功耗
1.7V至3.6V工作电压
67μA测量期间工作电流
0.5μA待机电流
15ms积分时间
小尺寸
2mm x 2mm x 0.75mm、10引脚薄型LGA封装
安全性和合规性
高、地温报警
数字接口
可配置转换温度输入引脚
可配置中断输出引脚
32字FIFO,用于温度数据
提供4个I2C地址——根据需求可提供更多地址
唯一的ROM ID,支持NIST溯源性
【引脚定义】
MAX30208CLB+开发指南
【焊接注意】
这个类似BGA了,要用锡丝,锡珠,助焊剂,热风枪等工具:
开个钢网 刷个锡膏,镊子夹起来 摆好,不要手抖,热风枪 反面加热下
【时许图】
MAX30208CLB+开发指南
详细的时序图如图3所示。位转移在每个SCL周期中传输一个数据位。在SCL脉冲的高周期内,SDA的数据必须保持稳定。SCL高时SDA的变化是控制信号(请参阅“启动和停止条件”部分)。
启动和停止条件
不使用总线时,SDA和SCL空闲高。主机通过发出启动条件来启动通信。启动条件是在SCL高的SDA上从高到低的转换。停止条件是SDA上的从低到高的转换,而SCL是高的(图4)。主设备的启动条件向MAX30208发送开始信号。主服务器通过发出停止条件来终止传输并释放总线。如果生成重复的启动条件而不是停止条件,总线将保持活动状态。

早停条件
在数据传输期间,MAX30208在任何点识别停止条件,除非停止条件发生在与启动条件相同的高脉冲中。为了正确操作,在与启动条件相同的SCL高脉冲期间,不要发送停止条件。
对方回应一个应答位确认位(ACK)是一个时钟第9位,MAX30208用于在写入模式图5中握手接收每个字节的数据。如果成功接收到前一个字节,则在整个主生成的第9个时钟脉冲期间,MAX30208会拉低SDA。监视ACK允许检测不成功的数据传输。如果接收设备正忙或发生系统故障,则会发生不成功的数据传输。如果数据传输不成功,总线主机将重试通信。当MAX30208处于读取模式时,主机在第9个时钟周期内下拉SDA以确认收到数据。确认由发送每读取一个字节后的主机,以允许数据传输继续进行。当主机从MAX30208读取数据的最后一个字节,然后是停止条件时,发送不确认。
I2C写入数据格式
对MAX30208的写入包括发送开始条件、R/W位设置为0的从机地址、用于配置内部寄存器地址指针的一个字节的数据、一个或多个字节的数据和停止条件。图6说明了将一个字节的数据写入MAX30208的正确帧格式。图7说明了向MAX30208写入n字节数据的帧格式。
主机首先发送从机地址,R/W位设置为0。这表示主机打算将数据写入MAX30208。MAX30208在主生成的第9个SCL脉冲期间确认接收到地址字节。
【应用电路图】
MAX30208CLB+开发指南
【多点级链电路图】
MAX30208CLB+开发指南
nRF52823+MAX30208+MAX30102+AD

【程序代码】
*/
#ifndef MAX30208_H_
#define MAX30208_H_
#include “nrf52832x.h”
#include “stdbool.h”
#define I2C_WRITE_ADDR 0xAE
#define I2C_READ_ADDR 0xAF
//register addresses
#define REG_INTR_STATUS_1 0x00
#define REG_INTR_STATUS_2 0x01
#define REG_INTR_ENABLE_1 0x02
#define REG_INTR_ENABLE_2 0x03
#define REG_FIFO_WR_PTR 0x04
#define REG_OVF_COUNTER 0x05
#define REG_FIFO_RD_PTR 0x06
#define REG_FIFO_DATA 0x07
#define REG_FIFO_CONFIG 0x08
#define REG_MODE_CONFIG 0x09
#define REG_SPO2_CONFIG 0x0A
#define REG_PILOT_PA 0x10

#define REG_MULTI_LED_CTRL1 0x11

#define REG_MULTI_LED_CTRL2 0x12

#define REG_TEMP_INTR 0x1F

#define REG_TEMP_FRAC 0x20

#define REG_TEMP_CONFIG 0x21

#define REG_PROX_INT_THRESH 0x30

#define REG_REV_ID 0xFE

#define REG_PART_ID 0xFF

bool maxim_max30208_init(void);

bool maxim_max30208_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led);

bool maxim_max30208_write_reg(uint8_t uch_addr, uint8_t uch_data);

bool maxim_max30208_read_reg(uint8_t uch_addr, uint8_t *puch_data);

bool maxim_max30208_reset(void);

#endif /* MAX30208_H_ */