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

2、硬件电路
-
所有I2C设备的SCL连在一起,SDA连在一起
-
设备的SCL和SD均要配置成开漏输出模式
-
SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右

3、I2C时序基本单元
-
起始条件:SCL高电平期间,SDA从高电平切换到低电平
-
终止条件:SCL高电平期间,SDA从低电平切换到高电平

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

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

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

-
I2C时序
-
指定地址写
-
对于指定设备(Slave Address),在指定地址(Reg Address)下,写入指定数据(Data)

-
•当前地址读
•对于指定设备(Slave Address),在当前地址指针指示的地址下,读取从机数据(Data)

•指定地址读
•对于指定设备(Slave Address),在指定地址(Reg Address)下,读取从机数据(Data)

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

-
MPU6050参数
-
•16位ADC采集传感器的模拟信号,量化范围:-32768~32767
•加速度计满量程选择:±2、±4、±8、±16(g)
•陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec)
•可配置的数字低通滤波器
•可配置的时钟源
•可配置的采样分频
•I2C从机地址:1101000(AD0=0)
1101001(AD0=1)
-
-
硬件电路

-
MPU6050框图

5、I2C外设简介
-
STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担
-
支持多主机模型
-
支持7位/10位地址模式
-
支持不同的通讯速度,标准速度(高达100KHZ),快速(高达400KHZ)
-
支持DMA
-
兼容SMBus协议
-
STM32F103C8T6 硬件I2C资源:I2C1、I2C2
-
I2C框图

-
I2C基本结构

-
主机发送

-
主机接收

-
软件/硬件波形对比


浙公网安备 33010602011771号