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

2024-03-17 16:04

本文主要是介绍(南京观海微电子)——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

这篇关于(南京观海微电子)——I3C协议介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819433

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx: