bmp280读出数据不变

最近在弄无人机,用到了MPU9250+bmp280,在读取bmp280传感器数据的时候,读出来的数据没有变化。

状态寄存器为一直为0,说明数据转换未完成。温度寄存器和气压寄存器读出来都是固定值没有变化(寄存器值是0或128)。

网上搜搜,有人竟然被这个问题卡了半年...吓得我

还好我花了十几分钟就找到问题了,是初始化有问题,参考了这篇文章:https://blog.csdn.net/liaokesen168/article/details/50930834

复位寄存器地址 BMP280_RST_REG :0xE0

uint8_t Bmp280Init(void)//
{
	if(I2cReadByte(BMP280_I2C_ADDR, BMP280_CHIP_ID) == BMP280_DEFAULT_CHIP_ID)	/* 读取bmp280 ID*/
	{
		HAL_I2C_Mem_Read(&hi2c1, BMP280_I2C_ADDR<<1, BMP280_TEMPERATURE_CALIB_DIG_T1_LSB_REG, I2C_MEMADD_SIZE_8BIT, (uint8_t *)&bmp280Cal, 24, 1000);
		I2cWriteByte(BMP280_I2C_ADDR, BMP280_RST_REG, 0xB6);	//数据全部清零
		I2cWriteByte(BMP280_I2C_ADDR, BMP280_CTRL_MEAS_REG, BMP280_MODE);
		I2cWriteByte(BMP280_I2C_ADDR, BMP280_CONFIG_REG, 5<<2);		/*配置IIR滤波*/
		return 0;
	}
	return 1;
}

bmp280初始化步骤:

1. 读补偿数据

2. 复位BMP280,数据全部清零(这步很关键,必须放在前面,不然后面设置无效)

3. 再设置模式、滤波器等等

 

详细的步骤可以去官方文档。

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值