这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 活动中心» 板卡试用» 【换取手持数字示波器】驱动设计——玩转BME280

共11条 1/2 1 2 跳转至

【换取手持数字示波器】驱动设计——玩转BME280

高工
2024-03-07 09:41:24 被打赏50分(兑奖) 打赏

本次使用的模块型号为GY-BM E/P 280,淘宝上到处可以买到,这是对德国博世公司的BMP280芯片的一个应用封装。采用将使用主控芯片为STM32F103VCT6单片机获取BMP280的参数.

引脚说明:

Pin1:VCC(3.3V供电)

Pin2:GND

Pin3:SCL(I2C通信模式时钟信号)

Pin4:SDA(I2C通信模式数据信号)

Pin5:CSB(SPI通信模式下用到的引脚,本次没用到,可以悬空)

Pin6:SDO(传感器地址控制位,接GND的时候I2C中器件地址为0xEC,接高电平为0xEC+ 1,本次接GND)

传感器测试范围:

温度:-45℃~+85℃

大气压强:0~20000hPa(百帕)

测量主要模式:

Sleep Mode:作电流达到uA级别,典型值为0.1uA,最大值为0.3uA,所有测量工作都停止。

Normal Mode: 正常工作,相关工作间隔时间可以通过寄存器控制。

Forced Mode:主控发起一次采集命令,传感器采集一次信号,然后进入Sleep Mode,等待下次唤起(本次没用到)。

相关寄存器说明

测量控制寄存器(ctrl_meas)(0xF4):

Bit7~Bit5:osrs_t[2:0] 控制温度采样模式,主要是采样数据的位数(位数越大,精度越高),具体配置如下(本次三位都配置为1,最大采样位数20Bit):

Bit4~Bit2:osrs_p[2:0] 控制大气压强采样模式,主要是采样数据的位数(位数越大,精度越高),具体配置如下(本次三位都配置为1,最大采样位数20Bit):

Bit1~Bit0:mode[1:0] 传感器工作模式控制,00为Sleep Mode,01/10为Forced Mode,11为 Normal Mode(本次配置为11)。

配置寄存器(config)(0xF5):

Bit7~Bit5:t_sb[2:0] 设置Normal Mode下的转换间隔时间,具体配置如下(本次配置为000,0.5ms转换一次)

Bit4~Bit2:filter[2:0] 设置传感器接收外界信号时的,前端滤波电路的滤波系数的,我也没仔细研究,就设置了个000,有兴趣的童鞋可以自己研究一下,datasheet上说和稳定度有关,可以有效减少外界环境的干扰:

Bit0:spi3w_en 与SPI模式有关,本次没用到,没设置。

身份编号寄存器(id)(0xD0):

寄存器内固定值为0x58,读取0xD0数据的时候,传感器返回0x58,代表身份辨认完毕。

复位寄存器(reset)(0xE0):

写入0xB6时,所有寄存器(除身份编号寄存器)数据全部清零。

状态寄存器(status)(0xF3):

具体定义如下,感兴趣的童鞋自己研究,本次没用到:

数据处理基本过程

该传感器是使用测量值和校准值(初始化中获得),通过公式计算得出的,相关公式在datasheet中已经贴出了,还给了样本数据(公式挺复杂的,建议先把公式抄到程序中,然后用样本数据传进去,测试一遍结果对不对,保证公式没抄错)。

数据处理中有个坑,请注意,就是读取补偿值数据的时候,下图的数据存储位是LSB/MSB,即数据是反过来存储的,低位字节在前,高位字节在后,所以处理数据的时候要注意。

2.png





关键词: BMP280 寄存器 数据 驱动

工程师
2024-03-08 07:01:44 打赏
2楼

数据宝贵 感谢分享


专家
2024-03-09 00:56:54 打赏
3楼

感谢分享


专家
2024-03-09 09:25:54 打赏
4楼

谢谢分享资料!收藏!


助工
2024-03-09 17:26:20 打赏
5楼

感谢分享


院士
2024-03-10 16:26:47 打赏
6楼

学习并收藏了,谢谢分享。


专家
2024-03-11 11:53:05 打赏
7楼

学习和收藏,谢谢分享!


工程师
2024-03-13 16:23:56 打赏
8楼

学习了


高工
2024-03-14 11:25:09 打赏
9楼

数据宝贵 感谢分享


高工
2024-03-14 11:54:54 打赏
10楼

感谢分享


共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]