基于RT-Thread(RTT)的BMP280气压计驱动(I2C通信)

前言

本文基于RTT操作系统使用STM32F401RET6驱动BMP280气压计模块,使用I2C协议通信
在这里插入图片描述

一、新建工程

在这里插入图片描述

二、添加软件包

在这里插入图片描述

三、添加这个包

在这里插入图片描述

四、打开CubeMX

在这里插入图片描述

五、配置时钟源,使用外部晶振

在这里插入图片描述

六、配置串行下载口

在这里插入图片描述

七、打开I2C,我这里使用的是I2C2,因为我原理图上连接的是I2C2

在这里插入图片描述

八、打开串口一,因为创建工程的时候默认使用串口一,这里顺便也配置一下

在这里插入图片描述

九、配置时钟线,直接拉满

在这里插入图片描述

十、生成代码

在这里插入图片描述

十一、在board.h中配置一下时钟(其实这里改不改关系不大,因为已经在CubeMX中配置了使用外部时钟,感兴趣可以自行查看其调用关系,这里改是为了看得爽些)

在这里插入图片描述

十二、打开I2C2的宏(具体用I2C几看自己的原理图),并绑定通讯口

在这里插入图片描述

十三、使能I2C模块

在这里插入图片描述

十四、打开I2C设备驱动程序

在这里插入图片描述

十五、打开传感器设备驱动

在这里插入图片描述

十六、编译一下,报如下错误

在这里插入图片描述

十七、点击错误进行跳转,将这段代码进行注释

在这里插入图片描述

十八、再次编译,报错解决

在这里插入图片描述

十九、在main.c文件中写入如下代码

/** Copyright (c) 2006-2024, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date           Author       Notes* 2024-04-13     睡个好觉    first version*/#include <rtthread.h>
#include "sensor_bs_bmp280.h"int bmp280_port(void);//bmp280初始化
rt_size_t Get_Data_Bmp280(void);//获取压力值struct bmp280_dev bmp;rt_uint32_t atmos = 0;  //大气压值//初始化空闲时间
#define SYSTEM_INIT_TIME 300int main(void)
{rt_thread_mdelay(SYSTEM_INIT_TIME);bmp280_port(); //bmp280初始化while(1){Get_Data_Bmp280(); //读取BMP280数据rt_kprintf("%d \r\n",atmos);rt_thread_mdelay(20);}
}int bmp280_port(void)
{struct rt_sensor_config cfg;cfg.intf.dev_name = BMP280_I2CBUS_NAME;cfg.intf.user_data = (void *)BMP280_ADDR_DEFAULT; //I2C从机地址rt_hw_bmp280_init("bmp280", &cfg);return 0;
}rt_size_t Get_Data_Bmp280(void)
{struct bmp280_uncomp_data ucomp_data;uint32_t pres32;/* Reading the raw data from sensor */if(bmp280_get_uncomp_data(&ucomp_data, &bmp)!=BMP280_OK){LOG_E("Reading the raw data from sensor error");return 0;}/* Getting the compensated pressure using 32 bit precision */bmp280_get_comp_pres_32bit(&pres32, ucomp_data.uncomp_press, &bmp);atmos = pres32;return 1;
}

二十、编译,有如下报错

在这里插入图片描述

二十一、打开ulog日志

在这里插入图片描述

二十二、然后在sensor_bs_bmp280.h头文件里面新增下图的两个文件包含

在这里插入图片描述

二十三、再次编译,报错解决

在这里插入图片描述

二十四、下载程序,打开串口查看,成功输出数据

在这里插入图片描述

番外:

如果你打印出这样的,读取数据错误,可以尝试检查两个地方

在这里插入图片描述

1、

找到这个从机地址,跳转进去

在这里插入图片描述

地址定义为这个,继续跳转进去

在这里插入图片描述

BMP280的从机地址有两个选择,0x76和0x77,模块出厂默认是0x76,确保你的地址选择正确

在这里插入图片描述

2、

第二个检查点就是这个I2C设备名,确保和你使用的是一致的

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/619103.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Abstract Factory抽象工厂模式详解

