LV.12 D23 IIC控制器与MPU6050 学习笔记

news2025/1/20 1:43:51

一、Exynos_4412下的IIC控制器

4412有四个IIC,如果要使用需要配置四个寄存器

I2CCON:配置一些功能

I2CSTAT:控制一些功能、显示一些状态

I2CDS:发送和接收数据

I2CADD:当4412作为从机时需要一个地址,这个寄存器用于设置地址

 

支持7位的地址模式,极少数IIC的地址是10位的。标准模式下最快速度是100K,快速模式下可以达到400k。支持主机发送,主机接收,从机发送,从机接收的工作模式。支持中断和轮询。

​ 

​ 

上图是主机发送模式下4412的工作流程

上图是主机接收模式下4412的工作流程 

由于4412一般作为主控制器,很少作为从机,所以另外两个模式暂时不看了。

二、IIC寄存器详解

 

[7]  接收到一个字节数据后是否产生应答信号   1产生   0不产生

[6]  分频,影响IIC的通信速度。 0是16倍分频,1是512倍分频

[5]  中断的开关,IIC在接收和发送一个信号后都会产生一个中断信号通知你。 0关闭,1开启

[4]  中断挂起标志位,当[5]把中断功能打开时,[4]这一位才有效。当中断产生这位自动置1,在处理完中断信号后要写成0

[3:0]  影响IIC的通信速度,改变时钟频率。(不用设置)

 

[7:6]  模式选择

[5]  发送起始和停止信号,0是停止,1是起始

[4]  总线收发数据的开关

[3:0]  只读,表示IIC的状态

I2CADD:4412的地址。作为从机时,才需要设置。

 I2CDS:数据移位寄存器。

I2CLC:用于设置滤波器和延迟,暂时用不上就不设置了。 

三、MPU6050原理

3.1 MPU6050

    MPU6050是一个运动处理传感器,其内部集成了3轴加速度传感器和3轴陀螺仪(角速度传感器),以及一个可扩展数字运动处理器。

3.2 MPU6050主要参数

可测量X、Y、Z轴三个方向的角速度    

可编程设置角速度测量范围为±250、±500、±1000、±2000°/sec    

可测量X、Y、Z轴三个方向的加速度    

可编程设置加速度测量范围为±2g、±4g、±8g、±16g    

可编程设置低功耗模式    

可编程设置采样频率

........

3.3 MPU6050通信接口

        MPU6050可以使用IIC总线和其他器件进行数据交互,我们可以使用IIC总线向MPU6050中的控制寄存器写入数据来设置MPU6050的工作参数 也可以使用IIC总线从MPU6050中的数据寄存器读取数据来获取加速度、角速度等信息

 

3.4 MPU6050官方芯片手册 

MPU6050的引脚:

 引脚的分布说明:

 

典型电路:

 每个电容的作用:

3.5 MPU6050寄存器 

所有的寄存器:

 MPU6050常用寄存器:


/****************MPU6050内部常用寄存器地址****************/

#define	SMPLRT_DIV		0x19	//陀螺仪采样率,典型值:0x07(125Hz)
#define	CONFIG			0x1A	//低通滤波频率,典型值:0x06(5Hz)
#define	GYRO_CONFIG		0x1B	//陀螺仪自检及测量范围,典型值:0x18(不自检,2000°/s)
#define	ACCEL_CONFIG	0x1C	//加速计自检及测量范围及高通滤波频率,典型值:0x0(不自检,2G,5Hz)
#define	ACCEL_XOUT_H	0x3B
#define	ACCEL_XOUT_L	0x3C
#define	ACCEL_YOUT_H	0x3D
#define	ACCEL_YOUT_L	0x3E
#define	ACCEL_ZOUT_H	0x3F
#define	ACCEL_ZOUT_L	0x40
#define	TEMP_OUT_H		0x41
#define	TEMP_OUT_L		0x42
#define	GYRO_XOUT_H		0x43
#define	GYRO_XOUT_L		0x44
#define	GYRO_YOUT_H		0x45
#define	GYRO_YOUT_L		0x46
#define	GYRO_ZOUT_H		0x47
#define	GYRO_ZOUT_L		0x48
#define	PWR_MGMT_1		0x6B	//电源管理,典型值:0x00(正常启用)
#define	SlaveAddress	0x68	//MPU6050-I2C地址

例:GYRO_CONFIG寄存器

 

如果把[4:3]设置成0,就是±250。以此类推。

