.. _ip_trace_debug_i2c2icb: 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)。 .. figure:: /assets/images/i2c2icb_cmd_timing.png :alt: i2c2icb_cmd_timing :height: 150px :align: center 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]: 5. 开始。 6. 发送读取地址命令(0x78)。 7. 发送32位地址数据,第1字节为地址[31:24],第2字节为地址[23:16],第3字节为地址[15:8],最后一字节为地址[7:0]。 8. 停下。 获取ICB响应: 9. 查询状态(步骤如下所述),您应持续查询,直至收到成功状态。 10. 开始。 11. 发送接收数据命令(0x75)。 12. 接收4字节数据,第1字节为data[31:24],第2字节为data[23:16],第3字节为data[15:8],最后1字节为data[7:0]。 13. 停止。 - 查询状态的流程如下: 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]: 5. 开始。 6. 发送写地址命令(0x72)。 7. 发送32位地址数据,第1字节为地址[31:24],第2字节为地址[23:16],第3字节为地址[15:8],最后一字节为地址[7:0]。 8. 停下。 发送ICB低地址[31:0]: 9. 开始。 10. 发送写地址命令(0x70)。 11. 发送32位地址数据,第1字节为地址[31:24],第2字节为地址[23:16],第3字节为地址[15:8],最后一字节为地址[7:0]。 12. 停下。 获取ICB响应 13. 查询状态(步骤如上所述查询流程),应持续查询,直至收到成功状态。 所有命令的说明如下: ====== ======================================================================== Code Command ====== ======================================================================== 0x70 准备发送写低地址命令。 0x71 查询状态。 0x72 准备发送写/读高地址命令。 0x74 准备发送写数据命令。 0x75 准备从ICB总线接收数据命令。 0x78 准备发送读低地址命令。 ====== ======================================================================== **注意: 此接口无法控制SCL;当i2c2icb_dis为高电平(禁用)时,SCL将保持高电平。**