[Motion]MPU9250的详细功能

2022-07-23 15:02:24 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

简述

接下来的内容将对MPU9250的基本的功能进行详细的介绍,主要会分模块进行阐述。

时钟

MPU9250有两个内部时钟源,以及一个PLL。 内部时钟源:

时钟源

说明

内部振荡器

功耗低,但时钟精度略差

X,Y或Z方向的Gyro

MEMS时钟,功耗较高,但时钟精确(只要Gyro一经启用,就会使用该时钟源)

时钟的选择需要综合平衡 时钟精度功耗两个因素,所以从MPU9250的性能参数可以看到,一旦Gyro开启,功耗都是在mA级别,而加速度计和磁力计都是在uA级别的功耗。

I2C接口

MPU9250有两个可选I2C接口,一个用来连接外部的第三方传感器(I2C Master方式),另一个I2C接口可以用来发送Motion数据给外部的控制器(I2C Slave方式)。 当然这两个I2C接口都是可选的,连接外部的第三方传感器的I2C接口只有需要连接外部传感器时才用(而且性能有限)。而用来发送Motion数据的I2C接口也是可选的,因为和SPI接口是复用的,因此只能二选一。 MPU9250 I2C接口:

第三方传感器的I2C接口

该接口用于接外部的第三方传感器,就是如果觉得MPU9250的9轴传感器还不够用,还可以外接第三方的传感器,比如压力传感器。 这个附加I2C接口有两种模式,I2C Master Mode和Pass-Through Mode。 该I2C接口因为MPU9250的性能限制,其对于外部传感器的初始化管理必须要借助于外部控制器来完成才行。MPU9250中有一个bypass multiplexer的机制,可以将与外部控制器连接的I2C接口(SDA, SCL)直接bypass到外部传感器的I2C接口(AUX_DA, AUX_CL)。 即连接着的外部传感器初始化时,MPU9250会通过bypass multiplexer的机制将其转接到外部控制器的I2C接口进行初始化配置,在配置完成后,MPU9250会关闭bypass multiplexer,接过对外部传感器的控制权,并获取外部传感器的数据。

发送Motion数据的I2C Slave

引脚物理连接要求 SDA, SCL: 通常的I2C这两根引脚是开漏的,支持双向通信(即数据可以Master发往Slave,也可以从Slave发往Master),但是MPU9250的这两根引脚需要通过上拉电阻上拉到VDD,最高速率为400kHz。 I2C通信设备角色划分 I2C通信分为Master和Slave角色,Master角色可以在I2C线上置入Slave地址,对应的Slave就需要向Master做出ACK。 MPU9250的I2C地址 MPU9250的I2C Slave地址为b110100X,其中的X是由AD0引脚的电平来决定的,这样的地址设置,可以在同一I2C总线上连接两个MPU9250的设备。

I2C通信协议

Start与Stop条件

数据格式与ACK

通信

MPU9250 I2C Write

MPU9250 I2C Read

SPI接口

MPU9250只有一个SPI接口(SPI Slave),四线(CS, SDO, SCLK, SDI),两根作为控制线,两根作为数据线。MPU9250作为SPI Slave角色。 CS线为片选,为低时选中,为高时不选。

SPI功能特性 1. 数据传输为MSB first, LSB last 2. 数据在SCLK的上升沿被锁定(latched) 3. 数据在SCLK的下降沿发送 4. SCLK最大频率为1MHz 5. SPI读写操作需要在16个或更多个时钟周期(2个或2个Bytes以上)。第一个Byte包括了SPI地址,接下来的Bytes为SPI data。第一个Byte的第一个Bit为读写标志(Read-1, Write-0)

  1. 支持多个字节的读写。

SPI Master与Slave连接图示:

自检

自检用于对传感器的机械和电子部分进行测试,自检的触发是通过对应的self-test寄存器来激活的。 自检被激活时,传感器启动并产生输出信号,输出信号用于观察自检回复。

代码语言:javascript复制
自检回复 = 传感器带自检输出 - 传感器不带自检输出

当自检回复的值在合理范围内,该部分自检就会通过。当自检回复超出合理范围,就表明该部分自检失败。

传感器数据寄存器

数据类别

作用

特性

gyroscope/ accelerometer/ magnetometer/ auxiliary-sensor/ temperature

保存最新的传感器数据

只读,任何时候都可以通过串行口(SPI or I2C)读取

FIFO

大小

配置寄存器

Counter

读取

中断

512bytes

选定哪些数据可以暂存入FIFO,可选gyro-data, accelerometer-data, temperature, auxiliary-sensor-data, FSYNC-input

FIFO中的字节数

串行口访问(SPI or I2C) 支持burst read

可以触发中断

中断

中断功能

详细说明

中断状态

中断配置寄存器

Interrupt Status Register

INT引脚配置

配置引脚中断方式

中断latching

配置中断锁定方式

中断clearing

配置中断清除方式

中断triggers

(1)Clock generator locked to new reference oscillator (used when switching clock sources); (2) new data is available to be read (from the FIFO and Data registers); (3) accelerometer event interrupts; (4) the MPU-9250 did not receive an acknowledge from an auxiliary sensor on the secondary I2C bus

INT引脚中断配置

INT引脚上可以配置(enable/disable)如下的中断类型:

中断状态标志可以查看是哪一类中断发生。

Motion Detection(Wake-on-Motion)中断

通过编程可以预先设定一个threshold阈值,这样,在动作采样时其采样得到的绝对值超出该threshold,就会发生Wake-on-Motion中断。Wake-on-Motion的配置流程如下:

高级硬件特性

通过硬件寄存器配置和使能硬件特性。 初始上电时高级硬件特性均默认关闭,必须要单独打开和配置。

硬件特性

说明

Low Power Quaternion

3轴Gyro和6轴Gyro Accel

Android Orientation

Android屏幕旋转算法低功耗实现

Tap

敲击手势检测

Pedometer

计步

Significant Motion Detection

有效动作检测

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126614.html原文链接:https://javaforall.cn

0 人点赞