九轴传感器使用--->MPU9250

九轴传感器初探

九轴就是有 3 轴陀螺仪、3 轴加速度计和 3 轴磁力计,输出都是 16 位的数字量;随处可见的小飞机上面都装载了这样的传感器
以通过集成电路总线( IIC) 接口和单片机进行数据交互,自己检测出四元素,进过芯片上DMP(数字运动处理器)运算出欧拉角
看看其他大牛的文笔
九轴传感器使用--->MPU9250_第1张图片

硬件连接

九州传感器的IIC和PH4,5 进行连接
九轴传感器使用--->MPU9250_第2张图片
九轴传感器使用--->MPU9250_第3张图片
在这里插入图片描述

设置对MPU9250的读写操作

传感器的IIC要使用八位的数据,并且都要跟着一个应答信号,由主机产生时钟源
九轴传感器使用--->MPU9250_第4张图片

进行写操作

九轴传感器使用--->MPU9250_第5张图片
和IIC一样,蛮难读的,找点中文参考一下就会了

u8 MPU_Write_Byte(u8 addr,u8 reg,u8 data)
{
    IIC_Start();
    IIC_Send_Byte((addr<<1)|0); 
    if(IIC_Wait_Ack())         
    {
        IIC_Stop();
        return 1;
    }
    IIC_Send_Byte(reg);        
    IIC_Wait_Ack();             
    IIC_Send_Byte(data);      
    if(IIC_Wait_Ack())         
    {
        IIC_Stop();
        return 1;
    }
    IIC_Stop();
    return 0;
}

读操作也类似,用之前写好的IIC代码

调用MPU9250

初始化

对MPU9250进行复位和唤醒
 u8 res=0;
    IIC_Init();     
    MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X80);
    delay_ms(100);  
    MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X00);

九轴传感器使用--->MPU9250_第6张图片

初始化陀螺仪和加速器

我们设置这个寄存器为 0b0001 1011
大概意思是 陀螺仪根据 DLPF_CFG and FCHOICE_B 进行滤波,并且量程为 2000db

九轴传感器使用--->MPU9250_第7张图片

在这里插入图片描述
初始化加速器简单点 设置为量程为2g

九轴传感器使用--->MPU9250_第8张图片
根据上面的提示, 设置波特率
波特率在上面的提示下 =1000/1+这个寄存器

九轴传感器使用--->MPU9250_第9张图片
加速度/磁力计具有高频噪声(需要低通滤波)
接着设置,低通道滤波器
九轴传感器使用--->MPU9250_第10张图片
关闭所有中断,连续读取,IIC变为从机模式

读取数据

从6个寄存器里连续读取,就是现在的加速度和陀螺仪的值
九轴传感器使用--->MPU9250_第11张图片

你可能感兴趣的:(stm32,传感器,stm32,单片机)