Linux设备驱动开发——I2C总线原理与时序

一、I2C总线概述

  I2C总线有两根线:SCL有一定的时钟周期控制信号、SDA数据线

  I2C属于边沿触发类总线:即当SCL处于上升沿时,接收器接收信号

  总线空闲状态为:SDA和SCL都处于高电平状态

  I2C只要主设备才能操作SCL时钟控制线,从设备应答信号为拉低SDA数据线电平。

二、I2C传输过程理解

  规定:SCL处于高电平期间,SDA是不可以变化的;因为,SCL为高电平状态下,如果SDA为电平变化下降沿、则代表一组数据的开始,SCL为高电平状态下,如果SDL电平变化为上升沿、则是一组数据的起始。故,SCL为高电平期间,SDA必须保持不变。

  进而,在SCL由低电平变为高电平,也就是SCL上升沿时;则为接受端去接收SDA的1个bit位的过程。

  数据发送过程如下:

1.开始传输:SCL为高电平,SDL从高电平变为低电平的瞬间。

2.一次传输8位:SCL保持低电平,SDA发送8位有限数据;SCL突变为高电平,即SCL上升沿,一次读取SDL八位数据。同时,发送端会释放SDA总线,即设置SDA总线为高电平。

SCL的时钟周期为:1、8、1,依此保证一次8位的正常数据接收。

释放总线,即SCL和SDA都释放;由上拉电阻默认设置为高电平。

3.应答:当接受端收到数据以后,在SCL的低电平时钟周期下降沿,发送SDA为低电平的应答。

4.释放SCL:数据传输完毕以后,设SCL为高电平;并释放SDA(也就是由上拉电阻设置为高电平)。

  由于I2C也是一种共用总线;故,传输的发起和结束都有master控制。而,I2C设备间,都是平等的;即在一次数据传输过程中,主动发起者就是本次数据传输过程的master;反之,身份就又变成slave。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值