当前位置: 首页 > news >正文

RT-Thread+STM32L475VET6——icm20608传感器


文章目录

  • 前言
  • 一、板载资源
  • 二、具体步骤
    • 1.打开CubeMX进行配置
      • 1.1 使用外部高速时钟,并修改时钟树
      • 1.2 打开I2C3,参数默认即可(I2C根据自己需求调整)
      • 1.3 打开串口
      • 1.4 生成工程
    • 2. 添加icm20608软件包
    • 3. 使能传感器,打开动态链接库
    • 4. 配置I2C
      • 4.1 使能I2C
      • 4.2 声明I2C
      • 4.3 添加I2C对应引脚
    • 5. 烧录,下载


前言

本文采用开发板为STM32L475VET6(潘多拉开发板),使用RT_Thread Studio基于芯片开发模式,系统版本为4.0.3,完成icm20608传感器实验,实现加速度和陀螺仪数据的采集


一、板载资源

icm20608传感器采用I2C协议,本文采用软件模拟I2C
查阅数据手册:开发板使用的是 PC0 模拟时钟线SCL、PC1 模拟数据线 SDA,
在这里插入图片描述

二、具体步骤

1.打开CubeMX进行配置

1.1 使用外部高速时钟,并修改时钟树

在这里插入图片描述
在这里插入图片描述

1.2 打开I2C3,参数默认即可(I2C根据自己需求调整)

在这里插入图片描述

1.3 打开串口

在这里插入图片描述

1.4 生成工程

在这里插入图片描述

2. 添加icm20608软件包

在这里插入图片描述

3. 使能传感器,打开动态链接库

在这里插入图片描述

4. 配置I2C

打开borad.h,按照官方步骤配置
在这里插入图片描述

4.1 使能I2C

在这里插入图片描述

4.2 声明I2C

在这里插入图片描述

4.3 添加I2C对应引脚

在这里插入图片描述

5. 烧录,下载

测试代码

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <icm20608.h>int main(void)
{icm20608_device_t dev;rt_err_t result;dev=icm20608_init("i2c3");if(dev!=RT_NULL){rt_kprintf("icm20608 init success!");}else {rt_kprintf("icm20608 init fialure!");}// icm20608较准result=icm20608_calib_level(dev, 10);if(result==RT_EOK) //较准成功{rt_kprintf("calibation success!\r\n");rt_kprintf("accel_offset: X%6d  Y%6d  Z%6d\r\n", dev->accel_offset.x, dev->accel_offset.y, dev->accel_offset.z);rt_kprintf("gyro_offset : X%6d  Y%6d  Z%6d\r\n", dev->gyro_offset.x, dev->gyro_offset.y, dev->gyro_offset.z);}else{rt_kprintf("cablibation failure!\r\n");}//icm20608开始采集数据while (1){rt_int16_t accel_x, accel_y, accel_z;rt_int16_t gyros_x, gyros_y, gyros_z;/* 读取三轴加速度 */result = icm20608_get_accel(dev, &accel_x, &accel_y, &accel_z);if (result == RT_EOK){rt_kprintf("current accelerometer: accel_x%6d, accel_y%6d, accel_z%6d\r\n", accel_x, accel_y, accel_z);}else{rt_kprintf("The sensor does not work\r\n");break;}/* 读取三轴陀螺仪 */result = icm20608_get_gyro(dev, &gyros_x, &gyros_y, &gyros_z);if (result == RT_EOK){rt_kprintf("current gyroscope    : gyros_x%6d, gyros_y%6d, gyros_z%6d\r\n", gyros_x, gyros_y, gyros_z);}else{rt_kprintf("The sensor does not work\r\n");break;}rt_thread_mdelay(1000);}return RT_EOK;
}

在这里插入图片描述


相关文章:

RT-Thread+STM32L475VET6——icm20608传感器

文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行配置1.1 使用外部高速时钟&#xff0c;并修改时钟树1.2 打开I2C3&#xff0c;参数默认即可(I2C根据自己需求调整&#xff09;1.3 打开串口1.4 生成工程 2. 添加icm20608软件包3. 使能传感器&#xff0c;打开动态链接库4.…...

【信息系统项目管理师-案例真题】2022下半年案例分析答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一(24分)【问题1】(6分)【问题2】(10分)【问题3】(8分)试题二(26分)【问题1】(8分)【问题2】(8分)【问题3】(4分)【问题4】(6分)试题三(25分)【问题1】(12分)【问题2】(7分)【问题…...

3D机器视觉工业3D图像格式常见的格式

工业3D图像格式主要用于存储和交换三维模型数据,常见的格式包括: STL (Stereolithography) 用途: 3D打印和快速成型。 特点: 存储三角面片信息,文件较小,但不包含颜色和材质数据。STEP (Standard for the Exchange of Product Data) 用途: CAD数据交换。 特点: 支持几何、拓…...

SkyWalking集成Kafka实现日志异步采集经验总结

