# 硬件模块包管理器:uart006读取BMP390压强 **Repository Path**: zhiOS/uart006 ## Basic Information - **Project Name**: 硬件模块包管理器:uart006读取BMP390压强 - **Description**: 创建stm32f103工程,使用PB6-SCL,PB7-SDA读取BMP390芯片压强信息; - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-26 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 随着CTx测控系统功能越来复杂,硬件功能模块越来越多,对源代码的团队协作、可复用性、可维护性、可读性要求越来越高; 硬件模块化程序设计的基本思想是自顶向下、逐步分解、分而治之,即将一个较大的需求按照功能分割成小模块,各模块相对独立、功能单一、结构清晰、接口简单,具有可复用、可维护、可多人协作开发等优点; 读取BMP390芯片原始数据,计算压强P,温度T的三种方式如下: # 3-dbg上位机 板卡读取原始数据后通过ABQ_模式备注填-2F把原始数据上传给PC,上位机根据原始数据二次开发计算出结果,回传给板卡; # 2-app1185 直接在板卡二次开发固件1185基础上,编写计算函数计算结果; # 1-uart硬件二次开发接口 UART的英文全称是:Universal Asynchronous Receiver/Transmitter,意为通用异步收发传输器,简称:串口,是一种最常用的通信方式。 UART包含RS-232电平、TTL电平、RS485电平... 用F103等MCU硬件模块实现传感器数据计算结果,通过uart传给主板卡。 ## BMP3XX 气压传感器驱动 基于 STM32F103 的 BMP390 气压传感器驱动项目,支持 I2C 和 SPI 两种通信接口。 ### 项目简介 本项目实现了 Bosch BMP390 数字气压传感器的驱动程序,运行在 STM32F103 微控制器上。BMP390 是一款高精度、低功耗的数字气压传感器,广泛应用于无人机高度控制、气象站、室内导航等领域。 ### 硬件要求 - **MCU**: STM32F103XB (ARM Cortex-M3) - **传感器**: BMP390 - **通信接口**: I2C 或 SPI (可通过代码选择) ### 功能特性 - 支持 I2C 和 SPI 两种通信接口 - 读取气压和温度数据 - 支持 FIFO 数据缓冲区 - 可配置采样率 (ODR) 和滤波器设置 - 支持中断和功耗控制 ### 项目结构 ``` ├── Core/ │ ├── Inc/ # 头文件 │ │ ├── bmp3.h # BMP3 驱动头文件 │ │ ├── bmp3_defs.h # BMP3 定义 │ │ └── main.h # 主程序头文件 │ └── Src/ # 源代码 │ ├── bmp3.c # BMP3 驱动实现 │ ├── common.c # 通信接口 (I2C/SPI) │ └── main.c # 主程序 ├── Drivers/ # STM32 HAL 驱动库 └── MDK-ARM/ # Keil MDK 工程文件 ``` ### 快速开始 #### 1. 硬件连接 **I2C 接口:** - I2C1_SCL -> PB6 - I2C1_SDA -> PB7 ![输入图片说明](https://foruda.gitee.com/images/1723856164656695618/ea26311a_8718294.png "级联原理图.png") **SPI 接口:** - SPI1_SCK -> PA5 - SPI1_MISO -> PA6 - SPI1_MOSI -> PA7 #### 2. 编译与下载 使用 Keil MDK 打开 `MDK-ARM/BMP3XX.uvprojx` 工程文件,编译并下载到开发板。 #### 3. 使用示例 ```c // 初始化 BMP390 struct bmp3_dev bmp3; bmp3_interface_init(&bmp3, BMP3_I2C_INTF); // 或 BMP3_SPI_INTF bmp3_init(&bmp3); // 读取传感器数据 struct bmp3_data comp_data; bmp3_get_sensor_data(BMP3_PRESS | BMP3_TEMP, &comp_data, &bmp3); // 输出结果 printf("Pressure: %.2f Pa\r\n", comp_data.pressure); printf("Temperature: %.2f C\r\n", comp_data.temperature); ``` ### API 参考 #### 初始化 - `bmp3_init()` - 初始化 BMP390 传感器 - `bmp3_interface_init()` - 初始化通信接口 #### 数据读取 - `bmp3_get_sensor_data()` - 获取补偿后的气压和温度数据 - `bmp3_get_fifo_data()` - 从 FIFO 缓冲区读取数据 #### 配置 - `bmp3_set_sensor_settings()` - 配置传感器参数 - `bmp3_set_op_mode()` - 设置工作模式 (睡眠/强制/正常) ### 注意事项 1. 确保 BMP390 的电源电压为 1.65V~3.6V 2. I2C 地址默认为 0x76 或 0x77 (可通过 SDO 引脚选择) 3. 首次使用需进行校准数据读取 4. 建议根据应用场景合理配置 ODR 和过采样率以平衡功耗和精度 ### 许可证 本项目仅供学习和研究使用。