四问带你搞懂 I3C

      大家都知道 I2C ,它的全称是 Inter Integrated Circuit , I3C 又是什么

       I3C 是 MIPI (Mobile Industry Processor Interface)移动产业处理器接口联盟推出的,全称是 Improved Inter Integrated Circuit ,顾名思义,I3C 就是改进型的 I2C

       I3C 仍然采用 2 根通信线,一根数据线 SDL ,一根时钟线 SCL ,I3C 向下兼容 I2C ,也就是说 I3C 的总线下是可以挂载传统的 I2C 接口的(但是不兼容 10 bit 的 I2C 扩展地址),I3C 的典型应用电路类型如下图所示:

图 1 I3C 的典型应用电路类型

       为什么要有 I3C 

       常见的板间通信总线有 I2C 、SPI 、UART 、I2S 等,这类总线常用于 ADC 、DAC 、传感器等外设通信。随着物联网的应用越来越广,涌现各类传感器,比如温度、气压、心率和陀螺仪等。挂载传感器的激增,对传输功耗、性能、速率的要求也相应的提高,这就暴露出了传统总线的部分缺陷,主要问题有以下几点:

       一、功耗问题:I2C 、SPI 、UART 设计之初未考虑到功耗问题,而对于物联网多传感器的应用来说,对功耗的要求比较严苛。

       二、I2C 、SPI 、UART 都只支持单一的主机。

       三、I2C 、SPI 是同步通信,必须由主机(处理器)发起时钟进行通信,从机没办法主动传输数据。

       四、I2C 、SPI 一般需增加中断线通知主机来读取数据,随着传感器数量的增加,会占用大量的 IO 口和中断资源。

       五、UART 是异步通信,虽然没有三 、四的缺点,但是它是点对点通信,一个总线只能挂一个从设备。

       六、对于 I2C 来说,传输速率受限。

       基于上述的问题,MIPI 主导并提出了 I3C 总线,可以解决现有的问题。

     I3C  I2C 的区别在哪?

       下面我将通过一个表格让大家直观地看到它们的区别。

