(南京观海微电子)——I3C协议介绍

什么是I3C总线?

 i2c全称是Inter Integrated Circuit,i3c是MIPI(Mobile Industry Processor Interface)移动产业处理器接口联盟推出的改进型i2c总线接口,全称是Improved Inter Integrated Circuit,因此简称为i3c。i3c仍然是采用2根通信线,一根数据线SDL,一根时钟线SCL。i3c向下兼容i2c,也就是i3c总线可以挂载传统i2c接口的器件,使用很是方便。MIPI联盟的新接口标准旨在通过减少传感器系统集成的物理引脚来实现传感器通讯的标准化,提供一个快速、低成本、低功耗、两线数字接口标准。
I3C(Improved Inter Integrated Circuit)升级版的集成电路总线,同样两根总线:SDA和SCL

I3C接口致力于改善I2C的性能,并提供向后兼容,即兼容I2C。i3c向下兼容i2c,但不兼容10bit的i2c扩展地址

I2C vs SMBus?

I2C(Inter-Integrated Circuit,IIC) 最初由飞利浦(Philips)半导体(后并入NXP)在1982年提出,主要目的是提供一种简单的、成本低廉的串行总线,用于MCU和电视机原件进行通信。它在最初是由一个Master(可以多Master)和可以多达127个Slave在由两根线(SDA, SCL)组成的总线上进行通讯。

这样MCU就可以不用再单独和各个设备通讯,而仅仅用两根线就可以和所有外围设备愉快的通话了。这两根线分别是数据线(SDA)和时钟线(SCL)。如此这般,大大节约了芯片引脚数目,方便主板布线,节省了整体成本。良好的设计,慢慢让它得到了广泛应用。这些年下来,I2C从省电和提高速度方面进行了三次版本升级,速度从10KHz提高到最高可达5MHz。现在计算机领域,大多数低速设备都是靠I2C通讯:大多数传感器的数据读取界面是I2C;Clock芯片CK404界面是I2C;内存条SPD信息的读取界面是I2C;有些控制器的界面是I2C,等等。随着速度提高,有些中速设备也是I2C:经常遇到的例子是笔记本电脑的触摸板(Touch Pad)和触摸屏(Touch Panel),只不过界面是HS I2C。

电脑里面常有的一个容易混乱的相似总线是SMBus,它由Intel在1995发布,最早用于和智能电池的通讯,后也经过三次提高,于2000年左右成熟后一直变化不大。SMBus脱胎于I2C,他可以说是I2C的一个子集。它在大部分情况下,也由一个Master(可以多Master)和众多Slave组成,用两根线(SMBDAT和SMBCLK)进行通讯:

I2C和SMBus两者在一般应用下,区别不大,甚至大多数情况下互用也没有问题。更让人迷惑的是,两者可以同时出现在一些设计中,这让一些同学相当疑惑,两者到底有什么区别?在I2C上重新发明一遍轮子有何意义呢?

答案在于I2C偏重速度,而SMBus偏重可靠性和成本。I2C速度从10KHz起步(理论上可以更低至0),最高5MHz;而SMBus最低10KHz,最高100KHz。也就是说在10KHz到100KHz上,两者才通用,这就排除了中速和高速设备。I2C不强制Slave对地址请求发送回应(ACK),而SMBus要求必须ACK。于此对应,SMBus对NACK的要求也严格于I2C。这是因为SMBus面向电脑中很多可拆卸设备,必须确定该设备是否存在,避免误操作。SMBus还加入了WatchDog,在SMBCLK拉低后,不得超过35ms(这就是10KHz的最低频率的由来),否则Slave应该Reset。而I2C并没有该限制。这让SMBus避免了复杂的错误恢复电路。SMBus还提供了单独的SMBSUS来用于Slave向Master报警。

I2C有什么缺陷?

I2C两根线的设计相当简洁而高效,让MCU、PCH或CPU通过两个PIN就可以通讯,节约了成本和简化了设计。但是,所有的通讯都是由Master发起,Slave只是被动相应,这造成很大的麻烦。如果是输出设备还行,但对输入设备,CPU不知道有没有数据,不得不定时Pull I2C总线,看看输入存在与否,这与现代计算机系统设计初衷相反。随着I2C使用越来越广,越来越多的设备加入了更多的带外(sideband)线来补足I2C的缺点,其中最重要的两个线就是中断线INT和一些RESET线,一个经典设计如下:

