压力和温度监测在嵌入式系统开发中是非常常见的需求,特别是对环境大气压力和温度的检测需求就更常见了。我们一般都会选择一些封装较小操作比较方便的压力传感器。BMP280就是满足这一要求的器件。在这一篇中我们将设计并实现BMP280的驱动。
1、功能概述
BMP280是一款绝对压力传感器产品。BMP280是一款绝对的气压传感器,专为移动应用而设计。传感器模块采用极其紧凑的封装。其小尺寸和低功耗允许在诸如移动电话,GPS模块或手表的电池供电设备中实现。
1.1、硬件接口
BMP280基于博世经过验证的压阻式压力传感器技术,具有高精度和线性度以及长期稳定性和高EMC稳健性。众多器件操作选项提供了最高的灵活性,可针对功耗,分辨率和滤波器性能优化器件。为开发人员提供了一组经过测试的默认设置(例如用例),以便尽可能简化设计。
BMP280压力温度传感器采用了小巧的8引脚LGA封装形式。其引脚排布就功能如下图所示:

BMP280压力温度传感器支持3种通讯接口方式:四线SPI、三线SPI以及I2C。在不同的接口模式下,各引脚的定义也是有差异的,关于这三种接口模式各引脚的定义如下:

对应3种不同的接口方式,BMP280压力温度传感器存在三种与总线连接的方式。首先我们来看四线SPI接口方式,包括CSB片选、SCK时钟、SDI数字输入、SDO数字输出。其总线连接方式如下图:

接下来我们来看三线SPI接口方式,包括CSB片选、SCK时钟、SDI数字输入/SDO数字输出。其与4线SPI的区别是数字输入输出使用同一引脚,第3脚就是输入也是输出,而第5脚浮空。其总线连接方式如下图:

最后我们来看I2C接口方式,包括SCL时钟、SDA数字输入输出。在I2C接口模式下,第2脚CSB连接到高电平,以设置BMP280压力温度传感器使用I2C接口。而第5脚则可以通过连接高电平或低电平来设置设备地址的最后一位,不可以浮空。所以根据第5脚电频不同,BMP280压力温度传感器的I2C设备7位地址为:0x76和0x77。其总线连接方式如下图:

BMP280压力温度传感器在使用SPI接口时,支持SPI模式0(CPOL=CPHA=0)和模式3(CPOL=CPHA=1)。而在使用I2C接口时,支持标准模式、快速模式以及高速模式。接口的选择实际上是通过CSB的电位实现的,低电平时就是SPI,高电平时就是I2C。
1.2、数据存储结构
对BMP280压力温度传感器的所有操作都是通过读写对应的寄存器来实现的。BMP280压力温度传感器中所有的寄存器都是8位的。这些寄存器在存储器中的地址分配如下图所示。

在上图并未包括系统保留的寄存器,这些寄存器不可以进行写操作,读出来的值也是无意义的。接下来我们来详细描述上图中的这些寄存器。
先来看看两个比较特殊的寄存器。首先是ID寄存器,这个寄存器是只读的,而且其存储的值也固定为0x58,用来代表设备为BMP280压力温度传感器。这个寄存器在系统上电后即可读取。还有复位寄存器,这个寄存器是只写的,固定向其写0xB6来实现BMP280压力温度传感器的复位。同样只要系统上电后即可以写复位寄存器。
状态寄存器是只读的,其实只使用了其中的两位,这两位分别表示数据测量是否完成和影响寄存器是否更新。下图是状态寄存器的详细说明:


本文介绍BMP280压力温度传感器的驱动设计与实现过程,涵盖接口选择、寄存器配置等内容,并提供了一个简单的应用实例。
最低0.47元/天 解锁文章
1994





