首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >I2C 子系统(七)

I2C 子系统(七)

作者头像
Jasonangel
发布2022-10-25 21:15:38
1.2K0
发布2022-10-25 21:15:38
举报

7、I3C Protocol

本文讲解 I3C 协议规范的详细内容,从规范中可以看出,I3C 比 I2C 复杂很多,硬件简单带来的是软件的复杂。

对于 Linux 常用版本,kernel-4.14 和 kernel-4.19 并没有提供 I3C 驱动,kernel-5.10 有提供 I3C 驱动(从 kernel-5.0开始提供的)

如下可以在线查看 Linux 源码,目录/drivers/i3c/...

https://elixir.bootlin.com/linux/latest/source
Bus configuration

I3C 不仅支持多个从设备,还支持多个主设备。I3C 总线上可以支持的设备有:

  1. Main Master(当前主设备)
  2. Secondary master(辅助主设备)
  3. i3c Slave(i3c从设备)
  4. i2c Slave(i2c从设备)

I3C 特性寄存器描述并定义了 I3C 兼容设备在 I3C 总线上的 capabilities 和 functions,没有 I3C 特性寄存器的设备不得连接到公共I3C总线。

有三种特征寄存器类型:

  1. Bus Characteristics Register (BCR)
  2. Device Characteristics Register (DCR)
  3. Legacy Virtual Register (LVR)
Bus Communicaton

SDR 协议基于 I2C 标准协议,有几个显著的变化:

SDR Message

  1. 地址头中的地址是7'h7E(I3C广播地址)。所有 I3C 从设备应与地址值 7'h7E 匹配。
  2. 地址头中的地址与从机的动态地址匹配。所有 I3C 从机应匹配其自己的动态地址。

Role of I3C Slave

  1. 在分配动态地址之前,I3C从设备应作为I2C设备运行
  2. I3C START 和 STOP 在信号方面与 I2C START 和 STOP 相同,但在时序上可能不同。

I3C Address Header

  1. 支持带内中断
  2. 支持辅助主设备
  3. 支持热拔插 (热插拔特性可以让i3c从设备在不工作时处理睡眠或者关闭状态,需使用时才挂载到总线上使用,进一步达到降低功耗的目的)

I3C Address Arbitration

  1. 主设备和一个或多个从设备
  2. following a START (but not a Repeated START)
  3. Open Drain(whether Master or Slave)
  4. lower Addresses having higher Priority

Hot-Join Mechanism

  1. After a START, 7’b0000_010 + RnW(1’b0)
  2. 允许从设备在I3C总线配置完成后加入
  3. 热拔插设备可以是任何有效的从设备类型,包括辅助主设备

In-Band Interrupt

  1. After a START (but not a Repeated START) + Dynamic Address + RnW(1’b1)
  2. I3C 主设备提供 ack bits

Secondary Master Functions

  1. After a START (but not a Repeated START)+Dynamic Address +RnW(1’b0)
  2. 辅助主机保持控制总线,直到另一个主机被授予总线控制。
  3. defer some actions to a more capable Master(GETACCMST)

I3C Bus conditions

I3C总线应被视为不活动的三种不同情况:

  1. Bus Free Condition
  2. Bus Available Condition(tAVAL)
  3. Bus Idle Condition(tIDLE)

I3C 为主设备提供了一种机制,用于通知从属设备I3C总线上预期即将到来的活动级别:

总线初始化和动态地址分配模式

头地址是 7h7E(I3C 广播地址),所有的 I3C 从机将匹配 7h7E,任何的 I2C 从机设备将不会匹配此地址,因为这个地址在 I2C 中是保留的并且未使用。

Common Command Codes (CCC)

通用命令代码(CCC)是全球支持的命令,可以直接传输到特定的I3C从设备,也可以同时传输到所有I3C从设备。

CCC 命令分为四类:

  1. Broadcast Write
  2. Direct Read/Write
  3. Direct Write
  4. Direct Read

支持动态地址

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

支持多种通信模式

i3c支持4种通信模式,分别是 SDR、HDR-DDR、HDR-TSL、HDR-TSP,不同模式通信速率有差异。

SDR 很多 I3C 主控和设备支持,HDR 很多设备不支持,所以最常用的是 12.5MHz。

  1. SDR 模式:12.5Mbit/s
  2. HDR-DDR模式:25Mbit/s
  3. HDR-TSL模式:30 Mbit/s
  4. HDR-TSP模式:37.5 Mbit/s
I3C 应用场景
  1. 多传感器领域,节约总线 IO。
  2. 物联网领域,功耗低。
  3. 传统 i2c、spi、uart 设备接口中。
  4. camera、touch panel。
  5. i3c 向下兼容 i2c,可与传统 i2c 接口器件一起使用。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式Linux系统开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 7、I3C Protocol
    • Bus configuration
      • Bus Communicaton
        • 支持多种通信模式
          • I3C 应用场景
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档