首页 > 评测 > 【技术分享】MPL3115A2模块测量气压与海拔高度
【技术分享】MPL3115A2模块测量气压与海拔高度
- [导读]
- 本帖最后由 blust5 于 2023-5-10 16:25 编辑 #申请原创# @21小跑堂 前几天写了GD32开发板硬件I2C读写方面遇到的问题以及解决办法。https://bbs.21ic.com/icview-3300590-1-1.html?fromuser=blust5https://
本帖最后由 blust5 于 2023-5-10 16:25 编辑
#申请原创# @21小跑堂
- init8_t MPL_Init(void)
- {
- uint8_t reg_data, get_data;
- reg_data = 0x39;
- eeprom_byte_write(& reg_data, CTRL_REG1_ADDR);
- eeprom_buffer_read(&get_data, CTRL_REG1_ADDR, 1);
- if(get_data==reg_data)
- {
- return 0;
- }
- else
- {
- return -1;
- }
- }
- int8_t MPL_Result_Read(void)
- {
- uint8_t status;
- uint8_t data_buf[5];
- eeprom_buffer_read(&status, DATA_STATUS_ADDR, 1);
- if((status & 0x08) == 0)
- {
- return -1;
- }
- eeprom_buffer_read(data_buf, DATA_START_ADDR, 5);
- return 0;
- }
- void MPL_Init(uint8_t mode)
- {
- uint8_t i, mode_data,reg_data, get_data=0;
- if(mode==0)
- {
- mode_data = 0x38;
- }
- else
- {
- mode_data = 0xB8;
- }
- reg_data = mode_data;
- eeprom_byte_write(& reg_data, CTRL_REG1_ADDR);
- eeprom_buffer_read(&get_data, CTRL_REG1_ADDR, 1);
- if(get_data!=reg_data)
- {
- MPL_ERR_Display();
- return;
- }
- reg_data = 0x07;
- eeprom_byte_write(& reg_data, PT_DATA_CFG_ADDR);
- eeprom_buffer_read(&get_data, PT_DATA_CFG_ADDR, 1);
- if(get_data!=reg_data)
- {
- MPL_ERR_Display();
- return;
- }
- reg_data = mode_data + 1;
- eeprom_byte_write(& reg_data, CTRL_REG1_ADDR);
- eeprom_buffer_read(&get_data, CTRL_REG1_ADDR, 1);
- if(get_data!=reg_data)
- {
- MPL_ERR_Display();
- return;
- }
- MPL_OK_Display();
- }
- int8_t MPL_Result_Read(void)
- {
- uint8_t status;
- uint8_t data_buf[5];
- eeprom_buffer_read(&status, DATA_STATUS_ADDR, 1);
- if((status & 0x08) == 0)
- {
- return -1;
- }
- eeprom_buffer_read(data_buf, DATA_START_ADDR, 5);
- height_integer = (uint32_t)data_buf[0]*0x100 + (uint32_t)data_buf[1];
- height_decimal = (data_buf[2]>>4) * 625;
- temp_integer = data_buf[3];
- temp_decimal = (data_buf[4]>>4) * 625;
- pressure_value = (uint32_t)data_buf[0]*0x400 + (uint32_t)data_buf[1]*0x04 + (data_buf[2]>>6);
- return 0;
- }
气压日变化
气压日变化的特点是在一天中有一个最高值和一个次高值,一个最低值和一个次低值。最高值出现在9 ~10时,次高值出现在21~22时;最低值出现在15~16时,次低值出现在3~4时。
气压的日变化在低纬度地区比较明显。气压日振幅(一日中最高值与最低值之差,又称为日较差)随纬度的增高而减小。在低纬地区,平均日振幅可达3~4百帕,到纬度50度附近日振幅不足1 百帕了。不同纬度上气压日变化的情况,在我国中纬度地区气压日振幅为1~2.5百帕,在低纬地区为2.5~4百帕,而在西藏高原东部边缘的山谷中气压的日振幅有时可达6. 5百帕。
注:代码里配置寄存器时eeprom_byte_write(& reg_data, CTRL_REG1_ADDR);这里&和reg_data中间不应该有空格的,但是不加空格的话论坛会显示_data。这个只能在这里做一个说明。
附件如下
- 本文系21ic原创,未经许可禁止转载!
网友评论
- 联系人:巧克力娃娃
- 邮箱:board@21ic.com
- 我要投稿
-
欢迎入驻,开放投稿
-
人均百万?英伟达中国员工收入曝光! 2024-08-29
-
《黑神话:悟空》玩家硬盘升级攻略:提升游戏体验,畅享3A大作 2024-08-29
-
数睿数据参加《系统与软件工程 低代码开发平台通用技术要求》国家标准编制 2024-08-29
- NRF52810蓝牙数字耳机找人定制
预算:¥30005天前
- 125KW模块式PCS软硬件外包开发
预算:¥1100000015小时前
- 12V汽车启动电源项目BMS设计
预算:¥50000023小时前
- 数据可视化软件 开发
预算:¥5000023小时前
- PLC项目调试修改
预算:¥100001天前
- 起动电机控制器开发
预算:¥1100001天前