I2C总线介绍

  概念

     IIC(Inter-Integrated Circuit)是IICBus简称,中文应该叫集成电路总线,它是一种串行通信总线。I2C是一个多主机的总线,每个设备既可以当主控器 或被控器,又可作为发送器或接收器,一条总线上可 以有多个主机,但同一时刻只允许一个主机工作。

      每个支持i2c总线的设备,它都会有一个可以代表自己的地址。这个地址是唯一的,用7位或10位 来表示,在出厂时已经确定固化。

      I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

      为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是漏极开路(OD)输出或集电极开路(OC)输出。总线空闲时,因各设备都是开漏输出,上拉电阻Rp使SDA和SCL线都保持高电平。任一设备输出的低电平都将使相应的总线信号线变低,也就是说:各设备的SDA是“与”关系,SCL也是“与”关系。

        由于连接到 I2C 总线的器件有不同种类的工艺 CMOS NMOS 双极性 逻辑 0 低 和 1
高 的电平不是固定的 它由 VDD 的相关电平决定 。每传输一个数据位就产生一个时钟脉冲。

特性

(1)SDA 和 SCL 都是双向线路 都通过一个电流源或上拉电阻连接到正的电源电压 见图 3

(2)当总线空 闲时 两条线路都是高电平
(3)连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能
(4)上数据的传输速率在标准模式下可达 100kbit/s 在快速模式下可达 400kbit/s 在高速模式下
可达 3.4Mbit/s ;
(5)连接到总线的接口数量只由总线电容是 400pF 的限制决定 关于高速模式主机器件的信息

数据传输

  • 数据有效性:        

        SDA 线上的数据必须在时钟的高电平周期保持稳定,数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变。

  • 起始和停止条件:

起始(S):当 SCL 线是高电平时 SDA 线从高电平向低电平切换,表示起始条件

终止(P):当 SCL 是高电平时 SDA 线由低电平向高电平切换,表示停止条件

        起始和停止条件一般由主机产生 总线在起始条件后被认为处于忙的状态 在停止条件的某段时间后总线被认为再次处于空闲状态。

        如果连接到总线的器件合并了必要的接口硬件 那么用它们检测起始和停止条件十分简便,但是 没有这种接口的微控制器在每个时钟周期至少要采样 SDA 线两次来判别有没有发生电平切换;

  • 字节格式

        发送到SDA线上的每个字节必须为 8 位 每次传输可以发送的字节数量不受限制,每个字节后必须跟一个响应位。首先传输的是数据的最高位 MSB,见图 6 。采用电平触发。

如果从机要完成一些其他功能后 例如一个内部中断服务程序, 才能接收或发送下一个完整的数据字节,可以使时钟线 SCL 保持低电平迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线 SCL 后 数据传输继续。

  • 响应
接收器 收到 每个字节 后的第9个时钟周期会发送 一个应答信号(ACK)或非应答信号(NACK)。

        数据传输必须带响应,相关的响应时钟脉冲由主机产生,在响应的时钟脉冲期间,发送器释放 SDA 线(高)。通常,被寻址的接收器在接收到的每个字节后,除了用 CBUS 地址开头的报文,必须产生一个响应。

        在响应的时钟脉冲期间 接收器必须将 SDA 线拉低 使它在这个时钟脉冲的高电平期间保持稳定的低电平 见图 7 

  • 写数据

  • 读数据

仲裁

  • 同步

        所有主机在 SCL 线上产生它们自己的时钟来传输 I2C 总线上的报文,数据只在时钟的高电平周期有效,因此需要一个确定的时钟进行逐位仲裁。

        同步 SCL 时钟的低电平周期由低电平时钟周期最长的器件决定 而高电平周期由高电平
时钟周期最短的器件决定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值