I2C

  • 同步串行总线
  • SCL(串行时钟线)、SDA(串行数据线)
  • 每个连到总线上的器件都可由软件以唯一的地址寻址,并建立简单的主从关系主器件(发送器、接收器)
  • 真正的多主总线,带有竞争检测、仲裁电路,可是多主机任意同时发送而不破坏总线上的数据
  • 同步时钟允许器件通过总线以不同的波特率进行通信
  • 同步时钟可以作为停止和重新启动串行口发送的握手方式

在这里插入图片描述

  • 启动I2C条件:SCL:1,SDA:出现一个下降沿

SDA=1
SCL=1
SDA=0
在这里插入图片描述

  • 停止使用I2C:SCL:1,SDA:出现一个上升沿

    SDA=0
    SCL=1
    SDA=1
    在这里插入图片描述

  • 在启动和终止条件之间可转送的数据不受限制(高低电平),每个字节8位,先传送高位,每个字节之后有一个响应位。

  • ACK(应答信号):主器件收发每个字节后产生一个时钟应答脉冲,在该脉冲期间,发送器必须保证SDA为高,由接收器将SDA拉低。

SCL=0
SDA=0//电平被拉低
SCL=1
SCL=0
SDA=1
在这里插入图片描述

  • NOT ACK(非应答信号):主器件为接收器时,在接收了最后一个字节后不发应答信号。即,SDA为1,不被拉低。
  • 读应答函数

SCL=0
SDA=1
SCL=1
SDA==0(跳出循环的条件)或者询问255次
SCL=0
返回SDA(1非应答,0应答)
在这里插入图片描述

在这里插入图片描述

  • 总线中每个器件都有自己唯一确定的地址
  • 启动条件后主机发送的第一个字节(被读写的从器件地址):该字节的第8位为方向位,0(W):主器件发送;1(R):主器件接收
  • 总线上每个器件在启动条件后都把自己的地址与前7位相比较,如果相同则被选中,产生应答,并根据读写位决定在数据传送中是接收还是发送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stttos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值