I2C2iCB

简介

Nuclei I2C2ICB 使用I2C协议向ICB总线发送读写命令,并从ICB总线接收响应。它支持I2C协议的标准模式。

主要特性

I2C2ICB的主要特性如下:

  • 向ICB总线发送写入和读取命令,包括地址和数据。

  • 支持发送64位ICB总线地址。

  • 接收来自ICB总线的响应,包括数据和错误。

  • 默认支持I2C协议的标准模式。

    • I2C2ICB的CLK和SCL频率应满足:f_clk > 160 * f_scl

  • 支持SCL和SDA数字噪声滤波器。

功能描述

用户应先启用I2C2ICB接口(清除i2c2icb_dis),然后该接口将等待启动信号(当SCL为高电平且SDA出现下降沿时 START和STOP,第8页)。在接收到启动信号后,用户应发送8位命令(命令,第10页)。整个传输完成后,需发送停止信号(SCL为高电平且SDA出现上升沿 START和STOP)。

i2c2icb_cmd_timing

I2C2ICB开始和停止timing

  • ICB总线的读取流程如下:

注意:如果您无需访问64位icb地址,可直接跳至第5步。

发送ICB高地址[63:32]:

  1. 开始。

  2. 发送读取地址命令(0x72)。

  3. 发送32位地址数据,第1字节为地址[31:24],第2字节为地址[23:16],第3字节为地址[15:8],最后一字节为地址[7:0]。

  4. 停下。

发送ICB低地址[31:0]:

  1. 开始。

  2. 发送读取地址命令(0x78)。

  3. 发送32位地址数据,第1字节为地址[31:24],第2字节为地址[23:16],第3字节为地址[15:8],最后一字节为地址[7:0]。

  4. 停下。

获取ICB响应:

  1. 查询状态(步骤如下所述),您应持续查询,直至收到成功状态。

  2. 开始。

  3. 发送接收数据命令(0x75)。

  4. 接收4字节数据,第1字节为data[31:24],第2字节为data[23:16],第3字节为data[15:8],最后1字节为data[7:0]。

  5. 停止。

  • 查询状态的流程如下:

  1. 开始。

  2. 发送查询命令(0x71)。

  3. 接收4字节状态,仅使用最后两位比特来指示状态,如下表所示 状态(第9页)。

bit

Description

1

总线错误: 1: 存在总线错误。 0: 无总线错误。

0

是否收到响应: 1: 已收到响应。 0: 未收到响应。

从ICB总线写入

  • 向ICB总线写入的流程描述如下:

发送ICB W数据:

  1. 开始。

  2. 发送写数据命令(0x74)。

  3. 发送32位数据,第1字节为data[31:24],第2字节为data[23:16],第3字节为data[15:8],最后一字节为data[7:0]。

  4. 停止。

注意:如果您无需访问64位icb地址,可直接跳至第9步。

发送ICB高地址[63:32]:

  1. 开始。

  2. 发送写地址命令(0x72)。

  3. 发送32位地址数据,第1字节为地址[31:24],第2字节为地址[23:16],第3字节为地址[15:8],最后一字节为地址[7:0]。

  4. 停下。

发送ICB低地址[31:0]:

  1. 开始。

  2. 发送写地址命令(0x70)。

  3. 发送32位地址数据,第1字节为地址[31:24],第2字节为地址[23:16],第3字节为地址[15:8],最后一字节为地址[7:0]。

  4. 停下。

获取ICB响应

  1. 查询状态(步骤如上所述查询流程),应持续查询,直至收到成功状态。

所有命令的说明如下:

Code

Command

0x70

准备发送写低地址命令。

0x71

查询状态。

0x72

准备发送写/读高地址命令。

0x74

准备发送写数据命令。

0x75

准备从ICB总线接收数据命令。

0x78

准备发送读低地址命令。

注意: 此接口无法控制SCL;当i2c2icb_dis为高电平(禁用)时,SCL将保持高电平。