stm32-I2C通信协议和MPU6050

一、I2C通信

1.特点

I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线
两根通信线:SCL(Serial Clock)、SDA(Serial Data)
同步,半双工
带数据应答
支持总线挂载多设备(一主多从、多主多从)

2.时钟线和数据线

在这里插入图片描述

  • 主机在任何情况下,都完全掌握SCL线,在空闲状态下,主机可以主动发起SDA控制,只有在从机发送数据或者从机应答时,主机才会将SDA的控制权交给从机
  • 因此,主机的SCL可以配置为推挽输出模式,所有的从机的SCL都配置为浮空输入或着上拉输入(默认情况下为高电平,(SCL和SDA都接有上拉电阻))
  • 为实现输入输出半双工,避免总线没协调好导致电源短路,I2C规定禁止所有设备输出强上拉的高电平,采用外置弱上拉加上开漏输出的电路

3.基本时基单元

a.起始条件(由主机控制)

SCL和SDA都为高电平时,为空闲状态

SCL高电平期间,SDA产生下降沿
之后SCL也变为低电平,为后续操作做铺垫
在这里插入图片描述

b.终止条件

SCL高电平期间,SDA产生上升沿
在这里插入图片描述

c.发送一个字节

SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节
在这里插入图片描述

d.接收一个字节

SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)
在这里插入图片描述

e.发送应答(从机发送,主机应答)

主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答
在这里插入图片描述

f.接收应答(从机接收,从机应答)

主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)
在这里插入图片描述

4.I2C时序

a.指定地址写

在这里插入图片描述
从机设备地址+指定地址+写入数据
24C02的设备地址位1010 000,0(写)主机在24C02的 0001 1001的存储位置写入0101 1010的数据

b.当前地址读

在这里插入图片描述
从机设备地址+读取数据
设备地址位1101 000,1(读)主机在11010000(设备)的 当前指针(默认在起始位置)的存储位置读出0000 1111的数据,之后产生非应答停止

c.指定地址读

在这里插入图片描述
从机设备地址(写)+写入的地址+重新开始+从机设备(读)+读取数据
设备地址位1101 000,0(写) 主机在11010000(设备)的写入地址0001 1001,之后重新开始(这一步相当于改变指针的位置)
主机在11010000(设备)的 0001 1001的存储位置读出1010 1010的数据,之后产生非应答停止

5.同步时序与异步时序

a.异步时序

1、好处:省一根时钟线,节省资源
2、坏处:对时钟要求严格,发送方和接收方时钟不能由过大的偏差
传输过程中,单片机进中断,发送方时序暂停,接受方仍会按照约定的速率读取,传输出错
故异步时序的缺点:非常依赖硬件外设的支持,必须有USART电路才能方便的使用,否则很难用软件模拟。

b.同步时序

1、设计时钟线,则对传输的时间要求变低
2、在单方面暂停传输时,时钟线也暂停,传输双方都能定格在暂停的时刻,可过段时间再来继续,
3、极大的降低单片机对硬件电路的依赖,没有硬件电路的支持,也可以很方便的用软件手动翻转电平来实现通信

二、MPU6050

1.简介

  • MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景
  • 3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度
  • 3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度

2.参数

16位ADC采集传感器的模拟信号,量化范围:-32768~32767
加速度计满量程选择:±2、±4、±8、±16(g)
陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec)
可配置的数字低通滤波器
可配置的时钟源
可配置的采样分频

I2C从机地址:1101000(AD0=0)
1101001(AD0=1)
从机地址为0x68 (0x68<<1)|1///(0x68<<1)|0 前七位为地址,最后一位是数据读写位

  • 量程与分辨率成反比

3.原理图

在这里插入图片描述
在这里插入图片描述

  • 左上角LDO为稳压器模块,可输出3.3V电压
  • 左下角CON1模块(XCL、XDA)通常就是用于外接磁力计或者气压计,为MPU6050提供更多外设
  • AD0是从机地址的最低位,接低电平时候,7为从机地址为110 1000,接高电平时,7位从机地址是110 1001
  • NT:中断输出引脚,可以配置芯片内部的一些事件来触发中断引脚的输出
    比如数据准备好了、I2C主机错误等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值