有关USART串口知识理论:
【STM32】USART串口协议&串口外设-学习笔记-CSDN博客
代码部分:
【江协科技STM32】串口发送&串口发送+接收(学习笔记)-CSDN博客
【STM32】USART串口收发HEX数据包&收发文本数据包-CSDN博客
I2C通信协议
同步时序和异步时序的优缺点:
同步时序电路的优点在于工作状态受统一时钟信号控制,状态变化严格按照时钟节拍进行,工作节奏明确,便于设计和调试,其稳定性和可靠性较高,易于分析和预测电路行为。缺点是时钟信号的传播延迟会限制系统的工作频率,当电路规模较大时,时钟信号到达各触发器的时间差异(时钟偏移)可能导致时序错误。
异步时序电路的优点是不需要统一时钟信号,各部件可根据自身需求自由工作,在某些对速度要求不高但需要灵活响应外部事件的场景下,能有效降低功耗和硬件复杂度。缺点是由于没有统一时钟,状态变化不受统一节拍控制,电路分析和设计难度大,易出现竞争 - 冒险现象,导致电路工作不稳定。
I2C通信
- I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线
- 两根通信线:SCL(Serial Clock)、SDA(Serial Data)
- 同步,半双工
- 带数据应答
- 支持总线挂载多设备(一主多从、多主多从)
硬件电路
所有I2C设备的SCL连在一起,SDA连在一起
设备的SCL和SDA均要配置成开漏输出模式
SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右
硬件电路:
弱上拉:好处
I2C时序基本单元
- 起始条件:SCL高电平期间,SDA从高电平切换到低电平
- 终止条件:SCL高电平期间,SDA从低电平切换到高电平
发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节
接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA,交给从机控制)
当主机发送的时候,可以主动拉低SDA,而主机在被动接收的时候,就必须释放(拉高)SDA.
不释放SDA,SDA始终是低电平 ,从机就发送不了数据。
I2C时序
相同芯片挂在同一总线上,就需要用到地址的可变部分了:解释
一般器件地址的最后几位,是可以在电路中改变的。
指定地址写
对于指定设备(Slave Address),在指定地址(Reg Address)下,写入指定数据(Data)
数据帧目的:
当前地址读
对于指定设备(Slave Address),在当前地址指针指示的地址下,读取从机数据(Data)(由于当前地址读并没有指定读的地址,所以这个时序用的不是很多)
当前地址指针指示的地址的意思:当前地址指针
指定地址读
对于指定设备(Slave Address),在指定地址(Reg Address)下,读取从机数据(Data)
是指定地址写和当前地址读的结合,简称复合格式
MPU6050芯片简介
- MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景
- 3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度
- 3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度
加速度计具有静态稳定性,不具有动态稳定性。 陀螺仪具有动态稳定性,不具有静态稳定性。两种传感器特性刚好互补,取长补短,进行互补滤波,就能融合得到静态和动态都稳定的姿态角了
加速度计模型图:辅助理解
陀螺仪模型图:辅助理解
欧拉角:
欧拉角是用来确定定点转动刚体位置的一组参数。它通过三个彼此独立的角参量,按照一定顺序旋转来描述刚体在三维空间中的方位。常见的欧拉角有“偏航角 - 俯仰角 - 滚转角”组合,偏航角是刚体绕铅垂轴(通常为z轴)旋转的角度;俯仰角是刚体绕垂直于偏航轴的水平轴(通常为y轴)旋转的角度;滚转角是刚体绕垂直于前两个轴的轴(通常为x轴)旋转的角度。欧拉角在航空航天、机器人运动控制、计算机图形学等领域有广泛应用,方便描述物体的姿态变化。
MPU6050参数
- 16位ADC采集传感器的模拟信号,量化范围:-32768~32767
- 加速度计满量程选择:±2、±4、±8、±16(g),满量程选的越小,测量就会越细腻。
- 陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec),满量程选的越大,测量范围就越广,满量程选的越小,测量分辨率就越高。
- 可配置的数字低通滤波器,数据抖动严重可以加低通滤波
- 可配置的时钟源
- 可配置的采样分频,控制分频系数就可以控制AD转换的快慢
- I2C从机地址:1101000(AD0=0)十六进制就是0x68 1101001(AD0=1)十六进制就是0xD0, AD0就是板子引出来的一个引脚,可以调节I2C从机地址的最低位
I2C从机地址的两种表示方式:两种表示方式
硬件电路
MPU6050框图
MPU6050芯片数据手册知识点:
寄存器影像数据手册:
最后注意: