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 SCL | I2C1 SCL | I2C2 SCL |
|---|---|---|---|
| 100k | 99.60 kHz | 99.90 kHz | 99.11 kHz |
| 400k | 393.70 kHz | 398.41 kHz | 386.10 kHz |
| 1M | 961.54 kHz | 980.39 kHz | 917.43 kHz |
| 3.4M | 2.94 MHz | 3.23 MHz | 2.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) |
|---|---|---|---|
| I2C0 | 100k | 82,679 | 6,192 |
| I2C0 | 400k | 325,120 | 1,574 |
| I2C0 | 1M | 784,951 | 652 |
| I2C0 | 3.4M | 2,207,705 | 231 |
| I2C1 | 100k | 82,941 | 6,173 |
| I2C1 | 400k | 329,204 | 1,555 |
| I2C1 | 1M | 809,434 | 632 |
| I2C1 | 3.4M | 2,406,467 | 212 |
| I2C2 | 100k | 82,288 | 6,222 |
| I2C2 | 400k | 319,159 | 1,604 |
| I2C2 | 1M | 750,881 | 681 |
| I2C2 | 3.4M | 1,950,847 | 262 |
有效净荷速率按总净荷位数除以实际传输总耗时统计,包含协议及软件开销。平均单次耗时按 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 分别测试 |
引脚与上拉条件
| 控制器 | SCL | SDA | 复用功能 | 上拉电阻 |
|---|---|---|---|---|
| I2C0 | PD05 | PD04 | 1 | 1.8 kΩ |
| I2C1 | PB15 | PB14 | 1 | 待确认 |
| I2C2 | PC14 | PC13 | 2 | 3.2 kΩ |
上拉电阻会影响实际可达到的总线速率,应结合使用档位选择。I2C1 的上拉电阻单位存在不一致记录(750 Ω / 750 kΩ),复现测试前需确认实际阻值。
文档入口:查看 I2C 用户手册 · 查看 I2C SDK 文档。