# I2C-Inject — LT8619C 寄存器择机注入工具 > 更新:2026-09-03。由两部分组成:**RP2040 注入器固件**(`mcu-rp2040/`,刷入 > BPI-Pico-RP2040,MicroPython)+ **PC 端 GUI**(`i2c_inject_gui.py` / 打包版 > `I2C-Inject.exe`)。可在 LT8619C demo 板的 I2C 总线上安全地在线读写寄存器。 > 固件细节、刷写步骤与串口命令详见 [mcu-rp2040/README.md](mcu-rp2040/README.md)。 --- ## 1. 工作原理(为什么不会和 demo 板冲突) demo 板 MCU 每 ~500ms 轮询一次 LT8619C。注入器的时序: ``` 监听总线边沿 -> 等下一轮活动结束 -> 总线静置 50ms -> 发射 (切 bank -> 写 -> 读回校验), 失败自动重试 3 次 -> 立即释放总线回监听 ``` 静置窗口落在两次轮询之间的 ~490ms 空窗内,单次注入序列 <2ms,冲突概率趋近零; 即使撞上也表现为读回不符,自动重试覆盖。板载 LED:**常亮 = 监听中**,上电快闪 3 次 = 自检。 ## 2. 硬件准备 | RP2040 板 | 接 LT8619C 总线 | |---|---| | GP8(物理脚 11) | SDA | | GP9(物理脚 12) | SCL | | GND | GND | - **不接 VCC、不外加干扰**:总线由 demo 板自带上拉(先确认上拉为 3.3V) - 固件分两层:MicroPython 运行时 UF2 + 注入器应用脚本(上传为板上 `main.py` 自启动) ——完整刷写步骤、串口命令表、工作机制见 [mcu-rp2040/README.md](mcu-rp2040/README.md) - 固件内置 viper 编译的总线嗅探(`c [ms]` 命令,~3MHz 采样),串口回吐边沿数据可离线解码 I2C ## 3. GUI 使用 双击 `I2C-Inject.exe`(或 `python i2c_inject_gui.py [COMx]`): 1. **第一排左侧**:串口下拉 →"刷新"扫描 → 选中注入器端口 →"连接"(日志出现"已连接") 2. **第一排右侧**:输入 Bank/寄存器/值(十六进制)→ **写入**(自动读回校验)/**读取** 3. **0x606E 快捷块**(位交换,语义为 demo 板 LA 实测): - `00`=关交换;`20`=镜像 D[7:0](载蓝色分量的组,实测立即生效) - `40`/`80`=另外两组(demo 板未单独实测,自板点亮时验证) 4. **0x606D 快捷块**(RGB 整组顺序,蓝+红双色实测=手册 naive 读法): - `00 BGR / 03 BRG / 04 GBR / 05 GRB / 06 RBG / 07 RGB` - 字母串顺序 = D[23:16]/D[15:8]/D[7:0] 携带的分量;切换实时生效,不影响 HDMI 锁定 5. 回显格式:`=` 正常结果(绿色,含"读回=xx"校验值)、`!` 告警/失败(橙色) 6. 收尾:把改过的寄存器写回原值(0x606E 原值 00;0x606D 原值 07) ## 4. 已实测的寄存器事实速查(demo 板) | 寄存器 | 实测结论 | |---|---| | 0x606E | bit5(0x20)=镜像 D[7:0](蓝值组),立即生效、含消隐码;bit7(0x80) 对该组无效;稳态下写入可持续(实测 6.7s+),板子非稳态时 0.3~0.5s 内被刷回 00 → **先投图等稳态再写,写完立即读回确认** | | 0x606D | 000/001/010=BGR、011=BRG、100=GBR、101=GRB、110=RBG、111=RGB(字母串=D[23:16]/D[15:8]/D[7:0]),切换实时生效;demo 板 init 值 07 | ## 5. 目录内容 | 文件 | 用途 | |---|---| | `I2C-Inject.exe` | 打包好的单文件 PC 端 GUI(需 pyserial,已打包在内) | | `i2c_inject_gui.py` | PC 端 GUI 源码(`python build_exe.py` 重新打包) | | `mcu-rp2040/` | RP2040 总线端:注入器固件脚本 + MicroPython 运行时 UF2 + 刷写说明(README) | | `logos/` | 图标源文件与 `make_ico_i2c.py`(改 logo 后重跑再打包) | ## 6. 故障排查 - 写入回显 `OK 读回=xx` 但稍后读回变了 → demo 板把它刷回了(见 §4 稳态提醒),先确认 HDMI 已稳定出图 - 读寄存器 NAK/失败 → 检查三根接线与共地;用 `s` 命令看边沿计数是否在增长(增长=监听正常,总线有活动) - 串口列表空白 → 换 USB 口/检查设备管理器(应出现 `USB 串行设备`,VID_2E8A)