SkyWalking日志异步采集架构 【重点知识】 1、【Agent】kafka-reporter-plugin-x.x.x.jar包放plugins目录后必走kafka&#xff08;kafka没有正确配置就会报错&#xff09; 2、【Agent】异步如不开启数据压缩&#xff0c;日志数据较大&#xff0c;pod多、业务大时容易造成网络…...

Java知识点——IO流

目录 一、IO流基础概念 二、常见的IO流类 三、字符流 1.字符输入流&#xff08;Reader&#xff09;与字符输出流&#xff08;Writer&#xff09; 2.常用实现类 3.实例 四、字节流 1.字节输入流&#xff08;InputStream&#xff09;与字节输出流&#xff08;OutputStrea…...

uniapp h5端和app端 使用 turn.js

前提:添加页后,添加页与当前页会重叠在一起,不知道为什么,没有找到解决办法 1.h5端 <template><view class"container"><view id"flipbook"><view class"page page1">Page 1</view><view class"page pag…...

使用大语言模型(Deepseek)构建一个基于 SQL 数据的问答系统

GitHub代码仓库 架构 从高层次来看&#xff0c;这些系统的步骤如下&#xff1a; 将问题转换为SQL查询&#xff1a;模型将用户输入转换为SQL查询。 执行SQL查询&#xff1a;执行查询。 回答问题&#xff1a;模型根据查询结果响应用户输入。 样本数据 下载样本数据&#xf…...

时间转换(acwing)c/c++/java/python

读取一个整数值&#xff0c;它是工厂中某个事件的持续时间&#xff08;以秒为单位&#xff09;&#xff0c;请你将其转换为小时&#xff1a;分钟&#xff1a;秒来表示。 输入格式 输入一个整数 NN。 输出格式 输出转换后的时间表示&#xff0c;格式为 hours:minutes:second…...

连接Sql Server时报错无法通过使用安全套接字层加密与 SQL Server 建立安全连接

文章目录 一. 前言二. 解决方案 方案1方案2 三. 总结 一. 前言 在《数据库原理》这门课的实验上&#xff0c;需要使用SQL Server&#xff0c;然后使用jdbc连接sql server突然报错为&#xff1a;SQLServerException: “Encrypt”属性设置为“true”且 “trustServerCertific…...

基于CNN的FashionMNIST数据集识别3——模型验证

