先楫半导体HPMicro
直播中

james

13年用户 89经验值
擅长:MEMS/传感技术 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注
[经验]

【先楫HPM5361EVK开发板试用体验】05 - SPI接口读取MPU9250数据

1、MPU9250简介

MPU9250 数字运动处理器是一款 9 轴运动跟踪设备,在小型紧凑型 IC 中集成了 3 轴加速度计、3 轴磁力计和 3 轴陀螺仪。DMP 具有三个 16 位分辨率模数转换器,用于加速度计、磁力计和陀螺仪输出的数字化。该器件还具有用于数字 I/O 的独立电源、集成温度传感器和可编程中断。

MPU9250 处理器有一个I2C接口,用于以 400 kHz 的速率进行串行数据通信。为了加快通信速度,它还支持速率高达 20MHz 的串行外设接口 ( SPI )。DMP 还提供了辅助 I2C 协议,用于与压力传感器等非惯性传感器进行通信。

MPU9250等MEMS IMU常用于姿态解算和航位推算等应用,其系统框图如下图所示。
MPU9250系统框图.jpg

2、MPU9250通信接口的选择

MPU9250支持I2C和SPI通信,二者选其一,两种通信接口通过其引脚pin 22是否拉低来识别的。

由于I2C和SPI在通信速率上有着天然的区别,所有这里选择了具有显著优势的SPI通信接口来读取MPU9250的数据,其SPI参考电路如下图所示。HPM5361开发板可以根据以下的参考电路来连接MPU9250。
MPU9250  SPI通信参考电路.jpg

3、HPM5361 SPI简介

HPM5361 SPI的框图如下图所示。
HPM5361 SPI框图.jpg

从以上框图可以看出HPM5361的SPI是支持硬件读写SPI FLASH的,同时也支持4线SPI,如下图功能介绍所示。
HPM5361 SPI引脚描述.jpg

HPM5361的SPI有几点区别于常见的MCU,第一点就是其数据传输格式可以支持为“cmd + addr + data”的格式,这种支持就在某些应用下就省去了自己重新写SPI通信接口,直接调用接口即可,如下图所示。
HPM5361 SPI数据格式.jpg

第二点就是其支持的传输模式覆盖了常用的SPI从机数据读取的模式,如下图所示,由于HPM5361手册没有对各个传输模式的详细说明,各个模式的用法还没有一一验证是什么效果,暂时还不清楚哪种传输模式更适合哪种场景。
HPM5361 SPI传输模式.jpg

HPM5361的SPI使用中有3个比较重要的结构体:spi_timing_config_t、spi_format_config_t、spi_control_config_t。其中spi_timing_config_t是SPI时钟配置,配置其总线SPI时钟频率的,调用spi_master_timing_init函数进行配置,spi_format_config_t是SPI数据格式配置,配置主从模式、CPOL/CPHA模式、传输数据位等,调用spi_format_init函数进行配置,spi_control_config_t是SPI传输行为控制配置,配置其传输模式等,在进行传输数据是传输相应的接口。

4、MPU9250数据读取

4.1、硬件连接

MPU9250模块和HPM5361的连接如下图所示,这里MPU9250使用的是现成的模块,其引脚定义在丝印上有,HPM5361开发板用的是开发板的SPI1,具体引脚为PA26、PA27、PA28、PA29。MPU9250和HPM5361连接图.jpg

4.2、SPI帧格式

通过MPU9250的手册可知其SPI通信的关键信息如下图所示,基本都是SPI通信的基本要素,除开基本要素外就是帧格式最关键,如读写命令怎么传输数据的,读一个数据和读多个数据有什么差别等。
MPU9250 SPI接口描述.jpg

4.3、MPU9250配置

类似MPU9250的IMU配置很多,基本上常用的就是ODR、量程、滤波器配置、是否使用FIFO等。

在进行配置前,往往通过读取IMU的固定值的寄存器用于验证通信,如chip id,MPU9250的chip id在寄存器117,默认值0x71,如下图所示。
MPU9250 CHIP ID.jpg

在通过读取MPU9250的chip id后,然后用默认配置来读数原始数据,默认为角速度为250dps,加速度为2g,如下图所示。
MPU9250转换后真实数据.jpg

然后进一步通过MPU9250手册,将原始数据转换为实际的数据,如下图所示。
MPU9250转换后真实数据.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分