通信协议 - i2c
i2c(inter-integrated circuit)是一种串行通讯总线,可允许存在多主机,但同一时刻只能有一个主机在线。i2c 由两条开漏信号线组成,接线简单,利用电阻上拉,典型电平为正逻辑 3.3v 或 5v。传输速率分快速模式(400kb/s)、标准模式(100kb/s)、低速模式(10kb/s)。
在 i2c 总线上,从机以它的 i2c 地址被选择。这样子可以用在一个主机上通过两根线控制多个从机。
i2c 的引脚
scl(serial clock):由主机产生的方波,用来控制传输速率和数据的锁存。
sda(serial data):这是一个半双工、同步的信号线,传输的数据包括地址、控制信号与通信数据。
i2c 地址
i2c 地址划分,是 7 bit 地址加上 1 bit 读写指示。
i2c 总线上的每个设备都必须有一个唯一的地址,如果地址重复会出问题。有些设备的 i2c 地址是可以编程设置的。
i2c 通信
start:主机在 scl 为高时,拉低 sda 发起。
stop:主机在 scl 为高时,释放 sda(变为高电平)发起。
ack(acknowledge):i2c 传输都是随着每个 scl 脉冲,每次传输 1 个字节(8 个位)。每次传输的第 9 个脉冲被保留为从机的确认信号,每次的 ack 信号表示前一次传输成功。
i2c 传输句段示例
这一段传输的值为 11001101:
主机拉低 sda 电平以产生 start 信号。
第一个位被设置,主机拉低 scl,将时钟信号经过 dac 进行输出。
传输到第九个位时,主机不会拉低 sda,如果从机确认传输完整,则将 sda 拉低让主机知道。
有效的数据传输
在 scl 保持高电平(传输数据)时,sda 在这段时间内必须保持稳定才有效。
在 scl 节拍间的低电平,才允许 sda 切换数值。
当 scl 为高电平,sda 发生变化时,就会被解释为 start、restart 或 stop 事件。
接口电路上升 / 下降计时
如图,晶体管将在低电平时导通,并将 cb 电容放电到低电平。反之,晶体管将在高电平时截止,上拉电阻会将 cb 充电至高电平。
tr(上升时间):信号从低电平过渡到高电平的最大时间。因为 i2c 是开漏信号,所以上升时间由上拉电阻和总线电容的 rc 时间常数决定。
tf(下降时间):信号从高电平过渡到低电平的最大时间。
i2c 上拉电阻计算
上拉电阻最小值:
上拉电阻最大值:
其中,上拉电阻最小值会带来最短的上升时间。如果用的阻值比这个再小,就会导致当输出晶体管开启(逻辑低电平)时,消耗过多的电流,违反最大逻辑低电平输出的规范。
上拉电阻最大值会带来最长的上升时间。如果使用大于此值的上拉电阻,将会违反时序要求。
vdd 表示供电电压;volmax 表示最大逻辑低电平(典型值为 0.4v);isinkmax 表示最大灌电流(典型值为 3ma);cb 表示总线电容,取决于 pcb 走线的长度和宽度,与连接至总线的设备的电容。
计算示例:
带你了解4个TI中国明星产品背后的故事
EV3000变频器的调速监控系统设计
TDK采用混合聚合物技术的轴向电容器的特点
IBM发布混合云时代新系统解决方案
无线人体局域网标准“BAN(IEEE 802.15.6)”正式批准
详解I2C串行通讯总线
什么是左值、右值呢?左右值和左右值引用
深入剖析开关电源的电感电流选择
关于无人机的“空中物流”的盛行
基于FPGA芯片实现单对差分线串行传输系统的设计
YAML是什么?
AMetal开发通用外设的流程与规范
美国首条太阳能公路正式投运
机械制图的公差与配合及其标注方法
声音发生器电路图分享
可对音量进行联动调节的高低音提升电路
森思泰克荣获神龙汽车2022年度杰出开发奖!
川土微电子发布具有唤醒功能的四通道LIN收发器
LPO是什么?LPO作用是什么
汽车OTA升级是未来智能化汽车时代的必然选择