IIC(串行通信总线协议)

IIC介绍

IIC:(Inter-Integrated Circuit)是一种常用的串行通信总线协议,也被称为I2C(Inter-IC)总线。它由飞利浦(Philips)公司在20世纪80年代开发,并成为一种广泛应用于数字集成电路之间的通信标准。

IIC由两根信号线组成,分别为串行时钟线(SCL)和串行数据线(SDA)。通过这两根信号线,多个设备可以连接在同一条总线上,实现多主多从的通信方式。IIC总线采用了主从式架构,其中一个设备充当主设备,控制总线的访问权,其他设备则充当从设备,按照主设备的指示进行数据传输和控制。

IIC功能框图

IIC特点 

简单灵活IIC总线采用了两根信号线的设计,使得接线简单,并且可以连接多个设备。同时,IIC总线还支持多主多从的通信模式,可以灵活地适应各种设备之间的通信需求。
双向传输IIC总线的数据线(SDA)既可以用于传输主设备发送的数据,也可以用于从设备向主设备发送响应或其他数据。这种双向传输的特性使得IIC总线更加灵活和高效。
时钟同步IIC总线使用串行时钟线(SCL)来同步数据的传输。在数据传输过程中,时钟信号用于指示每个数据位何时被发送或接收。这种同步机制保证了数据的准确传输。
多种设备支持IIC总线可以连接多种不同类型的设备,如存储器传感器显示器等。通过在总线上设置不同的地址,主设备可以选择与所需的从设备进行通信。

IIC时序

第一次看确实让人懵

IIC起始结束信号

这个容易理解,描述IIC的起始和停止条件:

  • 起始:时钟线SCL为高时,数据线SDA由高到低
  • 停止:时钟线SCL为高时,数据线SDA由低到高

SCL和SDA同时为高,IIC总线为空闲状态

IIC应答

IIC的应答机制

  • 上波形:SDA,主机发送的8位数据
  • 中波形:SDA,从机在第9个时钟信号进行拉低回应,表示收到了主机发来的数据,拉高则表示不应答
  • 下波形:SCL,主机产生的时钟脉冲

注:上波形和中间波形都是SDA线,这里分开示意,IIC应答是一种相互关系,单片机发送数据给IIC器件,IIC器件要进行应答,表示收到了数据,同样,单片机接收IIC器件的数据后,也要给IIC器件一个应答。

发送完数据双方都需要回应,如果使用不应答,读取到数据后,如果不需要继续读取了,那么就发送非应答,就会停止发送。

IIC完整传输时序

  • 开始标志(S)发出后,主设备会传送一个7位的从机地址,且后面还跟一个第8位Read/Write位
  • R/W位表示主设备是在接收从设备的数据还是在向其写数据。
  • 主设备释放SDA线,等待从设备的应答信号(ACK)。每个字节的传输都要跟随有一个应答位。
  • 应答产生时,从设备将SDA线拉低并且在SCL位高电平时保持低。
  • 数据传输以停止标志(P)结束,然后释放总线。但主设备也可以产生重复的开始信号去操作另一台从设备,而不发出结束标志。
  • 所有的SDA信号变化都要在SCL时钟位低电平时进行,除了开始和结束标志。

IIC数据收发方式

1.写一个字节

用于对IIC某个寄存器的配置,如对AT24CXX的某些参数进行设置

  • 写寄存器时,主设备除了发出开始标志和地址位,还要加一个R/W位,0为写,1为读
  • 在第9个时钟周期(高电平时),AT24CXX产生应答信号
  • 主设备开始传送寄存器地址,并接到应答
  • 然后开始传送寄存器数据,必不可少要有应答信号
  • 最后主设备发送停止信号

2.连续写多个字节

对连续地址的写入

通信时序与上面写一个字节类似,连续写就是,收到了从机的应答信号(ACK),继续写。

3.读一个字节

读取IIC器件某个寄存器的数值

  • 由主设备产生开始信号,然后发送从设备地址位和一个写数据位,等待应答
  • 发送寄存器地址,开始读寄存器
  • 收到应答信号后,主设备再发一个开始信号,然后发送从设备地址位和一个读数据位
  • 然后从设备AT24CXX产生应答信号并开始发送寄存器中的数据
  • 通信以主设备产生的拒绝应答信号(nACK)和结束标志(Stop)结束
  • 拒绝应答信号(nACK)产生定义为SDA数据在第9个时钟周期一直为高

4.连续读多个字节

用于某些是一组连续的数据需要读,可用该模式

通信时序与上面读一个字节类似,上面是读一个字节后就nACK叫停,若连续读,则发送ACK,直到不需要继续读时在回复nACK。

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值