典型值为0x18,转换为二进制是00011000,[4:3]是11,转换十进制是3,即角速度传感器是2000

 上方选中的寄存器是用来存放加速度和角速度传感器的测量结果的。

3B和3C是存放X轴加速度的结果的,MPU6050测量的加速度的值是16位的,高位存放在ACCEL_XOUT_H,低位存放在ACCEL_XOUT_L。后面依次类推。

41和42是存放温度的结果的,MPU6050测量的加速度的值是16位的,高位存放在ACCEL_XOUT_H,低位存放在ACCEL_XOUT_L。

43和44是存放X轴角速度的结果的,MPU6050测量的加速度的值是16位的,高位存放在GYRO_XOUT_H,低位存放在GYRO_XOUT_L。后面以此类推。

MPU6050的IIC地址有两个,一个0x68一个0x69,他的地址由ADO决定,ADO的引脚接到低电平就是0,接到高电平就是1。(为了避免和其他芯片的地址冲突,所以设计成两个地址可选)

四、MPU6050寄存器读写时序 

4.1 向MPU6050的一个寄存器写一个字节的数据

MPU6050只能作为从机。

1.主机(Exynos4412)发送起始信号

2.主机发送从机地址(MPU6050的地址)及读写方向(写)

3.从机(MPU6050)发送应答信号

4.主机发送一个字节数据(要写的寄存器的地址)

5.从机发送应答信号

6.主机发送一个字节数据(要写到寄存器的数据)

7.从机发送应答信号

8.主机发送停止信号

4.2 从MPU6050的一个寄存器读一个字节的数据

1.主机(Exynos4412)发送起始信号

2.主机发送从机地址(MPU6050的地址)及读写方向(写)

3.从机(MPU6050)发送应答信号

4.主机发送一个字节数据(要写的寄存器的地址)

5.从机发送应答信号

6.主机(Exynos4412)发送起始信号

7.主机发送从机地址(MPU6050的地址)及读写方向(读)

8.从机(MPU6050)发送应答信号

9.从机发送一个字节数据(要读的寄存器中的数据)

10.主机发送非应答信号(不再接收更多的数据)

11.主机发送停止信号

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

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

相关文章

亚马逊云科技Serverless视频内容摘要提取方案

概述 随着GenAI的普及,视频内容摘要生成成为一个备受关注的领域。通过将视频内容转化为文本,可以探索到更广泛的应用场景,其中包括: 视频搜索与索引:将视频内容转化为文本形式,可以方便地进行搜索和索引操作…

利用阿里云 DDoS、WAF、CDN 和云防火墙为在线业务赋能

在这篇博客中,我们将详细讨论使用阿里云 CDN 和安全产品保护您的在线业务所需的步骤。 方案描述 创新技术的快速发展为世界各地的在线业务带来了新的机遇。今天的人们不仅习惯了,而且依靠互联网来开展他们的日常生活,包括购物、玩游戏、看电…

HarmonyOS4.0从零开始的开发教程04 初识ArkTS开发语言(下)

HarmonyOS(二) 初识ArkTS开发语言(下)之TypeScript入门 声明式UI基本概念 应用界面是由一个个页面组成,ArkTS是由ArkUI框架提供,用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程&#xff…

打包 抖音直播云游戏

抖音直播云游戏 oaid资源中的bcpkix-jdk15to18-1.68.jar与抖音云游戏的资源冲突。 其实资源名称是一样的,拷贝时资源名称有变化。 为解决此问题,需要规范化文件的资源名称,将.置为_ Error: Command failed: cmd /c echo off && Chc…

Kubernetes(K8s)DashBoard的使用-11

DashBoard 之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,还可以…

Redis key过期删除机制实现分析

文章目录 前言Redis key过期淘汰机制惰性删除机制定时扫描删除机制 前言 当我们创建Redis key时,可以通过expire命令指定key的过期时间(TTL),当超过指定的TTL时间后,key将会失效。 那么当key失效后,Redis会立刻将其删除么&#…

k8s 安装 Longhorn

Longhorn 的 helm 模板官网地址:Longhorn 加入仓库 helm repo add longhorn https://charts.longhorn.iohelm repo update开始部署 helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.5.3检查pod运行状态是…

STM32——电动车报警器

项目设计 // 如果检测到 PA4 被拉低(小偷偷车),并且警报模式打开 // 则将 PB7 拉低,继电器通电,喇叭一直响 // 如果检测到 PA5 被拉高(按键 A 按下),设定为开启警报模式 // 则将…