源码 import torch import torch.utils.data as Data from torchvision import transforms from torchvision.datasets import FashionMNIST from model import LeNetdef test_data_process():test_data FashionMNIST(root./data,trainFalse,transformtransforms.Compose([tr…...

go channel 的用法和核心原理、使用场景

一、Channel 的核心用法 1. 基本操作 // 创建无缓冲 Channel&#xff08;同步通信&#xff09; ch : make(chan int) // 创建有缓冲 Channel&#xff08;容量为5&#xff0c;异步通信&#xff09; bufferedCh : make(chan int, 5) // 发送数据到 Channel ch <- 42 // 从…...

pyside6学习专栏(七):自定义QTableWidget的扩展子类QTableWidgetEx

PySide6界面编程中较常用的控件还有QTableWidget表格控件&#xff0c;用来将加载的数据在表格中显示出来&#xff0c;下面继承QTableWidget编写其扩展子类QTableWidgetEx,来实现用单元格来显示除数据文字外&#xff0c;还可以对表格的单元格的文字颜色、背景底色进行设置&#…...

Mybatis常用动态 SQL 相关标签

1. <if> 用于条件判断&#xff0c;当满足条件时执行对应的 SQL 片段。 示例: <select id"findUser" resultType"User">SELECT * FROM usersWHERE 11<if test"name ! null and name ! ">AND name #{name}</if><if…...

AWQ和GPTQ量化的区别

一、前言 本地化部署deepseek时发现&#xff0c;如果是量化版的deepseek&#xff0c;会节约很多的内容&#xff0c;然后一般有两种量化技术&#xff0c;那么这两种量化技术有什么区别呢&#xff1f; 二、量化技术对比 在模型量化领域&#xff0c;AWQ 和 GPTQ 是两种不同的量…...

ESP32S3:解决RWDT无法触发中断问题,二次开发者怎么才能使用内部RTC看门狗中断RWDT呢?

目录 基于ESP32S3:解决RWDT无法触发中断问题引言解决方案1. 查看报错日志2. 分析报错及一步一步找到解决方法3.小结我的源码基于ESP32S3:解决RWDT无法触发中断问题 引言 在嵌入式系统中,RWDT(看门狗定时器)是确保系统稳定性的重要组件。然而,在某些情况下,RWDT可能无法…...

基于SpringBoot的民宿管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

go 日志框架

内置log import ("log""os" )func main() {// 设置loglog.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)// 自定义日志前缀log.SetPrefix("[pprof]")log.Println("main ..")// 如果用format就用PrintF&#xff0c;而不是…...

如何在 PDF 文件中嵌入自定义数据

由于 PDF 文件格式功能强大且灵活&#xff0c;它经常被用于内部工作流程。有时候&#xff0c;将自定义数据嵌入 PDF 文件本身会非常有用。通常&#xff0c;这些信息会被大多数工具忽略&#xff0c;因此 PDF 仍然可以作为普通 PDF 文件正常使用。 以下是一些实现方法&#xff1…...

计算机毕业设计SpringBoot+Vue.js服装商城 服装购物系统(源码+LW文档+PPT+讲解+开题报告)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

22.回溯算法4

递增子序列 这里不能排序&#xff0c;因为数组的顺序是对结果有影响的&#xff0c;所以只能通过used数组来去重 class Solution { public:vector<int> path;vector<vector<int>> res;void backtracking(vector<int>& nums,int start){if(path.si…...

光电对抗:电磁波—物质相互作用研究的重点难点和的前沿进展

一、理论盲点与认知局限电磁波与物质相互作用的一些深层机理&#xff0c;特别是微观尺度下的复杂过程&#xff0c;我们的认识还存在局限&#xff1a;1. 微观机理的精细描绘&#xff1a;虽然麦克斯韦方程组和量子理论提供了基础框架&#xff0c;但精确描述复杂材料体系中多种损耗…...

1998-2026年EarthScope波形数据集

摘要&#xff1a;本数据集为通过 EarthScope NSF SAGE Facility Web Services 获取的 IU.ANMO 台站连续地震波形数据。波形数据由 fdsnws-dataselect 服务返回并保存为 miniSEED 文件&#xff0c;台站与仪器响应元数据由 fdsnws-station 服务返回并保存为 StationXML 及文本清单…...

从浏览器到服务器:图解HttpServletResponse如何操控文件流(原理+实践)

HTTP文件流传输的底层机制与高效实践 当你在浏览器中点击一个下载链接时&#xff0c;看似简单的操作背后隐藏着一系列精妙的协议交互和数据流动过程。作为开发者&#xff0c;理解HttpServletResponse如何操控文件流不仅能够优化文件传输性能&#xff0c;还能解决实际开发中的各…...

GraalVM Native Image内存优化终极清单(含JFR+Native Memory Tracking双栈诊断流程):覆盖Spring Boot 3.x + Jakarta EE 9+全生态

第一章&#xff1a;GraalVM Native Image内存优化的企业级价值与挑战在云原生与微服务架构深度落地的今天&#xff0c;GraalVM Native Image 通过将 JVM 应用提前编译为平台原生可执行文件&#xff0c;显著降低了启动延迟与运行时内存开销。其内存优化效果并非仅体现于堆内存&a…...

R 4.5量化回测必须掌握的3个隐藏函数——.onLoad回测钩子、getStrategyEnv()与backtest::audit()审计接口

第一章&#xff1a;R 4.5量化回测生态演进与核心范式跃迁R 4.5版本标志着量化回测基础设施的一次结构性升级&#xff0c;其核心不再局限于传统时间序列建模能力的增强&#xff0c;而是通过统一的S3/S4对象协议重构了回测生命周期管理范式。底层C引擎&#xff08;RcppQuantuccia…...

前端三大核心技术语言

前端开发涉及的编程语言主要可分为核心标记/样式语言、核心脚本语言及其增强/替代方案&#xff0c;以及辅助/全栈语言。其核心生态、优势及典型应用场景对比如下&#xff1a; 语言类别具体语言核心定位与优势典型应用场景核心标记/样式语言HTML (HTML5)网页内容与结构的骨架&a…...

传感器非线性飘移解析

传感器非线性飘移是指传感器输出信号与输入物理量之间的映射关系随时间或环境条件发生非线性的、缓慢的、不可预测的变化。这种飘移会直接导致测量精度下降&#xff0c;是精密测量系统&#xff08;如无人机、机器人、高精度仪器&#xff09;中常见且棘手的问题。 传感器非线性…...

Claude Opus 4.7 API 接入指南:最强模型实测与中转配置教程(2026)

上周 Anthropic 放出了 Claude Opus 4.7 的 API 权限&#xff0c;我第一时间冲进去测了。复杂推理和长上下文代码生成这两块&#xff0c;确实把我之前用的 Claude 4.6 按在地上摩擦。Claude Opus 4.7 是 Anthropic 2026 年发布的旗舰推理模型&#xff0c;接入方式兼容 OpenAI S…...

为什么93%的开发者在C# 14 AOT中误配Dify HttpClient?揭秘.NET NativeAOT与OpenAPI SDK深度集成的4大隐性约束

第一章&#xff1a;C# 14 NativeAOT 与 Dify 客户端集成的全景认知NativeAOT&#xff08;Native Ahead-of-Time Compilation&#xff09;作为 .NET 8 引入、并在 .NET 9/C# 14 中全面增强的核心发布能力&#xff0c;使 C# 应用可编译为无运行时依赖的原生二进制文件。Dify 是一…...

Go语言的sync.Cond事件驱动

Go语言中的sync.Cond&#xff1a;事件驱动的高效同步机制 在并发编程中&#xff0c;协调多个goroutine的执行顺序是一项关键挑战。Go语言的sync.Cond&#xff08;条件变量&#xff09;为开发者提供了一种高效的事件驱动机制&#xff0c;能够基于特定条件实现goroutine的阻塞与…...