为了实现进一步的可编程性,可使用 I2C 来控制 HD3SS3220。HD3SS3220 本地 I2C 接口可在器件上电时的 x 个时钟周期后进行读取/写入。SCL 和 SDA 端子分别用于 I2C 时钟和 I2C 数据。如果 I2C 是首选的控制方法,则必须相应地设置 ADDR 引脚。
表 7-5 HD3SS3220 I2C 目标地址ADDR 引脚 | 位 7 (MSB) | 位 6 | 位 5 | 位 4 | 位 3 | 位 2 | 位 1 | 位 0 (W/R) |
---|
H | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0/1 |
L | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0/1 |
写入 HD3SS3220 I2C 寄存器时应遵循以下过程:
- 主器件通过生成启动条件 (S) 以及 HD3SS3220 7 位地址和一个用以指示写入周期的零值 R/W 位来启动写入操作。
- HD3SS3220 器件确认地址周期。
- 主器件提供要写入的子地址(HD3SS3220 器件中的 I2C 寄存器),其中包含一个字节的数据,MSB 在前。
- HD3SS3220 器件确认子地址周期。
- 主器件提供要写入 I2C 寄存器的数据的第一个字节。
- HD3SS3220 器件确认字节传输。
- 主器件可以继续提供要写入的额外字节的数据,每个字节传输都在 HD3SS3220 器件发出确认后完成。
- 主器件通过生成停止条件 (P) 来终止写入操作。
读取 HD3SS3220 I2C 寄存器时应遵循以下过程:
- 主器件通过生成启动条件 (S) 以及 HD3SS3220 7 位地址和一个用以指示读取周期的 R/W 位(值为 1)来启动读取操作。
- HD3SS3220 器件确认地址周期。
- HD3SS3220 器件从寄存器 00h 或上次读取的子地址的后一个地址开始传输存储器寄存器的内容,MSB 在前。如果写入 I2C 寄存器发生在读取之前,则 HD3SS3220 器件从写入中指定的子地址开始。
- 在每次字节传输后,HD3SS3220 器件会等待主器件发出确认 (ACK) 或不确认 (NACK);I2C 主器件确认接收到传输的每个数据字节。
- 如果接收到 ACK,HD3SS3220 器件将传输下一个字节的数据。
- 主器件通过生成停止条件 (P) 来终止读取操作。
为 I2C 读取设置起始子地址时应遵循以下过程:
- 主器件通过生成启动条件 (S) 以及 HD3SS3220 7 位地址和一个用以指示读取周期的零值 R/W 位来启动写入操作。
- HD3SS3220 器件确认地址周期。
- 主器件提供要读取的子地址(HD3SS3220 器件中的 I2C 寄存器),其中包含一个字节的数据,MSB 在前。
- HD3SS3220 器件确认子地址周期。
- 主器件通过生成停止条件 (P) 来终止读取操作。
注: 如果读取过程不包含子寻址,则读取操作从寄存器偏移 00h 开始并逐字节继续,直到 I2C 主器件终止读取操作为止。如果 I2C 地址写入发生在读取之前,则读取操作从地址写入指定的子地址开始。