2.1 集成电路总线 I2C Inter-Integrated Circuit


1 I2C是什么?

飞利浦半导体(现为NXP半导体)开发了一个简单的双向两线总线,I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。
在这里插入图片描述
在这里插入图片描述
两条线,串行数据(SDA)和串行时钟(SCL),在连接到总线的设备之间传递信息。每个设备由唯一的地址(无论是微控制器、LCD驱动器、存储器还是键盘接口)识别,并且可以根据设备的功能作为发射器或接收器操作。LCD驱动器可以仅仅是接收器,而存储器可以同时接收和发送数据。除了发射机和接收机之外,在执行数据传输时,设备也可以被认为是主设备或从设备。主机是在总线上发起数据传输并产生时钟信号以允许传输的设备。那时,任何被寻址的设备都被认为是从机。
在这里插入图片描述

2 I2C协议解析

数据有效性:SDA线的数据在时钟的高电平期间必须是稳定的。只有当SCL线路上的时钟信号为低时,数据线的高低状态才能改变。每个传输的数据位产生一个时钟脉冲。
在这里插入图片描述
起始和停止条件:所有时序都以一个起始条件(S)开始,并由一个停止条件(P)结束。
当SCL为高时,SDA线上的高到低过渡,定义了起始条件。
当SCL为高时,SDA线上的低到高过渡,定义了停止条件。
起始和停止条件总是由主机生成的。
在这里插入图片描述
数据格式&应答信号:
发送到SDA线上的每个字节必须是8位.每次传输的字节数量是不受限制的.每个字节后必须跟着一个ACK应答位.数据从最高有效位(MSB)开始传输.
应答发生在每个字节之后。该应答位允许接收机向发射机发出信号,表明该字节已被成功接收,并且可以发送另一个字节。主机产生所有时钟脉冲,包括应答第九时钟脉冲
应答信号的定义如下:发射机在应答时钟脉冲期间释放SDA线,以便接收机能够将SDA线拉低,并且在该时钟脉冲的高电平期间保持稳定的低。
当SDA在这第九个时钟脉冲期间保持为高时,这被定义为非应答信号。
然后,主机可以生成一个停止条件来中止传输,或者生成一个重复的起始条件来开始新的传输。
在这里插入图片描述
时钟同步:
在空闲总线上两个主机可以同时开始传输,所以必须要有一个方法来决定哪个主机来控制总线并完成其数据传输.这个方法就是时钟同步和仲裁.在单主机系统中,时钟同步和仲裁不需要了.
如果从机希望主机降低传送速度,可以通过将SCL主动拉低延长其低电平时间的方法来通知主机,当主机在准备下一次传送发现SCL的电平被拉低时就进行等待,直至从机完成操作并释放SCL线的控制权。这样一来,主机实际上受到从机的时钟同步控制。可见SCL线上的低电平是由时钟低电平最长 的器件决定;高电平的时间由高电平时间最短的器件决定。这就是时钟同步,它解决了I2C总线的速度同步。
在这里插入图片描述
仲裁:
I2C总线上可能在某一时刻有两个主控设备要同时向总线发送数据,这种情况叫做总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的: 假设主控器1要发送的数据DATA1为“101 ……”;主控器2要发送的数据DATA2为“1001 ……”总线被启动后两个主控器在每发送一个数据位时都要对自己的输出电平进行检测,只要检测的电平与自己发出的电平一致,他们就会继续占用总线。在这种情况下总线还是得不到仲裁。当主控器1发送第3位数据“1”时(主控器2发送“0” ),由于“线与”的结果SDA上的电平为“0”,这样当主控器1检测自己的输出电平时,就会测到一个与自身不相符的“0”电平。这时主控器1只好放弃对总线的控制权;因此主控器2就成为总线的唯一主宰者。
不难看出:
1.对于整个仲裁过程主控器1和主控器2都不会丢失数据;
2.各个主控器没有对总线实施控制的优先级别,他们遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。
在这里插入图片描述

3 I2C上拉电阻计算

上拉电阻的值需基于速度和功耗之间的权衡来决定电阻器的值。较小的电阻由于有较小的RC延迟将具有较高的速度,而较大的电阻将具有较低的功耗。
电源电压限制了上拉电阻的最小值[RP(min)].
在这里插入图片描述
由于I2C标准上升时间规范,最大上拉电阻受总线电容(Cb)限制。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总线电容主要由引脚、连接、PCB走线和导线等因素引起,总线电容CL与上拉电阻R具有一个RC时间常数,随着I2C通信速率的增加,该常数变得越发重要。通过电阻对电容进行充电的一般公式:
以VCC=5V,快速模式50pf-200pF为例,由上面的公式可得出上拉电阻RP可以取的范围是1.53K~7K,一般取5.1K,综合到3.3V的VCC低功耗设计中,通常选用4.7K牺牲速度换取电池使用时间,此阻值也是常规阻值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
I2C Bus Pullup Resistor Calculation.pdf

4 I2C总线可挂设备数

在这里插入图片描述
IIC总线最多可以挂多少个设备

5 测试参数

6 参考链接

UART、I2C、SPI、Ethernet

各种总线还分不清?硬核科普:SPI、I2C、UART、I2S、GPIO、CAN、SDIO…

UM10204- I2C-bus specification and user manual——NXP

I2C总线规范——广州周立功

I2C知识总结

I2C designer tool——TI

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值