STM32通过IIC协议控制MPU6050

简介: 根据B站UP主“江科大自动化协”的教程总结

IIC通信协议**(注意时序问题和数据发送顺序;翻车过)
1.软件模拟协议
2.硬件实现协议
I2C通信:两根同通信线SCL(时钟线),SDA(数据线) 同步,半双工,带数据应答,支持挂载多设备。
I2C通信的硬件电路:
主机控制SCL线
从机在主机的允许下可以对SDA控制
SCL和SDA均要配置成开漏输出模式,各添加一个上拉电阻一般为4.7k欧姆
这是个弱上拉加开漏输出的模式(杜绝短路现象,保护电路;避免引脚模式频繁切换;具有线与特性(多机通信))
image.png
时序单元:
(除了起始和终止,每个时序单元都是以低电平开始,低电平结束)
起始:SCL高电平,SDA下降沿
终止:SCL高电平,SDA上升沿
image.png
发送一个字节:SCL低电平,主机将数据位依次放到SDA上(高位先行),释放SCL;从机将在SCL高电平期间读取数据位,SCL高电平期间SDA不允许有数据变化;循环8次,即发送一个字节。
image.png
接收一个字节:SCL低电平,从机将数据放到SDA线上(高位先行),然后释放SCL,主机在SCL高电平期间读取数据位,期间SDA不允许变化;如此循环8次,即接收一个字节(主机在接收之前,释放SDA,相当于切换到输入模式)
image.png
发送应答:主机接受完一个字节后,下一个时钟发送一位数据:0表示应答,1表示非应答
接收应答:主机发送完一个字节后,下一个时钟接受一位数据,判断从机是否应答:0表示应答,1表示非应答(主机接收之前需要释放SDA)
image.png
MPU6050
AD0引脚可以更改模块的7位地址的最后一位
指定地址写:
对于指定设备(Slave Address)例如从机地址,在指定地址下(Reg Address),例如寄存器地址,写入指定数据Data;从机地址+读写位刚好是八位 0表示写,1表示读
从机地址
image.png
从机的寄存器地址
image.png
写入寄存器的数据
image.png
当前地址读:
对于指定从机设备,在当前地址指针指示的地址下,读取从机数据
从机地址+读(命令中没有需要读取的从机寄存器的地址,通过当前地址指针读取数据)
当前地址指针:该指针上电默认指向寄存器内的0地址,每写入/读出字节,都会使其自增,指向下一个位置
image.png
指定地址读:
对于指定从机,在指定寄存器地址内读取数据 (连续读取多个字节,只需在最后一个字节给从机发送非应答,其余字节都发送应答)
实现原理是前两个方式的相加,通过指定地址写的前两个命令,将当前地址指针指向需要读的寄存器地址,再执行当前地址读,读出指定地址的数据
image.png
Sr:start repeat重复起始条件
image.png

MPU6050
image.png
image.png
从机地址是七位,在用iic发送从机地址还需要加上一位读写位,所以发送字节时需要把七位从机地址左移一位,加上读写位
image.png
内部结构框图
image.png
寄存器映像:
0x19采样频率分频器:分频越小,内部AD转换越快,数据刷新越快
0x1A配置寄存器:可配置DLPF低通滤波器,参数越大数据抖动越小,不使用时,陀螺仪时钟为8KHz,使用时为1KHz
0x1B陀螺仪配置寄存器
0x1C加速度计配置寄存器
0x3B~0x40 xyz轴加速度数据寄存器
0x41~0x42温度DR
0x43~0x48陀螺仪xyz轴DR0x
0x6B~0x6C电源管理寄存器1、2 (寄存器1的值上电默认0x40,就是睡眠模式)
0x75元件ID(寄存器值上电默认0x68,其他默认0x00)
image.png
image.png

目录
相关文章
|
6月前
|
传感器 算法
【STM32】I2C练习,HAL库读取MPU6050角度陀螺仪
【STM32】I2C练习,HAL库读取MPU6050角度陀螺仪
286 0
|
传感器
STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)(下)
STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)(下)
532 0
|
4月前
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
72 10
|
6月前
|
传感器 存储 缓存
STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)(上)
STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)
220 0
|
传感器 存储 芯片
STM32F407硬件I2C实现MPU6050通讯(CUBEIDE)
STM32F407硬件I2C实现MPU6050通讯(CUBEIDE)
325 0
|
Linux API 芯片
POWERLINK协议在stm32单片机+w5500移植成功经验分享
POWERLINK协议在stm32单片机+w5500移植成功经验分享
|
监控 网络协议 Linux
POWERLINK协议源码(最新)在stm32单片机上的移植指南
POWERLINK协议源码(最新)在stm32单片机上的移植指南