kp920+1711 I2C2作为I2C还是IPMB,寄存器需要复用吗

kp920+1711 I2C2作为I2C还是IPMB,寄存器需要复用吗

答案内容由AI生成,仅供参考:

结论

I2C2 作为 I2C 或 IPMB 取决于引脚复用配置,并非固定功能。 在您提供的图片中可以看到,SoC 侧的 SCL2/SDA2 引脚同时具有 I2C 与 IPMB 复用功能:

  • C12 SCL2/GPIO84/IPMB2_SCL
  • C11 SDA2/GPIO83/IPMB2_SDA

也就是说,I2C2 与 IPMB2 共用同一组 SCL2/SDA2 引脚。如果要把 I2C2 用作 IPMB2,就必须配置管脚复用寄存器,把该组引脚从 I2C 功能切换到 IPMB 功能。

点击此处查看详细分析解答

结论

I2C2 作为 I2C 或 IPMB 取决于引脚复用配置,并非固定功能。 在您提供的图片中可以看到,SoC 侧的 SCL2/SDA2 引脚同时具有 I2C 与 IPMB 复用功能:

  • C12 SCL2/GPIO84/IPMB2_SCL
  • C11 SDA2/GPIO83/IPMB2_SDA

也就是说,I2C2 与 IPMB2 共用同一组 SCL2/SDA2 引脚。如果要把 I2C2 用作 IPMB2,就必须配置管脚复用寄存器,把该组引脚从 I2C 功能切换到 IPMB 功能。

复用寄存器说明

根据 IPMB 调测经验,IPMB2 相关的复用寄存器定义如下:

寄存器 作用 取值含义
0x08745044 SDA2 管脚复用寄存器 3'b000:I2C2 数据信号;3'b011:IPMB2 数据信号
0x08745048 SCL2 管脚复用寄存器 3'b000:I2C2 时钟信号;3'b011:IPMB2 时钟信号
0x0874504c IPMB3 对应定义(SDA3 相关) 用于 IPMB3 复用配置
0x08745050 IPMB3 对应定义(SCL3 相关) 用于 IPMB3 复用配置

因此:

  • 作为普通 I2C2 使用时:SDA2/SCL2 复用寄存器应配置为 3'b000
  • 作为 IPMB2 使用时:SDA2/SCL2 复用寄存器应配置为 3'b011

软件侧配置要点

除了寄存器复用,IPMB 功能还需要软件配置配合,经验要点如下:

  1. IPMB.BusID 取值 0–3 对应 IIC 0–3,即 IIC2 对应 BusID = 2(对应 IPMB2)。
  2. ModuleID 配置决定了管脚复用配置是否正确,必须按平台定义配置。
  3. IPMB 作为 IPMB 使用时,IPMB、IPMIChannel、ChannelID 都要配置为 6。
  4. ChanType 配置为 1。
  5. IPMB 的 Instances 属性要与 IPMIChannel 的 Instance 对应。
  6. SlaveAddr 示例配置为 32。

示例(IPMB_2):

"IPMB_2": {
  "ChannelID": 6,
  "Instances": [5],
  "SlaveAddr": 32,
  "BusID": 2,
  "ModuleID": 26,
  "ResetType": 2,
  "ResetOption": 2
}

复用状态检查方法

可以使用 devmemx 读取相应寄存器确认复用状态:

./devmemx -r 0x08745034 0x08745050

经验文档中给出的示例结果为:

[0x8745034]=0x00000003
[0x8745038]=0x00000003
[0x874503C]=0x00000003
[0x8745040]=0x00000003
[0x8745044]=0x00000003
[0x8745048]=0x00000003
[0x874504C]=0x00000003
[0x8745050]=0x00000003

即对应寄存器均为 0x00000003,表示相关通道处于 IPMB 复用状态。若复用关系未正确配置,也可能出现 SMBus 时钟一直为低、i2c read fail, ret: 5 或 i2c write fail, ret: 5 等问题。

注意事项

上述寄存器地址与配置示例来自 Hi3093 平台的 IPMB 调测经验。对于 KP920 + 1711 平台,复用原理一致(I2C2 与 IPMB2 共用 SCL2/SDA2),但具体寄存器基址、ModuleID 取值仍需按 KP920+1711 平台的 pinmux 定义和硬件设计核对,不宜直接照搬 Hi3093 的地址与参数。图片中已体现 KP920 侧 SCL2/SDA2 与 IPMB2_SCL/IPMB2_SDA 的复用关系,可作为硬件侧确认依据。

但是我是kp920+1711我不知道配置的寄存器啊