速通IIC通信协议,核心知识点一览

    半双工同步、一根时钟线、一根数据线,表现为一主多从或者多主多从模式,哪个设备决定时钟信号哪个为主设备,从设备都有自己专一的固定地址。

主设备

        控制总线,生成时钟信号,发起通信、结束通信,决定向从设备读取数据还是发送

从设备

        响应主设备的通信,根据主设备的时钟信号进行相应的操作

IIC框架图

    在I²C总线(SDA、SCL)系统中,所有设备接口必须配置为开漏(或集电极开路)输出模式。这使得设备只能主动将总线拉至低电平,而高电平状态需通过外接上拉电阻被动建立。当总线处于空闲状态时,SDA和SCL在高阻态的情况下均通过上拉电阻维持高电平。

时序

 

        SCL的信号在高电平的情况下,SDA必须要保持稳定,否则就为开始、停止条件。数据位的情况下需要在SCL低电平的时候变化。

相关概念

        起始信号:SCL高电平的情况下,SDA由高电平变为低电平

      重复起始信号:重置总线为空闲状态,重新制造起始条件
        终止信号:SCL高电平的情况下,SDA由低电平变为高电平
        应答信号:ACK,表示接收方已经成功接收到数据(低电平),NACK,表示接收方没有成功 接收数据,或有错误,导致不接受当前数据(高电平)。
        设备地址:多数设备的地址为7或10位,大多位7位,设备地址帧一般为:七位地址+读写标志位
        - 0表示主设备向从设备(write)写数据
        - 1表示主设备向从设备(read)读数据
        数据帧:每一帧数据帧包括九位 = 八位数据位 + 响应位,如果为设备地址,八位数据帧为7位地址 + 读写标志位。


发送一个数据过程:

    1.主机在SCL高电平时拉低SDA,发起起始信号
    2.主机根据SCL低电平变化,高电平从机读取信号的规则一次发送八位
    3.第九位的时候,主机释放SDA,从机拉低SDA,表示应答
    4.从机释放SDA,主机先释放SCL后再释放SDA,发起终止信号


接收一次数据过程

    1.发送起始信号
    2.发送设备地址,读写位为0,等待应答
    3.收到应答信号,发送访问的地址,等待从机应答,
    4.当主机收到应答信号后,主机由发送变为接收,从机将由接收变为发送,所以主机重新发送一个开始start信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为1,表等待从机的应答信号,当主机收到应答信号时,就可以接收1个字节的数据,当接收完成后,主机发送非应答信号,表示不在接收数据
    5.终止信号


 IIC常见使用时序:

指定地址写:

时序 :

      1.起始信号
      2.主机发送指定设备地址->七位地址+写标志位
      3.主机发送指定设备的指定地址(寄存器)的地址
      4.发送数据帧->(主机)八位数据+(从机)一位应答帧
      5.终止信号

指定地址读:

时序

      1.起始信号
      2.主机发送指定设备地址->七位地址+写标志位
      3.主机发送指定设备的指定地址(寄存器)的地址
      4.主机发送指定设备地址->七位地址+读标志位
      5.主机读取数据帧,从机发送数据帧
      6.终止信号

   I²C协议中读取指定寄存器需采用复合操作:首先发送设备地址(写模式)+寄存器地址,经ACK确认后发送重复起始信号,再发设备地址(读模式)。从机收到读指令后输出数据,主机通过NACK终止传输。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值