MPU6500 - 驱动

MPU6500 - 驱动

MPU-6500 | TDK InvenSense

规格书和寄存器手册需要互相参照

SPI相位和边沿

【 CPOL极性】

SPI的CPOL,表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1

CPOL=0,时钟空闲idle时候的电平是低电平,所以当SCLK有效的时候,就是高电平,就是所谓的active-high;

CPOL=1,时钟空闲idle时候的电平是高电平,所以当SCLK有效的时候,就是低电平,就是所谓的active-low;

【 CPHA相位】 capture strobe = latch = read = sample,都是表示数据采样,数据有效的时刻

相位,对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,0对应着第一个边沿,1对应着第二个边沿。

对于:

CPHA=0,表示第一个边沿:

对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;

对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;

CPHA=1,表示第二个边沿:

对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;

对于CPOL=1,idle时候的是高电平,第一个边沿就是从低变到高,所以是上升沿;

下面是时序图:

img

SPI 的传输二进制序列

LSB:least significant bit 表示二进制数据的最低位
MSB : most significant bit 表示二进制数据的最高位

spi传输数据时有两种方式:MSB first 和LSB first

例如:
ad9528 datasheet:
SPI MSB-/LSB-First Transfers
The AD9528 instruction word and payload can be MSB first or
LSB first. The default for the AD9528 is MSB first. The LSB first
mode can be set by writing a 1 to Register 0x0000, Bit 1 and Bit 6.
Immediately after the LSB first bit is set, subsequent serial control
port operations are LSB first.

总览

方框图

image-20231108162257063

特性

从方框图和特性得知,其陀螺仪和加速度计的测量本质上都是16bit的ADC

带有DMP

支持I2C和SPI

image-20231108162338180

信息 - 参数

陀螺仪

image-20231115094405734

image-20231115094347905

通信部分 - SPI

可供参考

六轴传感器模块ATK-MPU6050 — 正点原子资料下载中心 1.0.0 文档

规格书:

  • 3.5 SPI 时钟

SPI时钟特性

image-20231108163956946

image-20231108164044037

关键信息 - STM32 硬件 SPI

  • SPI CLK FREQ MAX = 1Mhz

  • SPI CS SETUP TIME MIN = 8ns(CS信号拉低之后到开始发送数据的时间 - 响应CS需要时间)

  • SPI CS HOLD TIME MIN = 500ns

  • 时钟极性和时钟相位

    • 	/*
      		SCLK	‾‾‾‾|____|‾‾‾‾|____
      
      		SDI		=====<‾‾‾‾‾‾‾‾>‾‾‾‾
      					  ‾‾‾‾‾‾‾‾ ‾‾‾‾
      						 ^| Data Collection
      	*/
      	SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;						   // 时钟空闲时高电平
      	SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;					   // 数据捕获于第2个时钟沿
      
      
    • CPOL = 1 CPHA = 1

  • MSB在前,LSB在后

SPI接口信息

image-20231108164359904

关键信息

MPU6500 的 SPI 操作特性如下:

  1. 数据以最高有效位(MSB)先传输,最低有效位(LSB)最后传输。
  2. 数据在 SCLK 上升沿时锁存。
  3. 数据在 SCLK 下降沿时进行转换。
  4. SCLK 的最大频率为 1MHz。
  5. SPI 的读写操作需要完成 16 个或更多个时钟周期(两个或更多字节)。第一个字节包含 SPI 地址,后续的字节包含 SPI 数据。第一个字节的第一个位是读/写位,表示读(1)或写(0)操作。接下来的 7 位包含寄存器地址。在多字节读/写的情况下,数据由两个或更多个字节组成。

温度传感器

关于温度传感器的特性:

image-20231108171441612

寄存器访问和公式换算

image-20231108171515977

注意事项:

SPI通讯相关问题

MPU6500驱动调试笔记(STM32F407+SPI)_mp6500单片机驱动-CSDN博客

指明SPI通讯数据流的问题

STM32 HAL SPI读取MPU6500的设备ID异常 - 啊哈彭 - 博客园 (cnblogs.com)

指明SPI通讯的时序问题

如果IMU可以正确返回WHO AM I请求,则说明SPI的时序/通信链路是可以使用的(但有可能是数据问题)

关于IMU的初始化,需要注意当进行设置时,也就是对寄存器进行赋值操作后,需要延时一段时间再进行其他操作,否则会出现修改失败,或者其他匪夷所思的问题

posted @ 2025-05-07 14:30  c17VV  阅读(499)  评论(0)    收藏  举报