模式定义 提供一个创建一系列相关或互相依赖对象的接口&#xff0c;而无需指定它们具体的类。 代码示例 public class AbstractFactoryTest {public static void main(String[] args) {IDatabaseUtils iDatabaseUtils new OracleDataBaseUtils();IConnection connection …

【OpenGL开发】PyQt在关闭应用程序时没有运行析构函数的问题

PyQt在关闭应用程序时没有运行析构函数的问题 目录 一、说明二、python的析构函数三、QT5 存在一些问题四、PyQt5 存在一些问题五、OpenGL的析构问题 一、说明 应用QT做程序界面&#xff0c;在程序退出的时候&#xff0c;需要调用析构函数释放资源&#xff0c;这个操作在Pytho…

汇编语言知识点整理(应付考试专用,想学习找其他的)

1 基础知识 1.1 信息在计算机内部的表示和存储 1.1.1 信息存储的基本概念 信息在计算机内部是以二进制数据的形式在存储器中存取的。介绍两个基本概念&#xff1a; 位&#xff08;Bit&#xff09; 计算机中最小的数据单位&#xff0c;一位有0、1两状态。Bit是计算机中最小…

论文笔记:SmartPlay : A Benchmark for LLMs as Intelligent Agents

iclr 2024 reviewer评分 5688 引入了 SmartPlay&#xff0c;一种从 6 种不同游戏中提取的基准 衡量LLM作为智能体的能力 1 智能代理所需的能力 论文借鉴游戏设计的概念&#xff0c;确定了智能LLM代理的九项关键能力&#xff0c;并为每项能力确定了多个等级&#xff1a; 长文…

LLM-大模型演化分支树、GPT派发展阶段及训练流程图、Infini-Transformer说明

大模型是怎么演进的&#xff1f; Encoder Only: 对应粉色分支&#xff0c;即BERT派&#xff0c;典型模型&#xff1a; BERT 自编码模型&#xff08;Autoencoder Model&#xff09;&#xff1a;通过重建句子来进行预训练&#xff0c;通常用于理解任务&#xff0c;如文本分类和阅…

<计算机网络自顶向下> TCPUDP套接字编程

应用实现&#xff1a;源端的应用进程交换报文实现应用协议&#xff0c;来实现各种各样的网络应用&#xff08;dash&#xff0c;email, etc&#xff09; 而应用层通信不可以直接通信&#xff0c;需要借助下层的服务才可以进行&#xff0c;通过层间接口交给下层&#xff0c;通过…

面试八股——Spring——AOP与事务

AOP的定义 事务的实现 事务的失效场景 异常捕获处理 下图中由于②导致异常&#xff1a; 原因&#xff1a; 解决办法&#xff1a;自己抛出一个非检查异常&#xff08;具体原因看“抛出检查异常”&#xff09;。 抛出检查异常 由于①出错&#xff0c;导致抛出了检查异常 原因&…

【Linux】CentOS 7安装后没有图形界面

专栏文章索引&#xff1a;Linux 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、项目场景 二、问题描述 三、原因分析 四、解决方案 1.当前处于命令行界面&#xff0c;可以切换为图形界面 2.安装时没有安装图形界面&#xff0c;选择了Minimal Install 3.下…

专业照片编辑软件ON1 Photo RAW 2024 mac/win

ON1 Photo RAW 2024 for Mac是一款集专业性与易用性于一体的照片编辑软件。它拥有简洁直观的用户界面&#xff0c;即便对于摄影新手&#xff0c;也能快速上手。软件支持RAW格式照片处理&#xff0c;能够完整保留照片原始信息&#xff0c;让后期调整更加灵活。 在功能方面&#…

数据链路层(上):以太网、二层交换机和网络风暴

目录 数据链路层知识概览 数据链路层设备 1、二层交换机 2、拓展&#xff1a;二层交换机与三层交换机有啥区别&#xff1f; 3、广播风暴 4、交换机以太网接口的工作模式 数据链路层的功能 数据链路层--以太网 1、以太网是什么&#xff1f; 2、以太网地址 数据链路层知…