醫療級無線電子體溫計方案套晶片
MAX30208+nRF52823+
±0.1°C精度、I2C接口數字溫度傳感器
【備貨資訊】
MAX30208CLB+ UDFN 10 pin
MAX30208CLB+T UDFN 10 pin
【Functional Diagram】
【關鍵特性】
高準确度、高精度
±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溯源性
【引腳定義】
【焊接注意】
這個類似BGA了,要用錫絲,錫珠,助焊劑,熱風槍等工具:
開個鋼網 刷個錫膏,鑷子夾起來 擺好,不要手抖,熱風槍 反面加熱下
【時許圖】
詳細的時序圖如圖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脈沖期間确認接收到位址位元組。
【應用電路圖】
【多點級鍊電路圖】
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