Files
LT8619C_Debug_Tools/I2C-Inject/README.md
T

71 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# I2C-Inject — LT8619C 寄存器择机注入工具
> 更新:2026-09-03。由两部分组成:**RP2040 注入器固件**`mcu-rp2040/`,刷入
> BPI-Pico-RP2040MicroPython+ **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 原值 000x606D 原值 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