ROHM社區(qū)舉辦活動(dòng)的時(shí)候拿到了評估的傳感器,在Arduino上面跑過一次,今天再次拿出來用其他mcu跑一次,順帶總結(jié)一下。正品現(xiàn)貨可以找ROHM原廠代理代理唯樣,新人還有活動(dòng)。
1、基本特性
- 壓阻式氣壓傳感器
- 內(nèi)置溫度補(bǔ)償
- I2C接口
- 壓力范圍:300hPa~1100hPa
- 平均功耗:3uA
- 運(yùn)行溫度:-40℃~85℃
- 小封裝:2.50mm 2.50mm1.0mm
- 相對精度:±0.12hPa
- 絕對精度:±1hPa
- 主要應(yīng)用:智能手機(jī)、醫(yī)療保健、移動(dòng)設(shè)備等
2、引腳描述
DREG和VSS之間需要接一個(gè)旁路電容,大小為0.22uF;
VDD電源供電,VSS接GND,SCL、SDA用于I2C通訊,DRDY引腳一般用于觸發(fā)mcu外部中斷。
3、寄存器描述
4、軟件設(shè)計(jì)
4.1、寄存器定義以及參數(shù)設(shè)置定義
#define BM1383AGLV_I2C_ADDR 0x5D
#define BM1383AGLV_ID1 0x0F
#define BM1383AGLV_ID2 0x10
#define BM1383AGLV_PWR_DOWN 0x12
//PWR_DOWN[0]
#define POWER_DOWN 0x00
#define ACTIVE 0x01
//Reserved[7:1]
#define BM1383AGLV_RESET 0x13
//RSTB[0]
#define MEASUREMENT_RESET 0x00
#define MEASUREMENT_ACTIVE 0x01
//Reserved[7:1]
#define BM1383AGLV_MODE_CONTROL 0x14
//mode [1:0]
#defineMODE_STAND_BY 0x00
#defineMODE_ONE_SHOT 0x01
#defineMODE_CONTINUOUS 0x02
#defineMODE_PROHIBITION 0x03
//Reserved[2]
//Reserved[3]
#defineDEFAULT_1 0x08
//DRDY pin Enable[4]
#defineDRDY_PIN_ENABLE 0x10
#defineDRDY_PIN_DISABLE 0x00
//Set the average number of measurement data[7:5]
#define AVE_NUM_1 0x00
#defineAVE_NUM_2 0x20
#defineAVE_NUM_4 0x40
#defineAVE_NUM_8 0x60
#defineAVE_NUM_16 0x80
#defineAVE_NUM_32 0xA0
#defineAVE_NUM_64 0xC0
#defineAVE_NUM_INHIBIT 0xE0
#define BM1383AGLV_STATUS 0x19
//Pressure and temperature measurement data ready bit[0]
#define DATA_OUTPUT_AVAILABLE 0x01
#define DATA_OUTPUT_NOT_AVAILABLE 0x00
//Reserved[7:1]
#define BM1383AGLV_PRESSURE_MSB 0x1A
#define BM1383AGLV_PRESSURE_LSB 0x1B
#define BM1383AGLV_PRESSURE_DEC 0x1C
//Pressure data output (decimal extension 6bit)[7:2]
//Reserved[1:0]
#define BM1383AGLV_TEMPERATURE_MSB 0x1D
#define BM1383AGLV_TEMPERATURE_LSB 0x1E
4.2、讀取芯片ID
設(shè)備ID一般都是一個(gè)固定值,芯片出廠的時(shí)候已經(jīng)固化在芯片里面了,只讀,可用于檢測I2C通信是否正常、檢測芯片是否存在。
bool BM1383AGLVCheck(void)
{
uint16 chip_id=0;
chip_id=BM1383AGLV_ReadRegU16(BM1383AGLV_ID1);
if(chip_id==0x32E0)
{
return true;
}
else
{
return false;
}
}
4.3、芯片初始化設(shè)置
主要是3個(gè)寄存器POWER_DOWN(12h)、RESET(13h)、MODE_CONTROL(14h),其中
POWER_DOWN(12h)主要是設(shè)置芯片上電啟動(dòng):
RESET(13h)主要設(shè)置芯片啟動(dòng)測量控制功能:
MODE_CONTROL(14h)主要用于設(shè)置芯片測量模式、測量次數(shù)、以及是否使用DRDY引腳:
芯片手冊中也給了啟動(dòng)流程,先是往寄存器12h中寫入0x01,延時(shí)至少2ms之后,往寄存器13h中寫入0x01即可:
void BM1383AGLVInit(void)
{
BM1383AGLV_WriteRegU8(BM1383AGLV_PWR_DOWN,ACTIVE);
//設(shè)置芯片上電
_delay_ms(5);//延時(shí)必須大于2ms
BM1383AGLV_WriteRegU8(BM1383AGLV_RESET,MEASUREMENT_ACTIVE);
//啟動(dòng)測量功能
BM1383AGLV_WriteRegU8(BM1383AGLV_MODE_CONTROL,MODE_CONTINUOUS|DEFAULT_1|
DRDY_PIN_DISABLE|AVE_NUM_8);
//持續(xù)測量模式、每次測量8次、不使能DRDY引腳
}
4.4、讀取數(shù)據(jù)
讀取數(shù)據(jù)之前,我們要先判斷一下是否采樣完成,涉及到寄存器STATUS(19h),當(dāng)bit[0]為1的時(shí)候,表示采樣完成,可以讀取數(shù)據(jù):
寄存器PRESSURE_MSB(1Ah)、PRESSURE_LSB(1Bh)、PRESSURE_LSB(Least 6bit) ( 1Ch )就是采樣出的壓力值,需要轉(zhuǎn)換為實(shí)際的壓力值:
寄存器TEMPERATURE_MSB(1Dh)、TEMPERATURE_LSB(1Eh)是采樣出的溫度值,同樣的需要轉(zhuǎn)化為實(shí)際溫度:
void BM1383AGLVRead(void)
{
uint32 pressure_count=0;
uint8 pressure_m, pressure_l,pressure_d;
float pressure;
uint32 temperture_count=0;
uint8 temperture_m, temperture_l;
float temperture;
while(BM1383AGLV_ReadRegU8(BM1383AGLV_STATUS)&DATA_OUTPUT_AVAILABLE
!=DATA_OUTPUT_AVAILABLE);//等待當(dāng)前測量完成
pressure_m=BM1383AGLV_ReadRegU8(BM1383AGLV_PRESSURE_MSB);
pressure_l=BM1383AGLV_ReadRegU8(BM1383AGLV_PRESSURE_LSB);
pressure_d=BM1383AGLV_ReadRegU8(BM1383AGLV_PRESSURE_DEC);
pressure_d=pressure_d>>2;//高6位有效
pressure_count=pressure_m<<14;?
pressure_count+=pressure_l<<6;?
pressure_count+=pressure_d;
pressure=pressure_count/2048.0;
printf(“Pressure:%.2f hPa\r\n”,pressure);
temperture_m=BM1383AGLV_ReadRegU8(BM1383AGLV_TEMPERATURE_MSB);
temperture_l=BM1383AGLV_ReadRegU8(BM1383AGLV_TEMPERATURE_LSB);
temperture_count=temperture_m<<8;?
temperture_count+=temperture_l;
temperture=temperture_count/32.0;
printf(“Temperture:%f ℃\r\n”,temperture);
}
4.5、測試讀取數(shù)據(jù)
4.6、進(jìn)入休眠
void BM1383AGLVSleep(void)
{
BM1383AGLV_WriteRegU8(BM1383AGLV_RESET,MEASUREMENT_RESET);
_delay_ms(5);
BM1383AGLV_WriteRegU8(BM1383AGLV_PWR_DOWN,POWER_DOWN);
}
-
傳感器
+關(guān)注
關(guān)注
2565文章
52974瀏覽量
767212 -
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44985瀏覽量
650321
發(fā)布評論請先 登錄
MAX32663A超低功耗ECG生物識(shí)別傳感器綜述

兆易創(chuàng)新MEMS氣壓傳感器的無限可能

氣壓傳感器的分類與應(yīng)用

氣壓傳感器的工作原理和主要類型
氣壓傳感器與物聯(lián)網(wǎng)的結(jié)合
氣壓傳感器的校準(zhǔn)方法 無線氣壓傳感器的使用優(yōu)勢
氣壓傳感器如何提高測量精度
氣壓傳感器在氣象預(yù)測中的應(yīng)用
小型氣壓傳感器的應(yīng)用 工業(yè)氣壓傳感器的選購技巧
氣壓傳感器選型指南 精密氣壓傳感器的優(yōu)勢
氣壓傳感器工作原理詳解 氣壓傳感器在汽車中的應(yīng)用
氣壓傳感器與溫度傳感器的區(qū)別
氣壓傳感器應(yīng)用領(lǐng)域分析 如何選擇氣壓傳感器
使用霍爾效應(yīng)傳感器的低功耗設(shè)計(jì)

評論