天天看點

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