IIC

1 概念

IIC(Inter-Integrated Circuit)内部集成电路;多主机总线,非全双工
Pin:
   SDA:串行数据线
   SCL:串行时钟线
concept:
   同步:SCL时钟线进行高低电平控制逐位仲裁
   仲裁:多主机尝试控制总线,但只允许其中一个控制总线且报文不被破坏的过程。

图1.1 IIC总线

模式:标准(100Kbit/s) 快速模式(400Kbit/s) 高速模式(3.4Mbit/s)
最大电容:400pF

2 传输过程

主机A->丛机B
   A寻址B -> A(发送器)发数据B(接收器) -> A终止
从机B->主机A
   A寻址B -> A(接收器)收数据B(发送器) -> A终止

总结:A(start) -> A(address)B[→] ->A(data)B[⇆] -> A(ack)B[⇆] -> A(stop)

3 数据规范

   按位传输

3.1 数据有效

图2 数据规范

SDA数据需要在SCL高电平时保持稳定(读数据时,SCL电平为高)
SDA数据切换需要SCL电平变为低电平

3.2 起始停止条件(由主机控制)

图3 起始停止条件

起始:SCL高电平下,SDA由高切低 -> 忙状态
停止:SCL高电平下,SDA由低切高 -> 空闲状态

3.3 位规范

图4 数据传输规范

   SDA每发送一字节,需跟一个响应位(每发一字节数据,需发送9位),MSB传输。


图5 主从机响应

上图为主从机响应示意图,由主机产生

  • SDA在SCL高电平,器件保持低电平
  • 从机不能响应(从机正在处理其它事件),从机SDA保持高电平(主机发送停止信号终止或重复起始信号开始新传输)
  • 从机响应传输一段时间,不能再接收数据,主机必须终止传输(从机在第一个字节后没有响应)
  • 主机接收时,必须在从机不产生时钟的最后一个字节不产生一个响应,向从机发送器通知数据结束,且从机释放数据线,允许主机停止或重复

3.4 同步与仲裁(此概念重要)

3.4.1 同步

图6 同步
  • 时钟同步通过I2C接口到SCL;SCL变为低电平->每个器件开始计数它们的低电平周期->此时器件会使SCL保持低电平状态。
  • 只要器件有一者仍处于低电平,SCL会一直保持下去,其它低电平周期短的器件进入高电平等待状态。
  • 所有器件释放低电平后,时钟线释放变高电平,之后器件时钟与SCL线状态无差别。
  • 器件开始计数高电平周期,首先完成高电平周期的器件会再次将SCL拉低。
  • 总结:<font color=#FF0000>SCL低电平由低电平周期长的器件决定;SCL高电平周期由高电平周期短器件决定</font>
  • 此模式除用于仲裁,还可作为握手使能接收器处理字节级或位级的快速数据传输。器件可以快速接收数据字节,但需要更多时间保存字节或准备下一字节,从机以握手过程在接收响应一个字节后使SCL保持低电平,迫使主机进入等待状态,直到下一字节传输。在位级中,器件通过延长每个时钟的低电平周期减慢总线时钟,从而,任何主机的速度都可以适配这个器件的内部操作速率。

3.4.2 仲裁

图7 两主机之间仲裁
  • SCL线为低电平时,仲裁在SDA发生
    仲裁可以很多位:比较地址位(寻址相同,比较数据位、响应位)
  • 丢失仲裁的主机可以产生时钟脉冲直至丢失仲裁的该字节末尾
  • 主机结合从机功能时,丢失仲裁,可能成为赢得仲裁主机在寻址的器件,此时主机必须切换到从机模式
  • I2C总线控制只由地址或主机码以及竞争主机发送的数据决定,没有中央主机,总线也没有任何优先权
  • <font color=#FF0000>仲裁不可进行情况</font>:重复起始条件和数据位;停止条件和数据位;重复起始条件和停止条件

4 协议时序规范(编程所需重点)

   本章不考虑10位寻址,只考虑7位寻址

4.1 写时序

图8 写时序

→ 主机发送start信号:SCL(1) SDA(1->0)
→ 7bit设备地址
→ 1bit确定是读/写(1/0):0
→ 1bit响应(从->主) :SDA(0)
(→ 写设备内部寄存器地址→ 响应)
注:这里发送command,相当于判别是读寄存器还是写寄存器,该值完全由slave决定
→ 8bit数据(主->从)+1bit响应(从->主) //n次
→ 主机发送stop信号:SCL(1) SDA(0->1)

4.2 读时序

图9 读时序

→ 主机发送start信号:SCL(1) SDA(1->0)
→ 7bit设备地址
→ 1bit确定是读/写(1/0):1(写)
→ 1bit响应(从->主) :SDA(0)
(→ 读设备内部寄存器地址 → 响应)
→ 7bit设备地址+1bit 确定读写:读 + 1bit ACK
→ 8bit数据(主->从)+1bit响应(主->从) //n次
→ 主机发送stop信号:SCL(1) SDA(0->1)

5 其它

Q1:SDA如何实现双向传输?
内部电路必然存在双引脚(发送/接收)
Q2:主设备(从)发送数据时,从设备(主)发送引脚,不影响数据发送?
内部存在三极管

图10 内部电路

表1 真值表

A B SDA
0 0 1(上拉电阻决定)
0 1 0
1 0 0
1 1 0

   下面解释上拉电阻作用(I2C由于开漏输出与上拉电阻简化了协议设计):

  • I2C设备挂载时,应实现“线与”特性,这是实现仲裁与时钟同步的关键。
  • 由于内部构成原因,一个输出级为漏极/集电极开路(开漏输出),只能输出低电平和高阻态(电阻很大,近似开路),也因此导致总线只受低电平影响(设备只能输出低电平使用总线),从而完成“线与”功能。
  • 而如何实现总线高电平,这需要上拉电阻,当总线空闲时,所有设备输出高阻态,无法将总线拉高,这就需要上拉电阻进行拉高,使总线呈现高电平。
    例如:ACK信号为低电平,这是由于内部电路决定(主设备不驱动三极管,从设备也不驱动时,三极管截止,SDA由上拉电阻拉成高电平,从设备接收数据后,发响应信号,驱动三极管,使SDA变为低电平)

上拉电阻对I2C协议的影响:

  • 上拉电阻大小不是随便用的!涉及到通信速率与功耗的取舍。协议层对电平的变化时间有严格的要求和限制,而电平的变化受总线电气特性的影响。
  • 对总线而言,上拉电阻越大,信号上升时间越长,通信速率越低,反之亦然。但阻值过小,总线低电平时电阻的大电流会增加电路功耗。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354