stm32 IIC通信

文章目录

  • IIC 通信
    • 一、硬件电路
    • 二、IIC时序基本单元
    • 三、IIC时序
      • 1.指定地址写
      • 2.当前地址读
      • 3.指定地址读

IIC 通信

IIC总线是一种通用数据总线,有两根通信线(SCL(串行时钟总线),SDA(串行数据总线))。
特点:同步,半双工,带数据应答,支持总线挂载多设备

一、硬件电路

所有IIC设备的SCL连在一起,SDA连在一起。
SCL与SDA均配置成开漏输出模式
SCL与SDA各添加一个上拉电阻,阻值一般为4.7千欧左右。
stm32 IIC通信_第1张图片
stm32 IIC通信_第2张图片

二、IIC时序基本单元

起始时间:SCL高电平期间,SDA从高电平切换到低电平。
终止时间:SCL高电平期间,SDA从低电平切换到高电平。
stm32 IIC通信_第3张图片
stm32 IIC通信_第4张图片
发送一个字节:SCL低电平期间,主机将数据位依次放到SDA总线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变换,依次循环8次,即可发送一个字节。
stm32 IIC通信_第5张图片
接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL 主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环8次,即可接收一个字节。
stm32 IIC通信_第6张图片
发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答。
stm32 IIC通信_第7张图片
接收应答:主机在发送完一个字节后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)。
stm32 IIC通信_第8张图片

三、IIC时序

1.指定地址写

对于指定设备(Slave Adress),在指定地址(Reg Address)下,写入指定数据(Data)。
stm32 IIC通信_第9张图片

2.当前地址读

对于指定设备(Slave Adress),在当前地址指针指示的地址下,读取从机数据(Data)。
stm32 IIC通信_第10张图片

3.指定地址读

对于指定设备(Slave Adress),在指定地址(Reg Address)下,读取从机数据(Data)。
stm32 IIC通信_第11张图片

你可能感兴趣的:(#嵌入式,stm32,stm32,嵌入式硬件,单片机)