接口技术 -- 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拉低。
  • 总结:SCL低电平由低电平周期长的器件决定;SCL高电平周期由高电平周期短器件决定
  • 此模式除用于仲裁,还可作为握手使能接收器处理字节级或位级的快速数据传输。器件可以快速接收数据字节,但需要更多时间保存字节或准备下一字节,从机以握手过程在接收响应一个字节后使SCL保持低电平,迫使主机进入等待状态,直到下一字节传输。在位级中,器件通过延长每个时钟的低电平周期减慢总线时钟,从而,任何主机的速度都可以适配这个器件的内部操作速率。

3.4.2 仲裁

图7 两主机之间仲裁

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

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 真值表

ABSDA
001(上拉电阻决定)
010
100
110

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

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

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

  • 上拉电阻大小不是随便用的!涉及到通信速率与功耗的取舍。协议层对电平的变化时间有严格的要求和限制,而电平的变化受总线电气特性的影响。
  • 对总线而言,上拉电阻越大,信号上升时间越长,通信速率越低,反之亦然。但阻值过小,总线低电平时电阻的大电流会增加电路功耗。
### 回答1: pg090-axi-iic是一个AXI-IIC控制器的文档。这个文档描述了AXI-IIC控制器的工作原理、功能、接口和配置,让用户能够更好地理解和使用该控制器。 该控制器是一种用于串行通信的硬件模块,可用于与其他器件进行通信。它支持多种传输方案,包括标准模式、高速模式和快速模式,可适用于多种不同的设计需求。此外,该控制器还支持多个设备地址,可用于同时与多个设备进行通信。 该文档提供了关于AXI-IIC控制器的详细说明,包括物理接口、控制寄存器、中断控制、状态指示灯和时序图等内容。用户可以根据这些说明,轻松地进行控制器的接口设计、配置和调试,实现串行通信的功能。同时,该文档还提供了一些实际应用例子,能更好地展示AXI-IIC控制器的应用场景,帮助用户更好地理解该器件的使用方法和可能的应用领域。 ### 回答2: pg090-axi-iic是一种AXI式I2C总线控制器,它支持AXI4-Lite、AXI4-Stream和AXI4 Memory-Mapped接口。AXI式I2C总线控制器可用于板间通信,也可用于片上模块间通信。它支持I2C Master Mode、Multi-Master Mode和Slave Mode。PG090-AXI-IIC PDF详细介绍了该控制器的寄存器映射、时序图、数据流图等技术细节。控制器的时序参数可以根据使用场景进行调整,例如时钟频率、数据长度、CS保持时间等。控制器的代码使用Verilog编写,用户可以将其合成到FPGA芯片中,进行控制器的实现。用户可以通过AXI接口和该控制器进行通信,从而进行I2C总线控制。该控制器使用方便、功能齐全,适用于各种嵌入式系统和通信应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值