0X05

打开题目 点击完登录和注册都没有什么反应,所以先扫一下看看 在出现admin.php后就截止了,访问看看,进入后台。。 尝试一下弱口令 admin/12345 或者是demo/demo 设计中-自定义->右上角导出主题 找到一个导出的点,下载了一个1.zip压缩包…

多传感器融合SLAM在自动驾驶方向的初步探索的记录

1. VIO的不可观问题 现有的VIO都是解决的六自由度的问题, 但是对于行驶在路面上的车来说, 通常情况下不会有roll与z方向的自由度, 而且车体模型限制了不可能有纯yaw的变换. 同时由于IMU在Z轴上与roll, pitch上激励不足, 会导致IMU在初始化过程中尺度不准以及重力方向估计错误,…

配置CentOS服务器以支持PHP

CentOS是一款优秀的开源服务器操作系统,为各种网络服务提供了强大的支持。为了使CentOS服务器能够支持PHP,我们需要进行一些必要的配置。下面将介绍配置CentOS服务器以支持PHP的关键步骤。 安装PHP 首先,需要安装PHP解释器。在CentOS上&…

设置webstorm和idea符合Alibaba规范

只格式化自己更改的代码 ctrlShiftAltL 插件建议 Alibaba Java Coding Guidelines(新版本的idea不支持,有其他同名的非官方版可代替),使用方法在此不赘述 1、设置webstorm 包含 设置两个空格缩进,去掉行尾分号&#…

用Mnesia为cache增加分布式支持

一:分布式缓存 1.选取通信策略 在设计分布式程序时,可供选择的通信方式主要有两种:异步通信和同步通信。采用异步通信时,发送方无须等待任何确认或应答。而在采用同步通信时,发送方会处于挂起状态,直至收…

万宾科技智能水环境综合治理监测系统效果

水环境综合治理是一项旨在全面改善水环境质量的系统工程。它以水体为对象,综合考虑各种因素,通过科学规划和技术手段,解决水环境污染、生态退化等问题,核心理念是“统一规划、分步实施;标本兼治,重在治本&a…

用C语言实现链栈的基本操作

#include <stdio.h> #include <malloc.h> #define ElemType char//相当于ElemType等同于char类型 //链式结构 数据域指针域 typedef struct LinkStackNode//定义一个链栈的结构体类型 {ElemType data;//ElemType是链栈的元素类型&#xff0c;代表数据域struct Lin…

京东数据运营(京东API接口):10月投影仪店铺数据分析

鲸参谋监测的京东平台10月份投影仪市场销售数据已出炉&#xff01; 10月份&#xff0c;环同比来看&#xff0c;投影仪市场销售均上涨。鲸参谋数据显示&#xff0c;今年10月&#xff0c;京东平台投影仪的销量为16万&#xff0c;环比增长约22%&#xff0c;同比增长约8%&#xff1…

关于前端学习的思考-align-items的用法

垂直对齐只对&#xff0c;显示模式display&#xff1a;flex有效 所以只能是flex 盒子才能应用。 摆四张图片就能清晰认识&#xff0c;不再赘述。

2023 金砖国家职业技能大赛网络安全省赛二三阶段样题(金砖国家未来技能挑战赛)

2023 金砖国家职业技能大赛网络安全省赛二三阶段样题&#xff08;金砖国家未来技能挑战赛&#xff09; 第二阶段&#xff1a; 安全运营 **背景&#xff1a;**作为信息安全技术人员必须能够掌握操作系统加固与安全管控、防火 墙一般配置、常见服务配置等相关技能&#xff0c;利…

【Qt】在表格QTableWidget或者QTableView中,当主键Id存在时更新数据,不存在时添加数据解决方案

问题 有时在开发中&#xff0c;表格需要显示数据&#xff0c;每一行呢&#xff0c;需要记录对应的id。 当更新表格数据时&#xff0c;会根据id进行更新&#xff0c;id存在就更新行数据&#xff0c;不存在就添加一行新数据。 解决方案 如何知道id存在还是不存在呢&#xff1f…

芯片半导体科普

我们在日常工作和生活中&#xff0c;经常会使用到各种各样的电子或电器产品&#xff0c;例如电脑、手机、电视、冰箱、洗衣机等。 这些产品&#xff0c;如果我们把它拆开&#xff0c;都会看到类似下面这样的一块绿色板子。 有时候是蓝色或黑色的 大家都知道&#xff0c;这个绿…