ICM-20948芯片详解(8)

news2025/1/11 6:05:06

接前一篇文章:ICM-20948芯片详解(7)

六、寄存器详解

1. 总述

ICM-20948共有user bank 0~3共4组寄存器。

  • USER BANK 0寄存器图

USER BANK 0所包含的寄存器如下图所示:

  • USER BANK 1寄存器图

USER BANK 1所包含的寄存器如下图所示:

  • USER BANK 2寄存器图

USER BANK 2所包含的寄存器如下图所示:

  • USER BANK 3寄存器图

 USER BANK 3所包含的寄存器如下图所示:

2. USER BANK 0寄存器详述

(1)WHO_AM_I

此寄存器向用户指示正在访问哪个设备。
ICM-20948的值为0xEA。

参考代码(节选自https://github.com/listout/icm20948_driver,下同):

#define ICM20948_WHO_AM_I      0x00

esp_err_t
icm20948_get_deviceid(icm20948_handle_t sensor, uint8_t *const deviceid)
{
	return icm20948_read(sensor, ICM20948_WHO_AM_I, deviceid, 1);
}
static esp_err_t
icm20948_configure(icm20948_acce_fs_t acce_fs, icm20948_gyro_fs_t gyro_fs)
{
    esp_err_t ret;

    ……
    uint8_t device_id;
	ret = icm20948_get_deviceid(icm20948, &device_id);
	if (ret != ESP_OK)
		return ret;
	ESP_LOGI(TAG, "0x%02X", device_id);
	if (device_id != ICM20948_WHO_AM_I_VAL)
		return ESP_FAIL;
    ……

    return ret;
}

(2)USER_CTRL

参考代码:

无。

(3)LP_CONFIG

参考代码:

无。

(4)PWR_MGMT_1

参考代码:

#define ICM20948_PWR_MGMT_1    0x06

esp_err_t
icm20948_wake_up(icm20948_handle_t sensor)
{
	esp_err_t ret;
	uint8_t tmp;
	ret = icm20948_read(sensor, ICM20948_PWR_MGMT_1, &tmp, 1);
	if (ESP_OK != ret) {
		return ret;
	}
	tmp &= (~BIT6);
	ret = icm20948_write(sensor, ICM20948_PWR_MGMT_1, &tmp, 1);
	return ret;
}

esp_err_t
icm20948_sleep(icm20948_handle_t sensor)
{
	esp_err_t ret;
	uint8_t tmp;
	ret = icm20948_read(sensor, ICM20948_PWR_MGMT_1, &tmp, 1);
	if (ESP_OK != ret) {
		return ret;
	}
	tmp |= BIT6;
	ret = icm20948_write(sensor, ICM20948_PWR_MGMT_1, &tmp, 1);
	return ret;
}

esp_err_t
icm20948_reset(icm20948_handle_t sensor)
{
	esp_err_t ret;
	uint8_t tmp;

	ret = icm20948_read(sensor, ICM20948_PWR_MGMT_1, &tmp, 1);
	if (ret != ESP_OK)
		return ret;
	tmp |= 0x80;
	ret = icm20948_write(sensor, ICM20948_PWR_MGMT_1, &tmp, 1);
	if (ret != ESP_OK)
		return ret;

	return ret;
}

(5)PWR_MGMT_2

参考代码:

无。

USER BANK 0更多寄存器内容请看下回。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

校园外卖微信小程序的设计与实现

校园外卖微信小程序的设计与实现 校园外卖微信小程序的设计与实现 [摘要] 随着社会的进步和生活质量的提高,人们对用餐体验有了更高的要求,导致电话和网上订餐服务日益发展。这一趋势也推动了以大学生为主要服务对象的校园外卖的发展。此次设计主要为大…

AI大模型巡游记第二回探索幻梦

unsetunset第二回:探索幻梦unsetunset **随着夕阳西下,李逸结束了今天的探险之旅…… 李逸回到了现实世界,心中满是对“幻境大模型”体验的好奇与惊叹。他迫不及待地想要了解更多关于这项技术背后的秘密。于是,他决定访问“幻梦”…

Python写UI自动化--playwright(元素焦点的控制)

在UI测试中会遇到一种情况,在输入框输入内容,鼠标焦点离开输入框后,前端会对输入框内容进行判断是否合法,比如输入不正确格式的账号,会有相应的提示。该篇文章就讲一讲playwright关于元素焦点的控制: Play…

Makefile基础语法 看这一篇就够了

Makefile 基础语法 Makefile 是一种用于自动化构建过程的脚本文件,它通过定义目标文件和依赖关系来告诉 make 工具如何构建项目。Makefile 的语法和结构可以非常灵活,适用于各种复杂的构建场景。本教程将详细介绍 Makefile 的基本概念、语法以及如何编写…

python3 pyside6图形库学习笔记及实践(五)

目录 前言选项卡(QTabWidget)创建选项卡常用属性和方法常用信号 堆叠页面(QStackedWidget)创建堆叠容器切换页面过渡动画 前言 本系列文章为b站PySide6教程以及官方文档的学习笔记 原视频传送门:【已完结】PySide6百炼成真,带你系统性入门Qt 官方文档…

Linux云计算 |【第二阶段】CLUSTER-DAY3

主要内容: Ceph概述、部署Ceph集群、Ceph块存储 一、分布式存储基础 分布式系统(Distributed File System)是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。文件系统管理的物理存储资源不一定直接连接在本…

ClickHouse:单机安装

目录 一、ClickHouse介绍 二、安装ClickHouse 2.1安装要求 2.2单机安装 2.3修改配置文件(可选) 2.4升级软件 三、使用ClickHouse 3.1连接ClickHouse 3.2 执行SQL 一、ClickHouse介绍 ClickHouse是由Yandex开源的一个高性能、面向列的SQL数据库管理系统(DBM…

【踩坑】pytorch中的索引与copy_结合不会复制数据及其解决方案

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 背景知识 实验验证 结论分析 错误案例 处理方法 注意事项 附加说明 基本索引返回视图 高级索引返回副本 赋值操作都是原地操作 以下内容…

SS9283403 sqlite3交叉编译并部署到SS928(六)

1.Sqlite3下载 连接:SQLite Download Page 2.解压 tar zxvf sqlite-autoconf-3460000.tar.gz 3.配置并编译 进入解压目录,打开命令行,输入如下命令 ./configure CCaarch64-mix210-linux-gcc --hostarm-linux --prefix/home/mc/work/sqlite…

002发那科ROBOGUIDE仿真导入模型

打开已经创建好的工程,找到“机器” 右键,添加机器->CAD文件(F) 找到本地的3D模型,然后点击,打开 设置模型位置[0,0,0,0,0,0] 然后就导入进来啦

对比速览 | Alluxio 企业版 v.s. 社区版

当前诸多企业面临着日益增长的数据量和复杂的数据管理挑战。特别是在模型训练的过程中,诸如GPU短缺、GPU利用率不高等问题已经成为许多企业在技术实施中面临的挑战。同时,大数据分析中跨云数据访问速度慢、成本高等问题也给企业带来了痛点。为了应对这些…

redolog和binlog的两阶段提交和区别

redolog和binlog区别 redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的…

Shell编程 --函数语法与重定向

文章目录 Shell编程shell函数语法函数参数 Shell 输入/输出重定向输出重定向输入重定向重定向深入讲解/dev/null 文件 总结 Shell编程 Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令&…

Postman入门:环境变量和全局变量

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、发送请求 二、设置并引用环境变量 比如:我建的这个生产环境 使用环境有两个方式,一个是点击每个环境后面的对勾;另一种方式…

【Linux操作系统】进程的基本概念(PCB对象)详解

目录 一、进程的基本概念二、进程的描述组织(PCB对象)1.PCB的基本概念2.为什么要有PCB对象(操作系统对进程的组织管理)3.PCB对象的内部属性(tast_struct结构体) 三、查看进程1.ps指令2.top指令3.通过 /proc…

【LeetCode 1991 找到数组的中间位置 / LeetCode 724 寻找数组的中心下标】中间索引问题

1991 题目描述 暴力解法1: 思路: 遍历下标,求出左边和和右边和比较两边是否相等相等直接返回值没有符合的返回 -1 class Solution {public int findMiddleIndex(int[] nums) {int lennums.length;//初始化一个变量 midIndex 为 -1&#xff…

前端性能优化-script标签中的async与defer

前言 当浏览器解析 DOM 时候&#xff0c;遇到 script 标签时&#xff0c;会暂停 DOM 的解析&#xff0c;先加载并执行 script 中的代码&#xff0c;然后再继续 DOM 的解析。 比如 <script>window.env {version: "production",}; </script>上面的代码…

KVM——虚拟机添加设备与挂载磁盘

目录 一. 图形化方式添加设备 1. 添加磁盘 2. 添加网卡 二. 命令行形式添加设备 方式一&#xff1a; 方式二&#xff1a; 磁盘格式raw和qcow2 raw格式 qcow2格式 如何选择 挂载磁盘 一. 图形化方式添加设备 1. 添加磁盘 2. 添加网卡 先关机 给宿主机添加一块网…

华南理工大学-大学物理实验 迈克尔逊干涉仪

迈克尔逊干涉仪的调整与使用 引言 迈克尔逊( Albert Abrham Michelson, 1852-1931) , 著名的实验物理学家,近现代干涉仪的开山鼻祖。他设计了至今仍在广泛应用的迈克尔逊干涉仪。该仪器设计非常巧妙,测量极其精密,是近代许多干涉仪的基础。迈克尔逊当时设计该仪器的目的之…

HCIA复习 | HCIP基础

目录 Days01&#xff08;24.8.1&#xff09; IPv4 Header OSI七层模型 TCP、UDP数据结构 TCP/IP模型 OSI模型与TCP/IP模型区别 ARP Days02&#xff08;24.8.2&#xff09; 交换机 封装和解封装 IPv6 Header 路由 RIP Days01&#xff08;24.8.1&#xff09; IPv4 …