BMP280使用指南

简介BMP280 - 气压传感器通信模式I2CSPI功能采集气压数据采集气温数据功能边界温度范围 -40 ~ 85 度压强范围 300 ~ 1100 hPa电压范围 1.71 ~ 3.6 V模式sleep modenormal modeforced mode测量流程#mermaid-svg-ypkiXTSUI8ZQN6QB .label{font-family:'trebuchet ms', verdana, arial;font-family:var(-
摘要由CSDN通过智能技术生成

简介

BMP280 - 气压传感器

在这里插入图片描述

背面

在这里插入图片描述

通信模式

  • I2C
  • SPI

Features

  • 单位写
  • 多位写
  • 单位读
  • 多位读

通讯模式选择

根据片选(CSB)引脚决定,如果CSB拉低,则采用SPI模式。注意,一旦CSB引脚被拉低后,SPI模式会一直开启,直到下一次重启硬件。

I2C通讯模式

  • SCL --> 时钟线
  • SDI --> 数据线
  • SDO --> 片地址的LSB(最低加权位)
  • CSB --> Vdd 拉高
写模式

写模式,通过Master写入从机地址开始0b111011x0(x时SDO决定的LSB)。

读模式

读模式的前提,需要通过写模式写入要读取的寄存器地址,然后通过0b111011x1读取输出的数据。

SPI通讯模式

SPI模式下,存在两种形式4线模式和3线模式。两种模式的协议是相同的。在寄存器spi3w_en设置为1的状态下,采用了3线模式,这种模式下SDI用于数据通讯。

  • SCL --> 时钟线
  • SDI --> 数据输入线;三线模式下为双向数据线
  • SDO --> 数据输出线; 3线模式下无用
  • CSB --> 片选引脚,拉低后启用

spi状态下,与i2c有些不同,因为无法通过地址位指定读写模式,因此,只能采用把读写模式放置在寄存器地址位中的模式来进行读写操作。

写模式

把寄存器地址为的bit7设定为0。如要写地址0b11110100 则把bit 7 转为 0,也就指定了写模式,这时候spi写入的寄存器地址为0b01110100,变换的就是bit 7 为,用它指定RW模式。

读模式

和写模式相同,只要把寄存器地址写入设备,就可以读取到寄存器的数据。

数据采集注意

微调参数

每一个BMP280设备都存在一定的微调参数,这些微调参数在设备生产过程中,就已经被写入到设备的NVM中,并且不支持客户进行修改,在计算采集的温度数据时,都应该通过微调参数的调整。

寄存器LSB/MSB 寄存器内容 数据类型
0x88/0x89 dig_T1 unsigned short
0x8A/0x8B dig_T2 signed short
0x8C/0x8D dig_T2 signed short
0x8E/0x8F dig_P1 unsigned short
0x90/0x91 dig_P2 signed short
0x92/0x93 dig_P3 signed short
0x94/0x95 dig_P4 signed short
0x96/0x97 dig_P5 signed short
0x98/0x99 dig_P6 signed short
0x9A/0x9B dig_P7 signed short
0x9C/0x9D dig_P8 signed short
0x9E/0x9F dig_P9 signed short
0xA0/0xA1 reserved reserved

计算样例

计算压强和温度数据
采集到的微调数据
寄存器地址 命名 数据 数据类型
0x88/0x89 dig_T1 27504 unsigned short
0x8A/0x8B dig_T2 26435 short
0x8C/0x8D dig_T3 -1000 short
0x8E/0x8F dig_P1 36477 unsigned short
0x90/0x91 dig_P2 -10686 short
0x92/0x93 dig_P3 3024 short
0x94/0x95 dig_P4 2855 short
0x96/0x97 dig_P5 140 short
0x98/0x99 dig_P6 -7 short
0x9A/0x9B dig_P7 15500 short
0x9C/0x9D dig_P8 -14600 short
0x9E/0x9F dig_P9 6000 short
采集到的测量数据
寄存器地址(MSB/LSB/XLSB) 名称 数值 类型
0xF7/0xF8/0xF9(7:4) UT[20 bit] 519888 signed long
0xFA/0xFB/0xFC(7:4) UP[20 bit] 415148 signed long

计算温度

int32_t var1, var2, T;
var1 = (((adc_T >> 3) - ((int32_t)dig_T1 << 1)) * ((int32_t)dig_T2)) >> 11;
var2 = (((((adc_T >> 4) - ((int32_t)dig_T1)) * ((adc_T >> 4) - ((int32_t)dig_T1))) >> 12) * ((int32_t)dig_T3)) >> 14;
t_fine = var1 + var2;
T = (t_fine * 5 + 128) >> 8;
变量名 变量值 描述 算法
var1 128793.1787 var1 = …
var2 -370.8917052 var2 = …
t_fine 128422 t_fine = …
T 25.08 温度数据 T = …

计算压强
int32_t var1, var2, p;

var1 = ((double)t_fine) - 128000;
var2 = var1 * var1 * (double)dig_P6;
var2 = var2 + ((var1 * (double)dig_P5) << 17);
var2 = var2 + (((double)dig_P4) << 35);
var1 = ((var * var1 * (double)dig_P3) >> 8) 
  • 27
    点赞
  • 186
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值