I2C

概述

I2C 通过 SCL 时钟线和 SDA 数据线完成芯片与外部从设备之间的同步串行通信,可用于寄存器访问和数据读写。G32S10 的 I2C0、I2C1、I2C2 已分别完成 EEPROM 写入及四档配置下的读回测试。

性能概览

最高已测配置档位为 3.4 Mbit/s;该档位下 I2C1 的 SCL 观测频率为 3.23 MHz,有效净荷读速率为 2.406467 Mbit/s。

以每次 64 字节、重复 200 次统计,I2C1 在该档位下的平均单次读取耗时为 212 μs。上拉条件见引脚与上拉条件。

总线时钟频率

三个控制器均已验证 100k、400k、1M、3.4M 四个配置档位。3.4M 档位下,SCL 观测频率为 2.56~3.23 MHz,随控制器和上拉条件而异。

配置档位I2C0 SCLI2C1 SCLI2C2 SCL
100k99.60 kHz99.90 kHz99.11 kHz
400k393.70 kHz398.41 kHz386.10 kHz
1M961.54 kHz980.39 kHz917.43 kHz
3.4M2.94 MHz3.23 MHz2.56 MHz

表中频率为逻辑分析仪在所选波形周期上的观测读数,采样率为 100 MHz。100k、400k、1M、3.4M 分别表示配置速率 100 kbit/s、400 kbit/s、1 Mbit/s、3.4 Mbit/s。

有效净荷读速率

3.4M 档位下,I2C1 的有效净荷读速率最高,约为 2.406 Mbit/s。各档位均以 64 字节为一次读取,连续统计 200 次,总净荷为 12,800 字节。

控制器配置档位有效净荷速率
(bit/s)
平均单次耗时
(μs)
I2C0100k82,6796,192
I2C0400k325,1201,574
I2C01M784,951652
I2C03.4M2,207,705231
I2C1100k82,9416,173
I2C1400k329,2041,555
I2C11M809,434632
I2C13.4M2,406,467212
I2C2100k82,2886,222
I2C2400k319,1591,604
I2C21M750,881681
I2C23.4M1,950,847262

有效净荷速率按总净荷位数除以实际传输总耗时统计,包含协议及软件开销。平均单次耗时按 200 次读取统计,不代表单次最大耗时。

EEPROM 端到端写吞吐

400k 档位下,三个控制器各写入 4 × 64 字节(共 256 字节),均约耗时 160.16 ms,端到端写吞吐均为 1,598 字节/秒。耗时包含 EEPROM 内部写周期等待,不能用作 I2C 总线传输速率上限。

测试条件

项目条件
芯片 / 时钟G32S10;APLL 800 MHz;I2C 输入时钟 100 MHz
计时时基CLINT / EXTAL,24 MHz
软件运行环境FreeRTOS
从设备EEPROM,7 位地址 0x50
验证方式I2C0、I2C1、I2C2 分别测试

引脚与上拉条件

控制器SCLSDA复用功能上拉电阻
I2C0PD05PD0411.8 kΩ
I2C1PB15PB141待确认
I2C2PC14PC1323.2 kΩ

上拉电阻会影响实际可达到的总线速率,应结合使用档位选择。I2C1 的上拉电阻单位存在不一致记录(750 Ω / 750 kΩ),复现测试前需确认实际阻值。

文档入口:查看 I2C 用户手册 · 查看 I2C SDK 文档。