docs(屏板): 批 0 日志口定为 RS232#1(UART5),落定 CN1 端子与适配器要求

2026-10-29 用户裁定:台架线走 ST_TX1 / ST_RX1 这一对,即 RS232#1,
对应 UART5(PC12 / PD2)。此前文档把默认日志口写成 USART2(RS232#3),
与这次裁定不符,一并改掉。

网表核对(docs/硬件平台/V0.1.tel 逐段可查):

  PC12 -ST_TX1- U9.3 -> U9.6 -TX1- U13.11 -> U13.14 -RS232_TX1- CN1.12
  PD2  -ST_RX1- U9.2 <- U9.7 -RX1- U13.12 <- U13.13 -RS232_RX1- CN1.10

由此落定三件事:

1. 台架端子:适配器 TXD 接 CN1.10、RXD 接 CN1.12、GND 接 CN1.7 或
   CN1.8(CGND)。方向是交叉的——CN1.10 是板子的接收端。
2. RS232#1 没有 TTL 出口:ST_TX1 / ST_RX1 在网表里只连 U9 的 3 脚 /
   2 脚与 MCU 两个脚,既无连接器也无测试点。唯一外部出口是 CN1 的
   RS-232 端子,所以必须换 USB 转 RS-232 适配器;现有那根 TTL CH340
   直连不了,接上去轻则不通信、重则打坏 U13 或适配器。
3. U14 是 RS232#3 的网口座(3 脚 RS232_TX3 / 6 脚 RS232_RX3),本通道
   用不上。原文「改接 CN1(或 U14)」会把接线引到错误的通道上,删掉。

0-2 的目标端口随之从 huart2 收窄为 huart5(不再二选一)。huart5 现为
115200 8N1 / UART_MODE_TX_RX,业务代码无人使用,仅 Src/stm32f4xx_it.c:565
挂着 IRQ 入口;改 UART_MODE_TX 要在 .ioc 里做,Src/usart.c 是生成物。

改动面:屏板链路.md(决策二表、批 0 的 0-1 / 0-2、台架步骤 0、风险表各
一条)与产品需求设计文档.md 的 §9.13 物理前置段(原文同样写着「或 U14」)。
This commit is contained in:
2026-10-29 18:14:44 +08:00
parent 9191c1d966
commit 50c75eb516
2 changed files with 24 additions and 11 deletions
@@ -2572,7 +2572,10 @@ docs/任务规划/UI补齐.md §5);原「当前执行 6 项」(记录 5
>
> **一条物理前置 + 一条实现纪律**:
> ① **台架串口线挪位**——现在的 CH340/`COM6` 接在 USART1 调试口上,日志迁到 RS-232 侧后
> 必须改接到 CN1(或 U14),否则 `@test` 与 `serial-assistant` 全部抓不到日志,等于把台架弄瞎。
> 必须改接到 CN1 的 RS232#1 端子(`CN1.10` 接适配器 TXD、`CN1.12` 接适配器 RXD、`CN1.7` 或 `CN1.8` 接 GND),
> 否则 `@test` 与 `serial-assistant` 全部抓不到日志,等于把台架弄瞎。这些端子是 **RS-232 电平**,
> 须用 USB 转 RS-232 适配器,现有的 TTL CH340 直连不了;接法与端子出处见
> `docs/任务规划/屏板链路.md` §3 批 0。
> **这条要在第 16 条动代码之前完成。**
> ② **RX 要真的读、ORE 要真的清**——PA10 一直是接线的(§5.16.2),
> 但"RX 使能却不读 `DR`"本身就足以让 ORE 永久锁存。第 11 条实现时必须在
+20 -10
View File
@@ -17,10 +17,11 @@
| # | 项 | 实测 / 出处 | 后果 |
|---|---|---|---|
| 1 | **日志口占着 USART1** | `console_log.c` 里 `huart1` 5 处;自愈函数直写 `USART1_IRQn` / `MX_USART1_UART_Init()` | 两者共用同一个 `USART1->DR`,同时用就是互相插字节 → **日志必须先迁到 RS-232 通道** |
| 2 | **台架串口线接在 USART1 上** | CH340 → `COM6`,`@test` / `serial-assistant` 都靠它抓日志 | 日志一迁,台架立刻瞎 → **先把线挪到 RS-232 侧(CN1)再动代码** |
| 2 | **台架串口线接在 USART1 上** | TTL 的 CH340 → `COM6`,`@test` / `serial-assistant` 都靠它抓日志 | 日志一迁,台架立刻瞎 → **先把线挪到 RS-232 侧(CN1)再动代码**;且这根 TTL 模块挪不过去,须换 **USB 转 RS-232 适配器**(见 §2 决策二) |
**执行顺序因此是**:挪台架线 → 迁日志口 → 才开始写屏板链路。
第一步是拧螺丝,第二步约 20 行代码(§3 批 0),第三步才是屏板链路的开发批次。
第一步是**换一个 USB 转 RS-232 适配器 + 接三个端子**(纯硬件,不碰代码),第二步约 20 行代码(§3 批 0),
第三步才是屏板链路的开发批次。
---
@@ -97,13 +98,21 @@
| 端口 | 引脚 | V0.1 板上通道 | 重排后用途 |
|---|---|---|---|
| **USART1** | PA9 / PA10 | 调试口 + U5 直连 TTL(ST_TX0/RX0) | ✅ **屏板链路** |
| **USART2** | PD5 / PD6 | **RS232#3**(U10 隔离 → U13 TPT3232E → CN1) | ✅ **日志**(默认) |
| UART5 | PC12 / PD2 | **RS232#1**(U9 隔离 → U13 → CN1) | 备选日志口 |
| **UART5** | PC12 / PD2 | **RS232#1**(ST_TX1/ST_RX1 → U9 隔离 → U13 TPT3232E → CN1.10/CN1.12) | ✅ **日志**(2026-10-29 已定) |
| USART2 | PD5 / PD6 | **RS232#3**(ST_TX3/ST_RX3 → U10 隔离 → U13 → CN1.9/CN1.11;另有网口座 `U14` 同信号) | 备选日志口 |
| USART3 | PB10 / PB11 | U5 直连 TTL(ST_TX2/RX2) | 空闲 |
**日志口选 USART2 还是 UART5**:两者都经隔离器 → `U13` TPT3232E → CN1,能力等价;
控制台是**只发不收、寄存器轮询**,DMA 也用不上,所以挑哪个只取决于**现场把 CH340 接到哪个端子**。
默认写 **USART2(RS232#3)**;若实际接的是 RS232#1,就换成 `huart5`——**迁移时收口成一处宏,别散改**。
**日志口已定为 UART5(RS232#1)**——2026-10-29 用户裁定,理由是**台架那根线落在哪个端子**,不是能力差异:
两条 RS232 通道都经隔离器 → `U13` TPT3232E → CN1,控制台又是**只发不收、寄存器轮询**,DMA 也用不上。
选定的 `ST_TX1` / `ST_RX1` 就是 RS232#1 在 MCU 侧的网络名(PC12 / PD2,UART5)。
> ⚠ **RS232#1 没有 TTL 出口**:`ST_TX1` / `ST_RX1` 在网表里只连 `U9` 的 3 脚 / 2 脚与 MCU 两个脚,
> **既无连接器也无测试点**;唯一外部出口是 CN1 的 RS-232 端子。所以台架**必须用 USB 转 RS-232 适配器**,
> 现有的 TTL CH340 接不上去(接上去轻则不通信,重则打坏 `U13` 或适配器)。
> 另:`U14` 是 RS232#3 的网口座(3 脚 `RS232_TX3` / 6 脚 `RS232_RX3`),**本通道用不上**——别把它当成备选端子。
**迁移时收口成一处端口宏,别散改**:`huart5` 现在是 `115200 8N1 / UART_MODE_TX_RX`(`Src/usart.c:74-81`),
业务代码里没人用,只有 `Src/stm32f4xx_it.c:565` 挂着 IRQ 入口。
> ⚠ **USART1 交接前必须确认两件事**:① 控制台已不再写 `USART1->DR`(否则两条流互相插字节,
> 症状是"屏板偶尔花屏 + 日志偶尔乱码",很容易误判成 CRC 或时序问题);
@@ -185,8 +194,8 @@
| 序 | 任务 | 改动点 | 判据 |
|---|---|---|---|
| 0-1 | **台架串口线挪位** | 硬件:CH340 从 USART1 调试口改接 CN1 的 RS-232 端(或 U14) | `serial-assistant` 在 RS-232 侧能收到日志 |
| 0-2 | **日志口迁移(USART1 → RS-232)** | ① `console_log.c` 的 `huart1`、`USART1_IRQn`、`__HAL_RCC_USART1_CLK_*`、`MX_USART1_UART_Init()` 收口成**一处端口宏**,指向 `huart2`(RS232#3)或 `huart5`(RS232#1);② 该实例改 **`UART_MODE_TX`**(只发不收,把 RX 从机制上摘掉) | 日志在 RS-232 侧可读、内容与迁移前一致;连续 10 min 无 ORE 锁存、无 `[ERR]`;USART1 完全空出 |
| 0-1 | **台架串口线挪位** | 硬件:**换成 USB 转 RS-232 适配器**(TTL 的 CH340 直连不了),接 RS232#1 的三个端子——适配器 TXD → **CN1.10**(板子 `RS232_RX1`)、RXD → **CN1.12**(板子 `RS232_TX1`)、GND → **CN1.7 或 CN1.8**(`CGND`)。端子号出自 `docs/硬件平台/V0.1.tel`;`U14` 是 RS232#3 的网口座,本通道用不上 | `serial-assistant` 在 RS-232 侧能收到日志 |
| 0-2 | **日志口迁移(USART1 → RS-232)** | ① `console_log.c` 的 `huart1`、`USART1_IRQn`、`__HAL_RCC_USART1_CLK_*`、`MX_USART1_UART_Init()` 收口成**一处端口宏**,指向 **`huart5`(RS232#1,已定)**;② 该实例改 **`UART_MODE_TX`**(只发不收,把 RX 从机制上摘掉)——`huart5` 现为 `UART_MODE_TX_RX`,**改在 `.ioc` 里**(`Src/usart.c` 是 CubeMX 生成物,只写 USER CODE) | 日志在 RS-232 侧可读、内容与迁移前一致;连续 10 min 无 ORE 锁存、无 `[ERR]`;USART1 完全空出 |
| 0-3 | **落定 USART1 到屏板的接线** | 按决策一:TTL 直连屏板 UART2 侧(PA2/PA3);把线束接法与验收方式写清楚 | 接法落纸;照此接线后屏板发来的 6 B 召唤帧能被收到 |
> PA10 已接线(用户 2026-10-28 确认),屏板链路**不需要额外飞线**。
@@ -317,7 +326,7 @@ stub 提供 HAL)。屏板侧 CRC 有查表实现,**用同一张表做交叉
| 步 | 做什么 | 需要什么 | 停下也能交付什么 |
|---|---|---|---|
| 0 | **腾位置**:CH340 挪到 RS-232 侧、日志迁走 | 改接串口线 | USART1 空出来,日志照旧能看(批 0) |
| 0 | **腾位置**:串口线挪到 RS-232 侧、日志迁走 | 改接串口线 + 一个 **USB 转 RS-232 适配器** | USART1 空出来,日志照旧能看(批 0) |
| 1 | 协议层单测(`test/host/screenlink/`) | 无硬件 | CRC 与组帧的正确性,可回归 |
| 2 | PC 串口助手**模拟屏板**:手发 6 B 召唤帧,看主机回的 4208 B | **USB 转 TTL 模块**接 USART1(PA9/PA10)+ 主机板 | 主机侧协议 100 % 可验证 |
| 3 | 反向:PC 收主机帧,用脚本核对 4208 B / CRC / 显存内容 | 同上 | 帧内容正确性(与 `g_ui_fbuf` 逐字节比) |
@@ -334,6 +343,7 @@ stub 提供 HAL)。屏板侧 CRC 有查表实现,**用同一张表做交叉
| 风险 | 触发条件 | 影响 | 回退/应对 |
|---|---|---|---|
| **日志迁移把台架弄瞎** | 先改代码、后挪串口线 | 什么都看不到,误以为固件挂了 | 顺序钉死:0-1 先挪线、0-2 再改代码;改完先跑一次 `@test` |
| **TTL 适配器直插 CN1** | 沿用那根 CH340 去接 RS-232 端子 | 不通信,且 RS-232 的 ±电平可能打坏 `U13` 或适配器 | 0-1 已写死「换 USB 转 RS-232 适配器」;RS232#1 无 TTL 出口,只能走电平转换后的 CN1 |
| **控制台与屏板链路抢 `USART1->DR`** | 日志没迁干净就接屏板 | 屏板花屏 + 日志乱码,像 CRC / 时序错 | 0-2 的判据明确要求"USART1 完全空出" |
| **一次噪声后链路永久静默** | 错误回调里不清 ORE | 屏板召唤再也收不到,症状与"协议不对"完全一样 | 1-3 判据含"拔插 TX 线制造噪声后自动恢复" |
| **日志口又染上 ORE 锁存** | 新日志口照抄 `UART_MODE_TX_RX` | 控制台静默、看门狗误复位(老病复发) | 新日志口设 `UART_MODE_TX`;判据含"连续 10 min 无 ORE" |