I2C经典设计

在图中,左边慢速I2C设备虽然共用了一个I2C总线,但每个设备都有自己的INT和Host相连,用于通知Host有事发生,而不是让Host不停来查询,这样才能让Host没事进入省电状态,更加高效。右边的高速设备更是另辟自己的高速I2C总线。如此这般,理想中的简洁设计在现实中越来越被破坏的支离破碎,常常是INT线比I2C线多得多。再加上进一步提高速度的需求,业界呼唤一种新的解决方案。于是I3C应运而生。

I3C来了

I3C特性

  • 明确的定义标准
  • 两条通讯线路(DCL和SDA)
  • 带内中断
  • 带内命令代码
  • 动态寻址
  • 多主/多点通讯特性
  • 支持热链接(是否是热拔插)
  • 错误检查
  • 向后兼容I2C

MIPI Alliance发布了I3C标准,I3C(Improved Inter Integrated Circuit)另一个名字叫做SenseWire,顾名思义,它的初衷是满足众多物联网设备中的Sensor的,它带来众多的改进,除了常说的12.5MHz速度的提高之外:

更重要的是嵌入进协议的软中断。如此,就不需要单独的INT连线了:

与之前的进行对比

I3C在不同模式下与I2C每传输一个bit数据消耗的能量对比(左图)以及比特率的对比(右图)。从结果来看,I3C在各方面都更具优势。I3C的HDR_TSP模式是数据速率最快功耗最低的一种模式,能够支持超过33Mbps的有效数据比特率。

支持动态地址

  i3c支持动态地址,同时可以分配7bit静态地址以适配传统i2c 从设备。i3c从设备地址由主设备仲裁,但并不是所有设备地址都可用,部分地址是i3c标准所保留的,用于后期拓展或者错误仲裁。
在这里插入图片描述
在这里插入图片描述

                                                              部分不可用地址

通讯协议
    1、SDR动态分配地址
    I3C可以为所有的I3C从设备动态的分配7-bit address
在I3C从设备中会有两个standardized characteristics register和内部的48-bit的临时ID去协助此过程
Bus Characteristic Register    这个只读寄存器描述了I3C兼容设备在动态地址分配和通用命令代码中使用的角色和功能 


Device Characteristic Register    这个只读寄存器描述了I3C兼容的设备类型(例如加速计、陀螺仪等),用于动态地址分配和通用命令代码 
仍然支持I2C的静态地址
传统I2C设备需要提供的只读寄存器:Legacy Virtual Register,用来描述该I2C设备的功能(工作模式,时钟频率等)


    2、主设备发送的地址

    发送静态地址:持有该地址的I2C从设备响应
    发送7位的0X7E:此地址为广播地址,所有的I3C从设备都会对这个地址进行响应,所有的I2C从设备都不会对这个地址进行响应,因为I2C中该地址是保留的。
    发送动态地址:持有该地址的I3C从设备响应
 
        I3C Slave设备不需知道自身处在I2C总线上或是I3C总线上。如果其自身有一个I2C静态地址,那么它可以一直使用这个地址,直到被赋予一个动态地址。一旦被赋予了动态地址,它就必须作为一个I3C Slave设备工作,除非被要求重置。在被赋予动态地址之前,I3C Slave 设备只能以I2C设备的方式工作,但是添加了以下特性:
        必要时候紧接着START条件可以响应I3C广播协议。
        正确处理CCC的ENTDAA和SETDASA命令。 / AMSS/ sm8250_slpi/ slpi_proc/ ssc/ inc/ utils/ sns_com_port_types.h

低目标电压
  i3c标准的目标电平电压是3.3V、1.8V、1.2V,甚至更低。


支持软中断
  传统i2c、spi接口需增加中断线通知主控制器,i3c支持软中断,无需外部中断线,传感器数目多的情况下,节约IO引脚和中断资源。i3c软中断的基本原理是,当总线处于空闲状态时,从设备可以通过中断机制发送一个"START"信号,然后主设备会为从设备提供一个时钟信号,从设备可以通过主设备提供的分配地址将设备驱动到总线上来启动中断。如果此时有多个从设备尝试启动中断,则地址最小的从设备获得此次仲裁。同时主设备发出ACK信号响应此次中断并重新启动总线或者继续从从设备接收数据,也可以发出NACK信号来结束通信。


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_20553613/article/details/105896530

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lornell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值