表1 I3C 和 I2C 的区别

        通过表格我们不难看出 I3C 的特点有:

  • 支持带内中断:

          概念:In-Band Interrupt (IBI)。传统的I2C 需要额外的 PIN 线才能实现中断电平请求,会占用 IO 和中断资源,I2C 传感器是需要主机实时读取数据,当有新的数据时, I2C 是无法主动发起通讯要求主机读取的,而 I3C 则是应用了带内中断,它的处理过程由主机和从机共同决定, I3C 传感器可以通过带内中断来让主机读取数据。

          过程:I3C 从机将 SDA 线拉低然后等待主机将 SCL 线拉低来回应 ACK ,当主机将 SCL 拉低以后同时将 SCL 时钟提供给从机,从机享有 SDA 的控制权,随后从机通过 SDA 发送带有自己动态地址的数据(带有值为 1'b1 的 RnW 位),即强制要求 1'b1 位为 1,否则主机则认为此次请求无效,在经历了这些过程后,就完成了一次 IBI 请求。

  • 支持故障检测:I3C 协议中为主机和从机分别指定了一组必须方法,针对从设备中七种错误类型和主设备中两种错误类型的检测和恢复方法。更详细的介绍可以参考连接:I3C协议Single Data Rate(SDR)模式研读(七):SDR错误检测和恢复方法_sdr common error check pl von s--CSDN博客
  • 支持多个主机:接在 I3C 总线上的辅助主机,可以给 I3C 主机发送请求成为当前的主机,需要经过原主机的响应,释放原主机对总线的控制权,由原来的辅助设备承担当前主设备,并控制 I3C 总线。
  • 支持热插拔:热插拔即是允许 I3C 从机在主机完成初始化后才接入 I3C 总线,并且可以再为其分配动态地址,这个机制允许从机进入低功耗状态,在有需要的时候才唤醒。
  • 支持动态寻址:区别于 I2C 静态地址,动态地址能够解决地址重复的问题。
  • 支持多种通信模式:向下兼容 I2C 、SDR 模式、HDR 模式。

    那么 I3C 到底是怎么工作的呢?

   
(下面介绍以 SDR 模式为例)

       一、读写数据:

       I3C SDR 模式下读写数据与 I2C 很相似,

       写数据:

图 2 I3C 写数据时序
 

        我们可以看到 I3C 主机写入数据的第 9 位是作为奇偶校验,而 I2C 的第 9 位是 ACK / NACK ,这个第 9 位被称作 T-bit 位(为“过渡”)。

        读数据:

图 3 I3C 读数据时序
 

       在 I2C 中,从机到主机的第 9 个数据位是主机的 ACK / NACK ,相比之下,I3C 则可以通过回传 T-bit 的值来允许从设备结束回传,并允许主机终止读取。

       二、动态地址分配的设备要求

       为了支持动态地址分配程序,在开始程序之前,连接到 I3C 总线上的每个 I3C 设备都应该以下面两种方式之一来标识:

        1. 设备有一个静态地址,(假设主机已经知道该地址)主机可以使用此静态地址,例如 I2C 所规定的地址。
        2. 设备具有 48 位的临时 ID 。这 48 位 ID 由以下部分组成。

图 4 I3C 48 位设备 ID 的组成
 

       48位 ID 由三部分组成:

       [47:33] 位是 MIPI 制造商 ID (15位),其最高位有效位被丢弃,仅使用15 个最低有效位。

       [32] 位:临时 ID 类型选择(一位,1'b1:随机值,1'b0 :供应商固定值)

       [31:16] 位:部件 ID :此 16 位字段的含义留给设备供应商定义。

       [15:12] 位:实例 ID :此 4 位 字段中的值用来区分一条总线上的不同的 ID。

       [11:0] 位:此 12 位字段的含义具有自身定义或者其他含义。例如:更深的设备特征,是什么样的传感器等。

       三、带动态地址分配的总线初始化顺序

       在此之前我们先了解一下 I3C 的通用命令代码(CCC),它是全局支持的命令,可以直接传输到特定的 I3C 从设备,也可以同时传输到 I3C 所有从设备。CCC 命令协议仅使用 I3C SDR 模式进行格式化,并且始终以 I3C 广播地址 (7'h7E)开头,也就是说,在启动或者重复启动之后,CCC 的命令地址始终都为 7'h7E。

       一旦分配了 I3C 从机,所有 I3C 从机都将识别 7'h7E 广播地址和它们自己的动态地址。

       而 I3C 的设备要保持通信功能,说明它们都应该在活动状态下,这就涉及到设备状态的配置,即 Enter Activity State 0-3 (ENTAS0 – ENTAS3)。

图 5 ENTAS 的配置时序
 

        在激活后,主机需要一个或全部 I3C 设备清除 / 复位其主机分配的动态地址,清除后,这些设备为动态地址分配程序做好准备,即 Reset Dynamic Address Assignment (RSTDAA)。

图 6 RSTDDA 的配置时序
 

       为地址分配做好准备后,要通过命令允许 I3C 主设备设置或获取一个从设备的最大数据写入长度(以字节为单位)。该最大写入长度不影响广播 CCC 的数据写入长度。设置 / 获取最大写长度值在两个字节传输,最高有效字节(MSb)首先传输。最大写入长度可以设置为的最小值是 8 ,即 Set / Get Max Write Length ( SETMWL / GETMWL)。

       仅当从设备实现的任何专用写入消息或者任何扩展写入 CCC 支持每个消息的最大数据字节的可变限制时,才需要此 CCC 。

       当然 I3C 的初始化指令还有其他的更多,可以通过阅读指令集了解,参考链接为大家送上:I3C协议通讯详解-CSDN博客

       在介绍完上面几个概念以后,相信大家也比较好理解下面这个总线初始化流程图了:

图 7 I3C 总线初始化配置流程图
 

       可能光这么说大家还是觉得有点抽象,下面我将第二点、第三点和代码、波形结合起来方便大家理解。以 NXP LPC865 EVK 板间通信为例子,I3C 初始化配置部分代码如下:

图 7 LPC865 I3C 传输初始化
 

       在发送广播地址后,I3C 回传的设备 ID 如下所示:

图 8 I3C 从机回传48位的设备 ID

       四、带内中断和其仲裁机制

       在 I3C 中,带内中断有优先级控制,每个从设备的优先级都在其从设备地址中编较低的地址具有较高的优先级,也就是说这个地址更快地被处理,这是 I3C 仲裁机制 的结果,值为 0 的地址优先于值为 1 的地址,我们可以通过下图例子更直观地看出区别。

       可以通过对比看出 7'h5F 将赢得仲裁。

图 9 I3C 带内中断仲裁机制
 

       注:图 1、图 5、图 6、图 7 来源于 I3C 总线技术概述。

              图 2、图 3、图 4、图 9 来源于 NXP Semiconductor。


参考资料:

I3C协议Single Data Rate(SDR)模式研读(四):总线初始化和动态地址分配模式Bus Initialization and Dynamic Address Assigned Mode_i3c动态地址分配冲突-CSDN博客

i2c我们用得很多,i3c又是什么?_i3c和i2c区别-CSDN博客

I3C协议通讯详解-CSDN博客

I3C协议Single Data Rate(SDR)模式研读(七):SDR错误检测和恢复方法_sdr common error check pl von s--CSDN博客

 

 登录大大通,了解更多详情,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/402101.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩转网络抓包利器:Wireshark常用协议分析讲解

Wireshark是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。关于该工具的安装请参考之前的文章:地址 ,…

【动态规划专栏】专题四:子数组问题--------最大子数组和环形子数组的最大和

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

openEuler2203 LTS安装VMware WorkStation Pro 17并远程桌面连接Linux服务器

openEuler 2203 LTS默认只有命令行,没有GUI图形界面,在其中安装VMware WorkStation需要有图形界面的支持。这里以安装深度的DDE桌面环境,最后通过VNC远程桌面连接Linux服务器操作VMware WorkStation。 以下操作请保持网络能正常连接 1、安装…

【网站项目】679学生学籍管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

gitlab的使用

前一篇文章我们已经知道Git人人都是中心,那他们怎么交互数据呢? • 使用GitHub或者码云等公共代码仓库 • 使用GitLab私有仓库 目录 一、安装配置gitlab 安装 初始化 这里初始化完成以后需要记住一个初始密码 查看状态 二、使用浏览器访问&#xf…

瑞_VMware虚拟机安装Linux纯净版(含卸载,图文超详细)

文章目录 1 资源准备1.1 官方资源1.2 帮助资源 2 安装 VMware3 安装 CentOS 73.1 镜像 附:VMware删除已安装的操作系统 🙊 前言:VMware虚拟机安装Linux纯净版 VMware版本:VMware Workstation 16.2.4Linux版本:CentOS 7…

Stable Diffusion 模型分享:A-Zovya RPG Artist Tools(RPG 大师工具箱)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 A-Zovya RPG Artist Tools 模型是一个针对 RPG 训练的一个模型,可以生成一些 R…

如何使用eXtplorer部署个人云存储空间并实现公网访问内网数据

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件,是互联网最重要的应用之一,无论是…

内衣洗衣机哪个好用?顶流爆款内衣洗衣机推荐

大家都知道,内衣裤一天不洗,就会滋生很多细菌,很多女生既要忙工作又要忙家务,衣服总会积攒到一堆再去清洗,在潮湿的天气,这样甚至会有发霉的情况出现,而传统的用手洗贴身衣物,看起来…

冷链物流追踪:Java与MySQL的协同实践

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Unity NavMesh 清除不可行走区域

通常场景中物体设置为static或Navigation Static后,打开Navigation使用默认设置烘焙NavMesh,模型顶部和底部会出现蓝色网格,但其中有部分属于不可能到达区域,如下图 本文介绍两种可去掉NavMesh中不需要网格的方法: 方…

无痛法门,助力学习

**注:**本文摘自一位网友“我就是贺生啊”,博主觉得很有道理,便想记录下来分享给大家。仅个人想法,谨慎参考,也欢迎大家说出自己的想法。 引言 在我们学习新知识的时候,会觉得很痛苦,制定学习…

软件设计不是CRUD(12):低耦合模块设计理论——业务抽象:模块分层操作

接上文《软件设计不是CRUD(11):低耦合模块设计理论——业务抽象:规划模块分层》 3、模块的边界 上篇文章的内容基本上说清楚了模块为什么要进行分层设计,以及模块分层设计所遵循的基本原则。本节内容我们就来讨论一下如何实际进行模块的分层规划。前文已经提到,在完成从…

机器人内部传感器阅读笔记及心得-位置传感器-电位器式位置传感器

位置传感器 位置感觉是机器人最基本的感觉要求,可以通过多种传感器来实现。位置传感器包括位置和角度检测传感器。常用的机器人位置传感器有电位器式、光电式、电感式、电容式、霍尔元件式、磁栅式及机械式位置传感器等。机器人各关节和连杆的运动定位精度要求、重…

数字之美:探索人工智能绘画的奇妙世界

目录 引言AI绘画的定义与发展历程定义与发展历程AI绘画产品有哪些? AI绘画的应用领域设计与创意产业影视与游戏制作数字艺术与展览 AI绘画的基本原理与技术深度学习与神经网络生成对抗网络(GAN)风格迁移算法 AI绘画效果展示一只带着墨镜的小猫在高楼林立…

尾矿库排洪系统结构仿真软件WKStruc(可试用)

1、背景介绍 尾矿库作为重大危险源之一,在国际灾害事故排名中位列第18位,根据中国钼业2019年8月刊《中国尾矿库溃坝与泄漏事故统计及成因分析》的统计,在46起尾矿库泄漏事故中,由于排洪设施导致的尾矿泄漏事故占比高达1/3&#x…

手机连接电脑后资源管理器无法识别(识别设备但无法访问文件)

问题描述 小米8刷了pixel experience系统,今天用电脑连接后无法访问手机文件,但是手机选择了usb传输模式为文件传输 解决办法 在设备和打印机页面中右键选择属性 点击改变设置 卸载驱动,注意勾选删除设备的驱动程序软件 卸载后重新连接手机,电脑弹出希望对设备进行什么操作时…

家庭能耗监控系统

随着能源成本的不断上升和环保意识的增强,家庭能耗监控系统变得越来越重要。这种系统是智能家居技术的一部分,它使得家庭用户能够实时监视和管理其能源使用情况,从而达到节能减排的目的。 一、系统组成 家庭能耗监控系统通常由传感器、智能计…

FPGA_SD卡读写

一 SD卡 SD卡,安全数字卡,体积小,容量大,存储速度块,支持热插拔。 二 SD卡存储容量 SD卡类型协议规范容量等级SDSCSD1.0上限至2GBSDHCSD2.02GB至32GBSDXCSD3.032GB至2TB 三 SD卡速度等级 标志串列数据写入速度UHS…

Liunx 免费证书配置 带自动续期

安装完 nginx 之后 执行 yum install certbot 安装完后接着安装 python3-certbot-nginx 插件. 对于 Ubuntu/Debian 系统: sudo apt-get update sudo apt-get install certbot python3-certbot-nginx对于 CentOS/RHEL 系统: sudo yum install epel…