I2C通信

1、I2C通信

  • I2C总线(Inter IC BUS)是由Philips公司开发的一种通用数据总线

  • 两根通信线:SCL(Serial Clock)、SDA(Serial Data)

  • 同步、双半工

  • 带数据应答

  • 支持总线挂载多设备(一主多从、多主多从)
    2ecb6dc6-2b9c-4b54-a687-38203a6ca77d

2、硬件电路

  • 所有I2C设备的SCL连在一起,SDA连在一起

  • 设备的SCL和SD均要配置成开漏输出模式

  • SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右
    33cc7733-3097-4efe-8bcc-cb00cf8fefac

3、I2C时序基本单元

  • 起始条件:SCL高电平期间,SDA从高电平切换到低电平

  • 终止条件:SCL高电平期间,SDA从低电平切换到高电平
    a1e893b4-04c7-4fe7-b7bf-16b6884107e0

  • 发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节
    ee28c3c0-3c4f-4f6f-8cc4-e3d3a4a37c44

  • 接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)
    9e85d385-b57d-4f13-9b21-62bf8c424e7a

  • 发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答

  • 接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)
    948f495a-d42e-479d-8519-fa57f81467a7

  • I2C时序

    • 指定地址写

    • 对于指定设备(Slave Address),在指定地址(Reg Address)下,写入指定数据(Data)
      58c9ba18-ec9a-48d1-832f-d83a7c185ac1

•当前地址读

•对于指定设备(Slave Address),在当前地址指针指示的地址下,读取从机数据(Data)
832c1702-5320-4c0f-ab6e-264f738dc4cc

•指定地址读

•对于指定设备(Slave Address),在指定地址(Reg Address)下,读取从机数据(Data)
18d69d86-a31a-4695-bf69-b57012db207b

4、MPU6050简介

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

  • 3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度

  • 3轴陀螺仪传感器(Gyroscope):测量X、Y、Z的角速度
    d46abb35-10e3-4bf2-9449-419332142143

  • MPU6050参数

    • •16位ADC采集传感器的模拟信号,量化范围:-32768~32767

      •加速度计满量程选择:±2、±4、±8、±16(g)

      •陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec)

      •可配置的数字低通滤波器

      •可配置的时钟源

      •可配置的采样分频

      •I2C从机地址:1101000(AD0=0)

      1101001(AD0=1)

  • 硬件电路456bb0a0-fe7a-417b-bf12-53de1b712493

  • MPU6050框图
    214a6d1e-2028-40b0-902e-50892826be2c

5、I2C外设简介

  • STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担

  • 支持多主机模型

  • 支持7位/10位地址模式

  • 支持不同的通讯速度,标准速度(高达100KHZ),快速(高达400KHZ)

  • 支持DMA

  • 兼容SMBus协议

  • STM32F103C8T6 硬件I2C资源:I2C1、I2C2

  • I2C框图
    be35b3a3-7016-4f3d-8291-9ea5736020dc

  • I2C基本结构0a5594d7-70d8-4772-b4f1-d57d227b5770

  • 主机发送
    ef45245e-c3ba-4710-8b34-1c26dd6e60a4

  • 主机接收
    4e606db6-a319-45a0-ae8b-da1f4b77b244

  • 软件/硬件波形对比b31eb6fc-b945-4f9b-9dad-657ee8ca90b7

posted @ 2025-12-18 19:40  people121  阅读(6)  评论(0)    收藏  举报