通信协议①——I2C

I2C总线 (InterIC BUS)

        I2C总线是由Philips公司开发的一种通用数据总线两根通信线:SCL (Serial Clock) 、SDA (Serial Data)。

 I2C总线特点:

         同步,半双工 、带数据应答、支持总线挂载多设备(一主多从、多主多从)

1.1概念解释

全双工:设备1和设备2可以同时发送接收

半双工:设备1和设备2能发送也能接收;但在同一时间中设备1和设备2只能接收或发送;

 单工:设备1只能发送(设备2只能接收)或设备2只能发送(设备1只能接收);

异步时序优点省一根时钟线,节省资源;缺点:对实践要求严格,对硬件电路的依赖比较严重;同步时序优点对事件要求不严格,对硬件电路不怎么依赖;缺点:多用一根时钟线;

1.2硬件电路连接方式:

所有12C设备的SCL连在一起,SDA连在一起;

设备的SCL和SDA均要配置成开漏输出模式;

SCL和SDA各添加一个上拉电阻,阻值一般为4.7KQ左右

“线与”现象:只要有任意一个或多个设备输出低电平,总线就处于低电平;只有全部设备输出高电平。总线就处于高电平

 I2C时序的基本单元

起始和终止都是由主机产生的(从机不允许产生起始和终止 )

     1、   起始条件:SCL高电平期间,SDA从高电平切换到低电平;

   2、 终止条件:SCL高电平期间,SDA从低电平切换到高电平;

3、发送一个字节:

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

4、接收一个字节:

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

5、发送应答:

        主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答

6、接收应答:

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

1.3   I2C完整时序:

1、指定地址写

        对于指定设备(SlaveAddress),在指定地址 (Reg Address) 下,写入指定数据(Data)。

2、当前地址读

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

3、指定地址读

        对于指定设备(Slave Address)在指定地址(Reg Address)下,读取从机数据(Data )。其实相当于在指定地址写的前半部分加上当前地址的组合

         

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值