diff --git a/docs/硬件平台/V0.0_网表语义图.md b/docs/硬件平台/V0.0_网表语义图.md new file mode 100644 index 00000000..16f5f9e7 --- /dev/null +++ b/docs/硬件平台/V0.0_网表语义图.md @@ -0,0 +1,1172 @@ +# V0.0 网表语义图(自动生成) + +> 由 `tools/netlist_semantics/netlist_sem.py` 从 `V0.0.tel` + `pinout_kb.json` 生成。 +> 网表仅含位号/引脚号/网名;MPN 与信号语义由知识库补全。 +> 注意:KiCad 符号引脚号为任意编号(非数据手册脚号,如 U17.133=PB3),引脚功能以【网名+知识库】为准。 + +## 1. 概览 + +- 元件位号: 236 组 / 网络: 250 条 +- 地网络: 12 / 电源轨: 8 / 未命名(内部)网: 51 + +## 2. 电源与地 + +| 网络 | 类别 | 连接引脚数 | 主要去向 | +|---|---|---|---| +| 3.3V | POWER | 94 | U1, U16, U17, U18, … / 61×被动件 | +| 5V | POWER | 10 | U6, U7 / 8×被动件 | +| AVCC | POWER | 11 | U3 / 7×被动件 | +| AVDDL | POWER | 18 | U2 / 9×被动件 | +| C3.3V | POWER | 13 | U10, U11, U13, U15, … / 7×被动件 | +| G3.3V | POWER | 14 | U10, U11, U6, U9 / 9×被动件 | +| STM_VDDA | POWER | 5 | U17 / 3×被动件 | +| VDD50 | POWER | 7 | U5 / 4×被动件 | +| AGND | GND | 39 | U17, U3 / 30×被动件 | +| CGND | GND | 25 | U10, U11, U12, U13, … / 13×被动件 | +| GND | GND | 145 | U1, U10, U11, U14, … / 97×被动件 | +| PGND | GND | 10 | U14, U20, U21, U22 / 2×被动件 | +| ADC1_GND | GND | 3 | U3 / 2×被动件 | +| ADC2_GND | GND | 3 | U3 / 2×被动件 | +| ADC3_GND | GND | 3 | U3 / 2×被动件 | +| ADC4_GND | GND | 3 | U3 / 2×被动件 | +| ADC5_GND | GND | 3 | U3 / 2×被动件 | +| ADC6_GND | GND | 3 | U3 / 2×被动件 | +| ADC7_GND | GND | 3 | U3 / 2×被动件 | +| ADC8_GND | GND | 3 | U3 / 2×被动件 | + +## 3. 接口与总线 + +### 子板接口 (U18) + +U17 ↔ U18 74LVC16245 ↔ U5 WINGTAT 子板(继电器/告警/状态/外键) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| CF_P | CF 通信 P U5→U14/CN1 | U5.A9, U14.1 | +| CF_Q | CF 通信 Q U5→U14/CN1 | U5.B9, U14.2 | +| CLZ_LED | 子板状态 LED(闭锁) | U5.C5, U18.20 | +| ERT_LED | 子板状态 LED | U5.A13, U18.13 | +| HT_A23 | 子板信号 HT | U5.B12, U18.19 | +| HT_A26 | 子板信号 HT | U5.A14, U18.9 | +| HT_C25 | 子板信号 HT | U5.B14, U18.11 | +| HT_C26 | 子板信号 HT | U5.A11, U18.22 | +| HT_C27 | 子板信号 HT | U5.B11, U18.23 | +| RELAY_STO | 继电器控制 U17→U18→U5 | U5.A12, U18.17 | +| RUN_LED | 子板状态 LED(运行) | U5.C2, U18.8 | +| ST_IN_C3 | 子板输入 | U17.2, U18.3 | +| ST_IN_D4 | 子板输入 | U17.1, U18.2 | +| ST_IN_E4 | 子板输入 | U17.3, U18.5 | +| TRIP_LED | 子板状态 LED(跳闸) | U5.C3, U18.12 | +| V_ZL1 | 电压测量1→ADC16 | R51.1, U5.A7 | +| V_ZL2 | 电压测量2→ADC17 | R52.1, U5.C11 | +| DQM0 | FSMC DQM0(子板侧) | U17.96, U18.32 | +| DQM1 | FSMC DQM1(子板侧) | U17.98, U18.29 | +| EXTKI1 | 外部按键输入1 U5→U18→U17 | U5.C1, U18.44 | +| EXTKI2 | 外部按键输入2 U5→U18→U17 | U5.B16, U18.46 | +| EXTKI3 | 外部按键输入3 U5→U18→U17 | U5.A16, U18.47 | +| EXTKO1 | 外部按键输出1 U17→U18→U5 | U5.B13, U18.14 | +| EXTKO2 | 外部按键输出2 U17→U18→U5 | U5.C4, U18.16 | +| EXTKO3 | 外部按键输出3 U17→U18→U5 | U5.A15, U18.6 | +| F3 | 子板信号 | U17.82, U18.38 | +| H16 | 子板信号 | U17.79, U18.43 | +| J3 | 子板信号 | U17.81, U18.40 | +| K3 | 子板信号 | U17.86, U18.36 | +| R16 | 子板信号 | U17.85, U18.37 | +| RAS | FSMC RAS(子板侧) | U17.99, U18.27 | +| SDCKE | FSMC CKE(子板侧) | U17.109, U18.26 | +| V15 | 子板信号 | U17.80, U18.41 | +| WAIT1 | FSMC WAIT(子板侧) | U17.97, U18.30 | + +### SPI-ETH (SPI2) + +U17 SPI2 → U1 CH395F(SPI 以太网) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| CH395F_SCK | SPI2_SCK PB13 | U1.30, U17.74 | +| CH395F_SCS | SPI2_NSS PB12 | U1.29, U17.73 | +| CH395F_SDI | SPI2_MOSI PB15 | U1.31, U17.76 | +| CH395F_SDO | SPI2_MISO PB14 | U1.32, U17.75 | + +### 状态指示 + +板级 LED / PHY 中断 / 显示控制 + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| DIS_EEE | 显示/EEE 指示 U2→R6→LED1 | J1.10, R6.2, U2.29 | +| INT | CH395F 中断 U1→U17 | U1.15, U17.4 | +| LED1 | 板级 LED1 PC4 低有效;顺序按 AGENTS.md 待核 | LED5.1, U17.44 | +| LED2 | 板级 LED2 PC5 低有效 | LED6.1, U17.45 | +| LED3 | 板级 LED3 PB1 低有效 | LED7.1, U17.47 | +| LED4 | 板级 LED4 PB2 低有效 | LED8.1, U17.48 | +| LED5 | 板级 LED5 PF11 低有效 | LED9.1, U17.49 | +| LED6 | 板级 LED6 PF12 低有效 | LED10.1, U17.50 | +| PBLED | PHY 活动 LED U2→R2→LED | R2.2, U2.30 | + +### SPI-NAND (SPI1) + +U17 SPI1 → U18 74LVC16245 → U19 GD5F2GQ5UE NAND(双向缓冲) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| GD_CS | SPI1_NSS PE0 →U19 CS | R43.2, U17.141, U19.1 | +| GD_HOLD | HOLD PE1 →U19 HOLD | U17.142, U19.7 | +| GD_SCLK | SPI1_SCK PB3 →U19 SCK | U17.133, U19.6 | +| GD_SI | SPI1_MOSI PB5 →U19 SI | U17.135, U19.5 | +| GD_SO | SPI1_MISO PB4 U19 SO← | U17.134, U19.2 | +| GD_WP | 写保护 PB8 →U19 WP | U17.139, U19.3 | +| SPI1_SIMO | SPI1 MISO(子板侧) 经 U18 16245←子板;GPIO 待核 | U17.78, U18.35 | +| SPI1_SOMI | SPI1 MOSI(子板侧) 经 U18 16245→子板;GPIO 待核 | U17.77, U18.33 | + +### LCD 8080 并口 + +U17 FSMC → H1 16P 排针 → 板外 LCD(16bit 8080 并口) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| LCD_BK | 背光 U17→H1 | H1.15, U17.28 | +| LCD_CD | 数据/命令 (ALE) U17→H1 | H1.6, U17.27 | +| LCD_CS | 片选 U17→H1 | H1.5, U17.26 | +| LCD_DB0 | 8080 数据 D0 U17 FSMC→H1 | H1.7, U17.10 | +| LCD_DB1 | 8080 数据 D1 U17 FSMC→H1 | H1.8, U17.11 | +| LCD_DB2 | 8080 数据 D2 U17 FSMC→H1 | H1.9, U17.12 | +| LCD_DB3 | 8080 数据 D3 U17 FSMC→H1 | H1.10, U17.13 | +| LCD_DB4 | 8080 数据 D4 U17 FSMC→H1 | H1.11, U17.14 | +| LCD_DB5 | 8080 数据 D5 U17 FSMC→H1 | H1.12, U17.15 | +| LCD_DB6 | 8080 数据 D6 U17 FSMC→H1 | H1.13, U17.18 | +| LCD_DB7 | 8080 数据 D7 U17 FSMC→H1 | H1.14, U17.19 | +| LCD_RD | 读 U17→H1 | H1.4, U17.22 | +| LCD_RST | 复位 U17→H1 | H1.2, U17.20 | +| LCD_WR | 写 U17→H1 | H1.3, U17.21 | + +### RS-232 + +U9/U10 隔离 → U13 双通道 232 收发器 → RS232 总线(CN1 / U14) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| RS232_RX1 | 232 ch1 总线 CN1/U14→U13 | CN1.10, D6.2, U13.13 | +| RS232_RX3 | 232 ch3 总线 CN1/U14→U13 | CN1.9, D3.2, U13.8, U14.6 | +| RS232_TX1 | 232 ch1 总线 U13→CN1/U14 | CN1.12, D5.2, U13.14 | +| RS232_TX3 | 232 ch3 总线 U13→CN1/U14 | CN1.11, D4.2, U13.7, U14.3 | +| RX1 | 232 ch1 RX(隔离后) U13→U9 | U9.7, U13.12 | +| RX3 | 232 ch3 RX(隔离后) U13→U10 | U10.7, U13.9 | +| TX1 | 232 ch1 TX(隔离后) U9→U13 | U9.6, U13.11 | +| TX3 | 232 ch3 TX(隔离后) U10→U13 | U10.6, U13.10 | + +### RS-485 + +U11 信号隔离 + U8 光耦(DIR) → U15 TP8485E → U12 ESD → CN1 485 总线 + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| RS485_A | 485 A 线 U15→U12 ESD→CN1 | CN1.4, U12.2, U15.6 | +| RS485_B | 485 B 线 U15→U12 ESD→CN1 | CN1.2, U12.1, U15.7 | +| DIR4 | 485 方向(隔离后) U8→U15 | R35.2, U8.4, U15.2, U15.3 | +| RX4 | 485 RX(隔离后) U15→U11 | U11.7, U15.1 | +| TX4 | 485 TX(隔离后) U11→U15 | U11.6, U15.4 | + +### 以太网 MDI + +U2 RTL8305 双口 MDI → T1 网络变压器 + J1/J2 RJ45(端口A/B);U1 CH395F 侧为无名网 + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| RX_N | MDI 差分(U2↔T1) | T1.8, U2.15 | +| RX_P | MDI 差分(U2↔T1) | T1.6, U2.14 | +| RXA_N | 端口A MDI(U2↔J1) | J1.2, U2.45 | +| RXA_P | 端口A MDI(U2↔J1) | J1.1, U2.44 | +| RXB_N | 端口B MDI(U2↔J2) | J2.2, U2.3 | +| RXB_P | 端口B MDI(U2↔J2) | J2.1, U2.2 | +| TX_N | MDI 差分(U2↔T1) | T1.3, U2.16 | +| TX_P | MDI 差分(U2↔T1) | T1.1, U2.17 | +| TXA_N | 端口A MDI(U2↔J1) | J1.6, U2.46 | +| TXA_P | 端口A MDI(U2↔J1) | J1.3, U2.47 | +| TXB_N | 端口B MDI(U2↔J2) | J2.6, U2.4 | +| TXB_P | 端口B MDI(U2↔J2) | J2.3, U2.5 | + +### I2C-时钟 + +U17 I2C → U16 SD2506 时钟/RTC 芯片 + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| SD_SCL | I2C SCL →U16 SD2506 | R36.2, U16.6, U17.136 | +| SD_SDA | I2C SDA →U16 SD2506 | R37.2, U16.5, U17.137 | + +### UART-ST + +U17 USART → U9/U10/U11 隔离器 → RS232/RS485 通道 + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| ST_DIR4 | 485 方向 DE PD0 →U8 光耦 | U8.2, U17.114 | +| ST_RX0 | USART ch0 RX ←子板 (U5 B10) | U5.B10, U17.102 | +| ST_RX1 | USART ch1 RX ←U9 隔离←232 ch1 | U9.2, U17.122 | +| ST_RX2 | USART ch2 RX ←子板 (U5 C6) | U5.C6, U17.70 | +| ST_RX3 | USART ch3 RX ←U10 隔离←232 ch3 | U10.2, U17.112 | +| ST_RX4 | UART5_RX(485) PD2 ←U11 隔离 | U11.2, U17.116 | +| ST_TX0 | USART ch0 TX →子板 (U5 A10) | U5.A10, U17.101 | +| ST_TX1 | USART ch1 TX →U9 隔离→232 ch1 | U9.3, U17.119 | +| ST_TX2 | USART ch2 TX →子板 (U5 C7) | U5.C7, U17.69 | +| ST_TX3 | USART ch3 TX →U10 隔离→232 ch3 | U10.3, U17.111 | +| ST_TX4 | UART5_TX(485) PC12 →U11 隔离 | U11.3, U17.113 | + +### ADC 并口 + +U17 FSMC 读 ↔ U3 TPAFE5160(16bit + 控制线) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| TP_BUSY | 忙 PD7 | U3.14, U17.123 | +| TP_CONVST | 转换启动 PD4 | U3.9, U3.10, U17.118 | +| TP_FRSTDATA | 首数据 经 R24 | R24.1, U17.115 | +| TP_OS0 | 输出选择 OS0 | U3.3, U17.53 | +| TP_OS1 | 输出选择 OS1 | U3.4, U17.54 | +| TP_OS2 | 输出选择 OS2 | U3.5, U17.55 | +| TP_RD | 读控制 (FSMC) PD3 | U3.12, U17.117 | +| DB0 | FSMC 数据 D0 PG0 U17↔U3 | U3.16, U17.56 | +| DB1 | FSMC 数据 D1 PG1 | U3.17, U17.57 | +| DB10 | FSMC 数据 D10 PG10 | U3.28, U17.125 | +| DB11 | FSMC 数据 D11 PG11 | U3.29, U17.126 | +| DB12 | FSMC 数据 D12 PG12 | U3.30, U17.127 | +| DB13 | FSMC 数据 D13 PG13 | U3.31, U17.128 | +| DB14 | FSMC 数据 D14 PG14 | U3.32, U17.129 | +| DB15 | FSMC 数据 D15 PG15 | U3.33, U17.132 | +| DB2 | FSMC 数据 D2 PG2 | U3.18, U17.87 | +| DB3 | FSMC 数据 D3 PG3 | U3.19, U17.88 | +| DB4 | FSMC 数据 D4 PG4 | U3.20, U17.89 | +| DB5 | FSMC 数据 D5 PG5 | U3.21, U17.90 | +| DB6 | FSMC 数据 D6 PG6 | U3.22, U17.91 | +| DB7 | FSMC 数据 D7 PG7 | U3.24, U17.92 | +| DB8 | FSMC 数据 D8 PG8 | U3.25, U17.93 | +| DB9 | FSMC 数据 D9 PG9 | U3.27, U17.124 | + +### ADC 输入 + +U3 TPAFE5160 8 通道输入(经 R 分压/保护至 AIN) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| ADC1 | TPAFE5160 通道1 | C29.2, R12.2, U3.49 | +| ADC10 | STM32 ADC 通道10 | C103.2, R46.2, U17.35 | +| ADC11 | STM32 ADC 通道11 | C104.2, R48.2, U17.36 | +| ADC12 | STM32 ADC 通道12 | C105.2, R20.2, U17.37 | +| ADC13 | STM32 ADC 通道13 | C106.2, R45.2, U17.40 | +| ADC14 | STM32 ADC 通道14 | C107.2, R47.2, U17.41 | +| ADC15 | STM32 ADC 通道15 | C108.2, R49.2, U17.42 | +| ADC16 | STM32 ADC 通道16 | C110.2, R51.2, U17.43 | +| ADC17 | STM32 ADC 通道17 | C111.2, R52.2, U17.46 | +| ADC2 | TPAFE5160 通道2 | C34.2, R17.2, U3.51 | +| ADC3 | TPAFE5160 通道3 | C35.2, R19.2, U3.53 | +| ADC4 | TPAFE5160 通道4 | C36.2, R23.2, U3.55 | +| ADC5 | TPAFE5160 通道5 | C38.2, R26.2, U3.57 | +| ADC6 | TPAFE5160 通道6 | C43.2, R28.2, U3.59 | +| ADC7 | TPAFE5160 通道7 | C44.2, R31.2, U3.61 | +| ADC8 | TPAFE5160 通道8 | C30.2, R13.2, U3.63 | +| ADC9 | STM32 ADC 通道9 | C101.2, R5.2, U17.34 | +| AIN1 | 子板模拟输入→ADC1 | R12.1, U5.A3 | +| AIN10 | 子板模拟输入→ADC10 | R46.1, U5.C9 | +| AIN11 | 子板模拟输入→ADC11 | R48.1, U5.C10 | +| AIN12 | 子板模拟输入→ADC12 | R20.1, U5.B3 | +| AIN13 | 子板模拟输入→ADC13 | R45.1, U5.A6 | +| AIN14 | 子板模拟输入→ADC14 | R47.1, U5.C12 | +| AIN15 | 子板模拟输入→ADC15 | R49.1, U5.B4 | +| AIN2 | 子板模拟输入→ADC2 | R17.1, U5.B7 | +| AIN3 | 子板模拟输入→ADC3 | R19.1, U5.C14 | +| AIN4 | 子板模拟输入→ADC4 | R23.1, U5.A4 | +| AIN5 | 子板模拟输入→ADC5 | R26.1, U5.B6 | +| AIN6 | 子板模拟输入→ADC6 | R28.1, U5.C13 | +| AIN7 | 子板模拟输入→ADC7 | R31.1, U5.A5 | +| AIN8 | 子板模拟输入→ADC8 | R13.1, U5.B5 | +| AIN9 | 子板模拟输入→ADC9 | R5.1, U5.A8 | + +### 按键 + +U17 GPIO 按键(上拉 3.3V,低有效) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| KEY1 | 按键1 上拉 3.3V | R44.1, SW2.3, SW2.4, U17.58 | +| KEY2 | 按键2 上拉 3.3V | R50.1, SW3.3, SW3.4, U17.59 | +| KEY3 | 按键3 上拉 3.3V | R53.1, SW4.3, SW4.4, U17.60 | +| KEY4 | 按键4 上拉 3.3V | R54.1, SW5.3, SW5.4, U17.63 | +| KEY5 | 按键5 上拉 3.3V | R55.1, SW6.3, SW6.4, U17.64 | +| KEY6 | 按键6 上拉 3.3V | R56.1, SW7.3, SW7.4, U17.65 | +| KEY7 | 按键7 上拉 3.3V | R57.1, SW8.3, SW8.4, U17.66 | +| KEY8 | 按键8 上拉 3.3V | R58.1, SW9.3, SW9.4, U17.67 | + +### SWD/JTAG 调试 + +U17 调试口 → H2 3P 排针(SWCLK/SWDIO/GND) + +| 网络 | 语义(知识库) | 连接 | +|---|---|---| +| NRST | 复位 U17/U1,经 R40/SW1 | C14.1, C74.2, R40.1, SW1.2, U1.10, U2.27, U17.25 | +| SWCLK | SWD 时钟 U17→H2 | H2.2, U17.104 | +| SWDIO | SWD 数据 U17↔H2 | H2.1, U17.105 | + +### 未归类信号 + +HRST + +## 4. 芯片引脚 + +### U1 — CH395F + +SPI 以太网控制器 (MAC+PHY);SPI2↔U17,MDI→T1 + +封装: `QFN-32_L4.0-W4.0-P0.40-BL-EP2.7`(19 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 2 | $1N6734 | — | +| 3 | $1N6717 | — | +| 4 | $1N6728 | — | +| 5 | $1N6731 | — | +| 6 | 3.3V | 3.3V 主电源 | +| 9 | $1N491 | — | +| 10 | NRST | 复位 U17/U1,经 R40/SW1 | +| 12 | XI | 晶振输入 X2→U1 CH395F | +| 13 | XO | 晶振输出 X2→U1 CH395F | +| 15 | INT | CH395F 中断 U1→U17 | +| 16 | $1N986 | — | +| 18 | $1N1082 | — | +| 19 | 3.3V | 3.3V 主电源 | +| 28 | $1N1181 | — | +| 29 | CH395F_SCS | SPI2_NSS PB12 | +| 30 | CH395F_SCK | SPI2_SCK PB13 | +| 31 | CH395F_SDI | SPI2_MOSI PB15 | +| 32 | CH395F_SDO | SPI2_MISO PB14 | +| 33 | GND | 主数字地 | + +### U2 — RTL8305NBI-CG + +双口 10/100 以太网交换/PHY;驱动 J1/J2,经 T1 接 U1 + +封装: `QFN-48_L6.0-W6.0-P0.40-TL-EP4.5`(35 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | AVDDL | PHY 电源(U2 RTL8305) | +| 2 | RXB_P | 端口B MDI(U2↔J2) | +| 3 | RXB_N | 端口B MDI(U2↔J2) | +| 4 | TXB_N | 端口B MDI(U2↔J2) | +| 5 | TXB_P | 端口B MDI(U2↔J2) | +| 6 | 3.3V | 3.3V 主电源 | +| 7 | AVDDL | PHY 电源(U2 RTL8305) | +| 8 | 3.3V | 3.3V 主电源 | +| 13 | AVDDL | PHY 电源(U2 RTL8305) | +| 14 | RX_P | MDI 差分(U2↔T1) | +| 15 | RX_N | MDI 差分(U2↔T1) | +| 16 | TX_N | MDI 差分(U2↔T1) | +| 17 | TX_P | MDI 差分(U2↔T1) | +| 18 | 3.3V | 3.3V 主电源 | +| 23 | AVDDL | PHY 电源(U2 RTL8305) | +| 24 | AVDDL | PHY 电源(U2 RTL8305) | +| 27 | NRST | 复位 U17/U1,经 R40/SW1 | +| 29 | DIS_EEE | 显示/EEE 指示 U2→R6→LED1 | +| 30 | PBLED | PHY 活动 LED U2→R2→LED | +| 31 | 3.3V | 3.3V 主电源 | +| 35 | AVDDL | PHY 电源(U2 RTL8305) | +| 36 | AVDDL | PHY 电源(U2 RTL8305) | +| 37 | 3.3V | 3.3V 主电源 | +| 38 | 3.3V | 3.3V 主电源 | +| 39 | RXO | 晶振输出 X1→U2 RTL8305 | +| 40 | RXI | 晶振输入 X1→U2 RTL8305 | +| 41 | AVDDL | PHY 电源(U2 RTL8305) | +| 42 | $1N7578 | — | +| 43 | AVDDL | PHY 电源(U2 RTL8305) | +| 44 | RXA_P | 端口A MDI(U2↔J1) | +| 45 | RXA_N | 端口A MDI(U2↔J1) | +| 46 | TXA_N | 端口A MDI(U2↔J1) | +| 47 | TXA_P | 端口A MDI(U2↔J1) | +| 48 | 3.3V | 3.3V 主电源 | +| 49 | GND | 主数字地 | + +### U3 — TPAFE5160 + +16 通道 16-bit ADC;8080/FSMC 并口↔U17 + +封装: `LQFP-64_L10.0-W10.0-P0.50-LS12.0-BL`(64 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | AVCC | 模拟 3.3V(ADC 供电,经 L1) | +| 2 | AGND | 模拟地(ADC/模拟域) | +| 3 | TP_OS0 | 输出选择 OS0 | +| 4 | TP_OS1 | 输出选择 OS1 | +| 5 | TP_OS2 | 输出选择 OS2 | +| 6 | $2N742 | — | +| 7 | 3.3V | 3.3V 主电源 | +| 8 | GND | 主数字地 | +| 9 | TP_CONVST | 转换启动 PD4 | +| 10 | TP_CONVST | 转换启动 PD4 | +| 11 | HRST | ADC 复位 U3 reset,经 R16/C31 | +| 12 | TP_RD | 读控制 (FSMC) PD3 | +| 13 | GND | 主数字地 | +| 14 | TP_BUSY | 忙 PD7 | +| 15 | $2N646 | — | +| 16 | DB0 | FSMC 数据 D0 PG0 U17↔U3 | +| 17 | DB1 | FSMC 数据 D1 PG1 | +| 18 | DB2 | FSMC 数据 D2 PG2 | +| 19 | DB3 | FSMC 数据 D3 PG3 | +| 20 | DB4 | FSMC 数据 D4 PG4 | +| 21 | DB5 | FSMC 数据 D5 PG5 | +| 22 | DB6 | FSMC 数据 D6 PG6 | +| 23 | 3.3V | 3.3V 主电源 | +| 24 | DB7 | FSMC 数据 D7 PG7 | +| 25 | DB8 | FSMC 数据 D8 PG8 | +| 26 | AGND | 模拟地(ADC/模拟域) | +| 27 | DB9 | FSMC 数据 D9 PG9 | +| 28 | DB10 | FSMC 数据 D10 PG10 | +| 29 | DB11 | FSMC 数据 D11 PG11 | +| 30 | DB12 | FSMC 数据 D12 PG12 | +| 31 | DB13 | FSMC 数据 D13 PG13 | +| 32 | DB14 | FSMC 数据 D14 PG14 | +| 33 | DB15 | FSMC 数据 D15 PG15 | +| 34 | $2N658 | — | +| 35 | AGND | 模拟地(ADC/模拟域) | +| 36 | $2N665 | — | +| 37 | AVCC | 模拟 3.3V(ADC 供电,经 L1) | +| 38 | AVCC | 模拟 3.3V(ADC 供电,经 L1) | +| 39 | $2N664 | — | +| 40 | AGND | 模拟地(ADC/模拟域) | +| 41 | AGND | 模拟地(ADC/模拟域) | +| 42 | $2N663 | — | +| 43 | AGND | 模拟地(ADC/模拟域) | +| 44 | $2N659 | — | +| 45 | $2N659 | — | +| 46 | AGND | 模拟地(ADC/模拟域) | +| 47 | AGND | 模拟地(ADC/模拟域) | +| 48 | AVCC | 模拟 3.3V(ADC 供电,经 L1) | +| 49 | ADC1 | TPAFE5160 通道1 | +| 50 | ADC1_GND | ADC 通道1 地 | +| 51 | ADC2 | TPAFE5160 通道2 | +| 52 | ADC2_GND | ADC 通道2 地 | +| 53 | ADC3 | TPAFE5160 通道3 | +| 54 | ADC3_GND | ADC 通道3 地 | +| 55 | ADC4 | TPAFE5160 通道4 | +| 56 | ADC4_GND | ADC 通道4 地 | +| 57 | ADC5 | TPAFE5160 通道5 | +| 58 | ADC5_GND | ADC 通道5 地 | +| 59 | ADC6 | TPAFE5160 通道6 | +| 60 | ADC6_GND | ADC 通道6 地 | +| 61 | ADC7 | TPAFE5160 通道7 | +| 62 | ADC7_GND | ADC 通道7 地 | +| 63 | ADC8 | TPAFE5160 通道8 | +| 64 | ADC8_GND | ADC 通道8 地 | + +### U4 — B0303S + +3.3V→3.3V 隔离 DC-DC(通信域 C3.3V);实际 B0303S,封装误标 B0505S-1WR3(A2,V0.1 更正) + +封装: `PWRM-TH_B0505S-1WR3`(4 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | GND | 主数字地 | +| 2 | $3N63 | — | +| 3 | CGND | 通信地(隔离侧) | +| 4 | C3.3V | 3.3V(通信/隔离侧) | + +### U5 — WINGTAT 9001-15481C00A + +48P 子板插座(继电器/告警/ADC/串口/时钟) + +封装: `CONN-TH_WINGTAT_9001-15481C00A`(46 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| A1 | GND | 主数字地 | +| A10 | ST_TX0 | USART ch0 TX →子板 (U5 A10) | +| A11 | HT_C26 | 子板信号 HT | +| A12 | RELAY_STO | 继电器控制 U17→U18→U5 | +| A13 | ERT_LED | 子板状态 LED | +| A14 | HT_A26 | 子板信号 HT | +| A15 | EXTKO3 | 外部按键输出3 U17→U18→U5 | +| A16 | EXTKI3 | 外部按键输入3 U5→U18→U17 | +| A2 | VDD50 | 5V(子板/USB 域,经 L3) | +| A3 | AIN1 | 子板模拟输入→ADC1 | +| A4 | AIN4 | 子板模拟输入→ADC4 | +| A5 | AIN7 | 子板模拟输入→ADC7 | +| A6 | AIN13 | 子板模拟输入→ADC13 | +| A7 | V_ZL1 | 电压测量1→ADC16 | +| A8 | AIN9 | 子板模拟输入→ADC9 | +| A9 | CF_P | CF 通信 P U5→U14/CN1 | +| B1 | GND | 主数字地 | +| B10 | ST_RX0 | USART ch0 RX ←子板 (U5 B10) | +| B11 | HT_C27 | 子板信号 HT | +| B12 | HT_A23 | 子板信号 HT | +| B13 | EXTKO1 | 外部按键输出1 U17→U18→U5 | +| B14 | HT_C25 | 子板信号 HT | +| B16 | EXTKI2 | 外部按键输入2 U5→U18→U17 | +| B2 | VDD50 | 5V(子板/USB 域,经 L3) | +| B3 | AIN12 | 子板模拟输入→ADC12 | +| B4 | AIN15 | 子板模拟输入→ADC15 | +| B5 | AIN8 | 子板模拟输入→ADC8 | +| B6 | AIN5 | 子板模拟输入→ADC5 | +| B7 | AIN2 | 子板模拟输入→ADC2 | +| B9 | CF_Q | CF 通信 Q U5→U14/CN1 | +| C1 | EXTKI1 | 外部按键输入1 U5→U18→U17 | +| C10 | AIN11 | 子板模拟输入→ADC11 | +| C11 | V_ZL2 | 电压测量2→ADC17 | +| C12 | AIN14 | 子板模拟输入→ADC14 | +| C13 | AIN6 | 子板模拟输入→ADC6 | +| C14 | AIN3 | 子板模拟输入→ADC3 | +| C15 | VDD50 | 5V(子板/USB 域,经 L3) | +| C16 | GND | 主数字地 | +| C2 | RUN_LED | 子板状态 LED(运行) | +| C3 | TRIP_LED | 子板状态 LED(跳闸) | +| C4 | EXTKO2 | 外部按键输出2 U17→U18→U5 | +| C5 | CLZ_LED | 子板状态 LED(闭锁) | +| C6 | ST_RX2 | USART ch2 RX ←子板 (U5 C6) | +| C7 | ST_TX2 | USART ch2 TX →子板 (U5 C7) | +| C8 | CLOCK | 时钟(子板/232) →U5 C8 / U14 pin7 | +| C9 | AIN10 | 子板模拟输入→ADC10 | + +### U6 — LDO (SOT-223) + +5V→G3.3V LDO(通信 3.3V 域) + +封装: `SOT-223-4_L6.5-W3.5-P2.30-LS7.0-BR`(4 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | GND | 主数字地 | +| 2 | G3.3V | 3.3V(U6 LDO 输出,通信域) | +| 3 | 5V | 5V 电源(输入) | +| 4 | G3.3V | 3.3V(U6 LDO 输出,通信域) | + +### U7 — LDO (SOT-223) + +5V→3.3V LDO(主 3.3V 域) + +封装: `SOT-223-4_L6.5-W3.5-P2.30-LS7.0-BR`(4 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | GND | 主数字地 | +| 2 | 3.3V | 3.3V 主电源 | +| 3 | 5V | 5V 电源(输入) | +| 4 | 3.3V | 3.3V 主电源 | + +### U8 — FOC-817SC-F + +光耦;隔离 ST_DIR4→DIR4(485 方向控制) + +封装: `SMD-4_L6.5-W4.6-P2.54-LS10.0-TL`(4 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | $3N163 | — | +| 2 | ST_DIR4 | 485 方向 DE PD0 →U8 光耦 | +| 3 | CGND | 通信地(隔离侧) | +| 4 | DIR4 | 485 方向(隔离后) U8→U15 | + +### U9 — CA-IS3722HS + +双通道数字隔离器;隔离 ST_UART1 → 232 ch1 + +封装: `SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL`(8 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | G3.3V | 3.3V(U6 LDO 输出,通信域) | +| 2 | ST_RX1 | USART ch1 RX ←U9 隔离←232 ch1 | +| 3 | ST_TX1 | USART ch1 TX →U9 隔离→232 ch1 | +| 4 | GND | 主数字地 | +| 5 | CGND | 通信地(隔离侧) | +| 6 | TX1 | 232 ch1 TX(隔离后) U9→U13 | +| 7 | RX1 | 232 ch1 RX(隔离后) U13→U9 | +| 8 | C3.3V | 3.3V(通信/隔离侧) | + +### U10 — CA-IS3722HS + +双通道数字隔离器;隔离 ST_UART3 → 232 ch3 + +封装: `SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL`(8 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | G3.3V | 3.3V(U6 LDO 输出,通信域) | +| 2 | ST_RX3 | USART ch3 RX ←U10 隔离←232 ch3 | +| 3 | ST_TX3 | USART ch3 TX →U10 隔离→232 ch3 | +| 4 | GND | 主数字地 | +| 5 | CGND | 通信地(隔离侧) | +| 6 | TX3 | 232 ch3 TX(隔离后) U10→U13 | +| 7 | RX3 | 232 ch3 RX(隔离后) U13→U10 | +| 8 | C3.3V | 3.3V(通信/隔离侧) | + +### U11 — CA-IS3722HS + +双通道数字隔离器;隔离 ST_UART4 → RS485 + +封装: `SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL`(8 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | G3.3V | 3.3V(U6 LDO 输出,通信域) | +| 2 | ST_RX4 | UART5_RX(485) PD2 ←U11 隔离 | +| 3 | ST_TX4 | UART5_TX(485) PC12 →U11 隔离 | +| 4 | GND | 主数字地 | +| 5 | CGND | 通信地(隔离侧) | +| 6 | TX4 | 485 TX(隔离后) U11→U15 | +| 7 | RX4 | 485 RX(隔离后) U15→U11 | +| 8 | C3.3V | 3.3V(通信/隔离侧) | + +### U12 — SuperESD (CDSOT23) + +ESD 保护;RS485 A/B 线 + +封装: `SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR`(3 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | RS485_B | 485 B 线 U15→U12 ESD→CN1 | +| 2 | RS485_A | 485 A 线 U15→U12 ESD→CN1 | +| 3 | CGND | 通信地(隔离侧) | + +### U13 — TPT3232E + +双路 RS232 电平转换收发器(驱动 RS232_TX1/RX1/TX3/RX3 → CN1/U14) + +封装: `SOP-16_L9.9-W3.9-P1.27-LS6.0-BL`(16 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | $3N77 | — | +| 2 | $3N81 | — | +| 3 | $3N78 | — | +| 4 | $3N79 | — | +| 5 | $3N80 | — | +| 6 | $3N82 | — | +| 7 | RS232_TX3 | 232 ch3 总线 U13→CN1/U14 | +| 8 | RS232_RX3 | 232 ch3 总线 CN1/U14→U13 | +| 9 | RX3 | 232 ch3 RX(隔离后) U13→U10 | +| 10 | TX3 | 232 ch3 TX(隔离后) U10→U13 | +| 11 | TX1 | 232 ch1 TX(隔离后) U9→U13 | +| 12 | RX1 | 232 ch1 RX(隔离后) U13→U9 | +| 13 | RS232_RX1 | 232 ch1 总线 CN1/U14→U13 | +| 14 | RS232_TX1 | 232 ch1 总线 U13→CN1/U14 | +| 15 | CGND | 通信地(隔离侧) | +| 16 | C3.3V | 3.3V(通信/隔离侧) | + +### U14 — C2836689 + +RJ45 座(232/CLOCK/CF 通信口,非以太网) + +封装: `RJ45-TH_C2836689`(9 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | CF_P | CF 通信 P U5→U14/CN1 | +| 2 | CF_Q | CF 通信 Q U5→U14/CN1 | +| 3 | RS232_TX3 | 232 ch3 总线 U13→CN1/U14 | +| 4 | CGND | 通信地(隔离侧) | +| 5 | CGND | 通信地(隔离侧) | +| 6 | RS232_RX3 | 232 ch3 总线 CN1/U14→U13 | +| 7 | CLOCK | 时钟(子板/232) →U5 C8 / U14 pin7 | +| 8 | GND | 主数字地 | +| 13 | PGND | 电源/网络地(RJ45 屏蔽) | + +### U15 — TP8485E-SR + +RS-485 收发器 + +封装: `SOIC-8_L5.0-W4.0-P1.27-LS6.0-BL`(8 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | RX4 | 485 RX(隔离后) U15→U11 | +| 2 | DIR4 | 485 方向(隔离后) U8→U15 | +| 3 | DIR4 | 485 方向(隔离后) U8→U15 | +| 4 | TX4 | 485 TX(隔离后) U11→U15 | +| 5 | CGND | 通信地(隔离侧) | +| 6 | RS485_A | 485 A 线 U15→U12 ESD→CN1 | +| 7 | RS485_B | 485 B 线 U15→U12 ESD→CN1 | +| 8 | C3.3V | 3.3V(通信/隔离侧) | + +### U16 — SD2506API-G + +时钟/RTC 芯片(I2C: SD_SDA/SD_SCL) + +封装: `DIP-6_L11.2-W11.2-P2.54-LS7.6-BL`(4 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 4 | GND | 主数字地 | +| 5 | SD_SDA | I2C SDA →U16 SD2506 | +| 6 | SD_SCL | I2C SCL →U16 SD2506 | +| 8 | 3.3V | 3.3V 主电源 | + +### U17 — STM32F407ZGT6 + +主 MCU (Cortex-M4 @168MHz) + +封装: `LQFP-144_L20.0-W20.0-P0.50-LS22.0-BL`(134 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | ST_IN_D4 | 子板输入 | +| 2 | ST_IN_C3 | 子板输入 | +| 3 | ST_IN_E4 | 子板输入 | +| 4 | INT | CH395F 中断 U1→U17 | +| 6 | 3.3V | 3.3V 主电源 | +| 10 | LCD_DB0 | 8080 数据 D0 U17 FSMC→H1 | +| 11 | LCD_DB1 | 8080 数据 D1 U17 FSMC→H1 | +| 12 | LCD_DB2 | 8080 数据 D2 U17 FSMC→H1 | +| 13 | LCD_DB3 | 8080 数据 D3 U17 FSMC→H1 | +| 14 | LCD_DB4 | 8080 数据 D4 U17 FSMC→H1 | +| 15 | LCD_DB5 | 8080 数据 D5 U17 FSMC→H1 | +| 16 | GND | 主数字地 | +| 17 | 3.3V | 3.3V 主电源 | +| 18 | LCD_DB6 | 8080 数据 D6 U17 FSMC→H1 | +| 19 | LCD_DB7 | 8080 数据 D7 U17 FSMC→H1 | +| 20 | LCD_RST | 复位 U17→H1 | +| 21 | LCD_WR | 写 U17→H1 | +| 22 | LCD_RD | 读 U17→H1 | +| 23 | $4N28 | — | +| 24 | $4N25 | — | +| 25 | NRST | 复位 U17/U1,经 R40/SW1 | +| 26 | LCD_CS | 片选 U17→H1 | +| 27 | LCD_CD | 数据/命令 (ALE) U17→H1 | +| 28 | LCD_BK | 背光 U17→H1 | +| 30 | 3.3V | 3.3V 主电源 | +| 31 | AGND | 模拟地(ADC/模拟域) | +| 32 | STM_VDDA | STM32 模拟电源 VDDA(经 L6) | +| 33 | STM_VDDA | STM32 模拟电源 VDDA(经 L6) | +| 34 | ADC9 | STM32 ADC 通道9 | +| 35 | ADC10 | STM32 ADC 通道10 | +| 36 | ADC11 | STM32 ADC 通道11 | +| 37 | ADC12 | STM32 ADC 通道12 | +| 38 | GND | 主数字地 | +| 39 | 3.3V | 3.3V 主电源 | +| 40 | ADC13 | STM32 ADC 通道13 | +| 41 | ADC14 | STM32 ADC 通道14 | +| 42 | ADC15 | STM32 ADC 通道15 | +| 43 | ADC16 | STM32 ADC 通道16 | +| 44 | LED1 | 板级 LED1 PC4 低有效;顺序按 AGENTS.md 待核 | +| 45 | LED2 | 板级 LED2 PC5 低有效 | +| 46 | ADC17 | STM32 ADC 通道17 | +| 47 | LED3 | 板级 LED3 PB1 低有效 | +| 48 | LED4 | 板级 LED4 PB2 低有效 | +| 49 | LED5 | 板级 LED5 PF11 低有效 | +| 50 | LED6 | 板级 LED6 PF12 低有效 | +| 51 | GND | 主数字地 | +| 52 | 3.3V | 3.3V 主电源 | +| 53 | TP_OS0 | 输出选择 OS0 | +| 54 | TP_OS1 | 输出选择 OS1 | +| 55 | TP_OS2 | 输出选择 OS2 | +| 56 | DB0 | FSMC 数据 D0 PG0 U17↔U3 | +| 57 | DB1 | FSMC 数据 D1 PG1 | +| 58 | KEY1 | 按键1 上拉 3.3V | +| 59 | KEY2 | 按键2 上拉 3.3V | +| 60 | KEY3 | 按键3 上拉 3.3V | +| 61 | GND | 主数字地 | +| 62 | 3.3V | 3.3V 主电源 | +| 63 | KEY4 | 按键4 上拉 3.3V | +| 64 | KEY5 | 按键5 上拉 3.3V | +| 65 | KEY6 | 按键6 上拉 3.3V | +| 66 | KEY7 | 按键7 上拉 3.3V | +| 67 | KEY8 | 按键8 上拉 3.3V | +| 69 | ST_TX2 | USART ch2 TX →子板 (U5 C7) | +| 70 | ST_RX2 | USART ch2 RX ←子板 (U5 C6) | +| 71 | $4N29 | — | +| 72 | 3.3V | 3.3V 主电源 | +| 73 | CH395F_SCS | SPI2_NSS PB12 | +| 74 | CH395F_SCK | SPI2_SCK PB13 | +| 75 | CH395F_SDO | SPI2_MISO PB14 | +| 76 | CH395F_SDI | SPI2_MOSI PB15 | +| 77 | SPI1_SOMI | SPI1 MOSI(子板侧) 经 U18 16245→子板;GPIO 待核 | +| 78 | SPI1_SIMO | SPI1 MISO(子板侧) 经 U18 16245←子板;GPIO 待核 | +| 79 | H16 | 子板信号 | +| 80 | V15 | 子板信号 | +| 81 | J3 | 子板信号 | +| 82 | F3 | 子板信号 | +| 83 | GND | 主数字地 | +| 84 | 3.3V | 3.3V 主电源 | +| 85 | R16 | 子板信号 | +| 86 | K3 | 子板信号 | +| 87 | DB2 | FSMC 数据 D2 PG2 | +| 88 | DB3 | FSMC 数据 D3 PG3 | +| 89 | DB4 | FSMC 数据 D4 PG4 | +| 90 | DB5 | FSMC 数据 D5 PG5 | +| 91 | DB6 | FSMC 数据 D6 PG6 | +| 92 | DB7 | FSMC 数据 D7 PG7 | +| 93 | DB8 | FSMC 数据 D8 PG8 | +| 94 | GND | 主数字地 | +| 95 | 3.3V | 3.3V 主电源 | +| 96 | DQM0 | FSMC DQM0(子板侧) | +| 97 | WAIT1 | FSMC WAIT(子板侧) | +| 98 | DQM1 | FSMC DQM1(子板侧) | +| 99 | RAS | FSMC RAS(子板侧) | +| 101 | ST_TX0 | USART ch0 TX →子板 (U5 A10) | +| 102 | ST_RX0 | USART ch0 RX ←子板 (U5 B10) | +| 104 | SWCLK | SWD 时钟 U17→H2 | +| 105 | SWDIO | SWD 数据 U17↔H2 | +| 106 | $4N31 | — | +| 107 | GND | 主数字地 | +| 108 | 3.3V | 3.3V 主电源 | +| 109 | SDCKE | FSMC CKE(子板侧) | +| 111 | ST_TX3 | USART ch3 TX →U10 隔离→232 ch3 | +| 112 | ST_RX3 | USART ch3 RX ←U10 隔离←232 ch3 | +| 113 | ST_TX4 | UART5_TX(485) PC12 →U11 隔离 | +| 114 | ST_DIR4 | 485 方向 DE PD0 →U8 光耦 | +| 115 | TP_FRSTDATA | 首数据 经 R24 | +| 116 | ST_RX4 | UART5_RX(485) PD2 ←U11 隔离 | +| 117 | TP_RD | 读控制 (FSMC) PD3 | +| 118 | TP_CONVST | 转换启动 PD4 | +| 119 | ST_TX1 | USART ch1 TX →U9 隔离→232 ch1 | +| 120 | GND | 主数字地 | +| 121 | 3.3V | 3.3V 主电源 | +| 122 | ST_RX1 | USART ch1 RX ←U9 隔离←232 ch1 | +| 123 | TP_BUSY | 忙 PD7 | +| 124 | DB9 | FSMC 数据 D9 PG9 | +| 125 | DB10 | FSMC 数据 D10 PG10 | +| 126 | DB11 | FSMC 数据 D11 PG11 | +| 127 | DB12 | FSMC 数据 D12 PG12 | +| 128 | DB13 | FSMC 数据 D13 PG13 | +| 129 | DB14 | FSMC 数据 D14 PG14 | +| 130 | GND | 主数字地 | +| 131 | 3.3V | 3.3V 主电源 | +| 132 | DB15 | FSMC 数据 D15 PG15 | +| 133 | GD_SCLK | SPI1_SCK PB3 →U19 SCK | +| 134 | GD_SO | SPI1_MISO PB4 U19 SO← | +| 135 | GD_SI | SPI1_MOSI PB5 →U19 SI | +| 136 | SD_SCL | I2C SCL →U16 SD2506 | +| 137 | SD_SDA | I2C SDA →U16 SD2506 | +| 138 | GND | 主数字地 | +| 139 | GD_WP | 写保护 PB8 →U19 WP | +| 141 | GD_CS | SPI1_NSS PE0 →U19 CS | +| 142 | GD_HOLD | HOLD PE1 →U19 HOLD | +| 143 | 3.3V | 3.3V 主电源 | +| 144 | 3.3V | 3.3V 主电源 | + +### U18 — AIP74LVC16245TA48 + +16 位总线收发器(U17 ↔ 子板 U5) + +封装: `TSSOP-48_L12.5-W6.1-P0.50-LS8.1-BL`(48 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | $4N140 | — | +| 2 | ST_IN_D4 | 子板输入 | +| 3 | ST_IN_C3 | 子板输入 | +| 4 | GND | 主数字地 | +| 5 | ST_IN_E4 | 子板输入 | +| 6 | EXTKO3 | 外部按键输出3 U17→U18→U5 | +| 7 | 3.3V | 3.3V 主电源 | +| 8 | RUN_LED | 子板状态 LED(运行) | +| 9 | HT_A26 | 子板信号 HT | +| 10 | GND | 主数字地 | +| 11 | HT_C25 | 子板信号 HT | +| 12 | TRIP_LED | 子板状态 LED(跳闸) | +| 13 | ERT_LED | 子板状态 LED | +| 14 | EXTKO1 | 外部按键输出1 U17→U18→U5 | +| 15 | GND | 主数字地 | +| 16 | EXTKO2 | 外部按键输出2 U17→U18→U5 | +| 17 | RELAY_STO | 继电器控制 U17→U18→U5 | +| 18 | 3.3V | 3.3V 主电源 | +| 19 | HT_A23 | 子板信号 HT | +| 20 | CLZ_LED | 子板状态 LED(闭锁) | +| 21 | GND | 主数字地 | +| 22 | HT_C26 | 子板信号 HT | +| 23 | HT_C27 | 子板信号 HT | +| 24 | $4N156 | — | +| 25 | $4N158 | — | +| 26 | SDCKE | FSMC CKE(子板侧) | +| 27 | RAS | FSMC RAS(子板侧) | +| 28 | GND | 主数字地 | +| 29 | DQM1 | FSMC DQM1(子板侧) | +| 30 | WAIT1 | FSMC WAIT(子板侧) | +| 31 | 3.3V | 3.3V 主电源 | +| 32 | DQM0 | FSMC DQM0(子板侧) | +| 33 | SPI1_SOMI | SPI1 MOSI(子板侧) 经 U18 16245→子板;GPIO 待核 | +| 34 | GND | 主数字地 | +| 35 | SPI1_SIMO | SPI1 MISO(子板侧) 经 U18 16245←子板;GPIO 待核 | +| 36 | K3 | 子板信号 | +| 37 | R16 | 子板信号 | +| 38 | F3 | 子板信号 | +| 39 | GND | 主数字地 | +| 40 | J3 | 子板信号 | +| 41 | V15 | 子板信号 | +| 42 | 3.3V | 3.3V 主电源 | +| 43 | H16 | 子板信号 | +| 44 | EXTKI1 | 外部按键输入1 U5→U18→U17 | +| 45 | GND | 主数字地 | +| 46 | EXTKI2 | 外部按键输入2 U5→U18→U17 | +| 47 | EXTKI3 | 外部按键输入3 U5→U18→U17 | +| 48 | $4N154 | — | + +### U19 — GD5F2GQ5UE + +2Gbit SPI NAND Flash + +封装: `WSON-8_L6.0-W8.0-P1.27-BL-EP`(9 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | GD_CS | SPI1_NSS PE0 →U19 CS | +| 2 | GD_SO | SPI1_MISO PB4 U19 SO← | +| 3 | GD_WP | 写保护 PB8 →U19 WP | +| 4 | GND | 主数字地 | +| 5 | GD_SI | SPI1_MOSI PB5 →U19 SI | +| 6 | GD_SCLK | SPI1_SCK PB3 →U19 SCK | +| 7 | GD_HOLD | HOLD PE1 →U19 HOLD | +| 8 | 3.3V | 3.3V 主电源 | +| 9 | GND | 主数字地 | + +### U20 — 钽电容 + +电源滤波 (GND/PGND) + +封装: `CAP-TH_L11.0-W4.5-P10.00-D0.6-S3.00`(2 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | GND | 主数字地 | +| 2 | PGND | 电源/网络地(RJ45 屏蔽) | + +### U21 — 钽电容 + +电源滤波 (GND/PGND) + +封装: `CAP-TH_L11.0-W4.5-P10.00-D0.6-S3.00`(2 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | GND | 主数字地 | +| 2 | PGND | 电源/网络地(RJ45 屏蔽) | + +### U22 — 钽电容 + +电源滤波 (CGND/PGND) + +封装: `CAP-TH_L11.0-W4.5-P10.00-D0.6-S3.00`(2 脚入网) + +| Pin | 网络 | 语义(知识库) | +|---|---|---| +| 1 | CGND | 通信地(隔离侧) | +| 2 | PGND | 电源/网络地(RJ45 屏蔽) | + +## 5. 连接件/晶振/变压器/无源/分立 + +| 位号 | 器件(知识库 MPN) | 引脚→网络 | +|---|---|---| +| C1 | C0603 | 1→$1N9145; 2→GND | +| C10 | C0603 | 1→AVDDL; 2→GND | +| C100 | C0603 | 1→3.3V; 2→GND | +| C101 | C0603 | 1→AGND; 2→ADC9 | +| C102 | C0603 | 1→3.3V; 2→GND | +| C103 | C0603 | 1→AGND; 2→ADC10 | +| C104 | C0603 | 1→AGND; 2→ADC11 | +| C105 | C0603 | 1→AGND; 2→ADC12 | +| C106 | C0603 | 1→AGND; 2→ADC13 | +| C107 | C0603 | 1→AGND; 2→ADC14 | +| C108 | C0603 | 1→AGND; 2→ADC15 | +| C11 | C0805 | 1→GND; 2→3.3V | +| C110 | C0603 | 1→AGND; 2→ADC16 | +| C111 | C0603 | 1→AGND; 2→ADC17 | +| C12 | C0603 | 1→3.3V; 2→GND | +| C13 | C0603 | 1→$1N491; 2→GND | +| C14 | C0603 | 1→NRST; 2→GND | +| C15 | C0603 | 1→3.3V; 2→GND | +| C16 | C0603 | 1→3.3V; 2→GND | +| C17 | C0603 | 1→3.3V; 2→GND | +| C18 | C0603 | 1→3.3V; 2→GND | +| C19 | C0603 | 1→3.3V; 2→GND | +| C2 | C0603 | 1→$1N9181; 2→GND | +| C20 | C0603 | 1→3.3V; 2→GND | +| C21 | C0603 | 1→3.3V; 2→GND | +| C22 | C0603 | 1→$1N7347; 2→GND | +| C23 | C0603 | 1→GND; 2→$1N6924 | +| C24 | C0603 | 1→GND; 2→$1N6719 | +| C25 | C0603 | 1→GND; 2→RXI | +| C26 | C0603 | 1→GND; 2→RXO | +| C27 | C0603 | 1→GND; 2→XI | +| C28 | C0603 | 1→GND; 2→XO | +| C29 | C0603 | 1→ADC1_GND; 2→ADC1 | +| C3 | CAP-SMD_BD6.3-L6.6-W6.6-LS7.3-FD | 1→AVDDL; 2→GND | +| C30 | C0603 | 1→ADC8_GND; 2→ADC8 | +| C31 | C0603 | 1→3.3V; 2→HRST | +| C32 | C0603 | 1→AVCC; 2→AGND | +| C33 | C0805 | 1→AVCC; 2→AGND | +| C34 | C0603 | 1→ADC2_GND; 2→ADC2 | +| C35 | C0603 | 1→ADC3_GND; 2→ADC3 | +| C36 | C0603 | 1→ADC4_GND; 2→ADC4 | +| C37 | C0805 | 1→$2N659; 2→AGND | +| C38 | C0603 | 1→ADC5_GND; 2→ADC5 | +| C39 | C0805 | 1→$2N663; 2→AGND | +| C4 | C0603 | 1→AVDDL; 2→GND | +| C40 | C0603 | 1→GND; 2→3.3V | +| C41 | C0805 | 1→$2N664; 2→AGND | +| C42 | C0805 | 1→$2N665; 2→AGND | +| C43 | C0603 | 1→ADC6_GND; 2→ADC6 | +| C44 | C0603 | 1→ADC7_GND; 2→ADC7 | +| C45 | CAP-SMD_BD6.3-L6.6-W6.6-LS7.3-FD | 1→5V; 2→GND | +| C46 | C0805 | 1→VDD50; 2→GND | +| C47 | C0603 | 1→VDD50; 2→GND | +| C48 | C0603 | 1→C3.3V; 2→CGND | +| C49 | C0805 | 1→5V; 2→GND | +| C5 | C0603 | 1→AVDDL; 2→GND | +| C50 | C0805 | 1→GND; 2→$3N63 | +| C51 | C0805 | 1→CGND; 2→C3.3V | +| C52 | C0805 | 1→5V; 2→GND | +| C53 | C0603 | 1→5V; 2→GND | +| C54 | C0603 | 1→G3.3V; 2→GND | +| C55 | C0805 | 1→G3.3V; 2→GND | +| C56 | C0805 | 1→5V; 2→GND | +| C57 | C0603 | 1→5V; 2→GND | +| C58 | C0603 | 1→3.3V; 2→GND | +| C59 | C0805 | 1→3.3V; 2→GND | +| C6 | C0603 | 1→AVDDL; 2→GND | +| C60 | C0805 | 1→GND; 2→G3.3V | +| C61 | C0603 | 1→G3.3V; 2→GND | +| C62 | C0603 | 1→G3.3V; 2→GND | +| C63 | C0603 | 1→G3.3V; 2→GND | +| C64 | C0603 | 1→C3.3V; 2→CGND | +| C65 | C0603 | 1→C3.3V; 2→CGND | +| C66 | C0603 | 1→C3.3V; 2→CGND | +| C67 | C0603 | 1→C3.3V; 2→CGND | +| C68 | C0603 | 1→$3N78; 2→$3N77 | +| C69 | C0603 | 1→CGND; 2→$3N82 | +| C7 | C0603 | 1→AVDDL; 2→GND | +| C70 | C0603 | 1→CGND; 2→$3N81 | +| C71 | C0603 | 1→$3N80; 2→$3N79 | +| C72 | C0805 | 1→GND; 2→3.3V | +| C73 | C0603 | 1→GND; 2→3.3V | +| C74 | C0603 | 1→GND; 2→NRST | +| C75 | C0603 | 1→GND; 2→$4N28 | +| C76 | C0603 | 1→GND; 2→$4N25 | +| C77 | C0805 | 1→AGND; 2→STM_VDDA | +| C78 | C0603 | 1→AGND; 2→STM_VDDA | +| C79 | C0603 | 1→GND; 2→$4N31 | +| C8 | C0603 | 1→AVDDL; 2→GND | +| C80 | C0603 | 1→3.3V; 2→GND | +| C81 | C0603 | 1→3.3V; 2→GND | +| C82 | C0603 | 1→3.3V; 2→GND | +| C83 | C0603 | 1→3.3V; 2→GND | +| C84 | C0603 | 1→3.3V; 2→GND | +| C85 | C0603 | 1→3.3V; 2→GND | +| C86 | C0603 | 1→3.3V; 2→GND | +| C87 | C0603 | 1→3.3V; 2→GND | +| C88 | C0603 | 1→3.3V; 2→GND | +| C89 | C0603 | 1→3.3V; 2→GND | +| C9 | C0603 | 1→AVDDL; 2→GND | +| C90 | C0603 | 1→3.3V; 2→GND | +| C91 | C0603 | 1→3.3V; 2→GND | +| C92 | C0603 | 1→3.3V; 2→GND | +| C93 | C0603 | 1→GND; 2→3.3V | +| C94 | C0603 | 1→GND; 2→$4N29 | +| C95 | C0603 | 1→AVCC; 2→AGND | +| C96 | C0603 | 1→AVCC; 2→AGND | +| C97 | C0603 | 1→AVCC; 2→AGND | +| C98 | C0603 | 1→AVCC; 2→AGND | +| C99 | CAP-SMD_BD10.0-L10.3-W10.3-LS11.0 | 1→VDD50; 2→GND | +| CN1 | JL15 端子(CONN-TH_JL15EDGKNRM-35012G01) | 10→RS232_RX1; 11→RS232_TX3; 12→RS232_TX1; 2→RS485_B; 4→RS485_A; 7→CGND; 8→CGND; 9→RS232_RX3 | +| D1 | 肖特基/钳位二极管(SMB_L4.6-W3.6-LS5.3-RD) | 1→G3.3V; 2→GND | +| D2 | 肖特基/钳位二极管(SMB_L4.6-W3.6-LS5.3-RD) | 1→3.3V; 2→GND | +| D3 | ESD 二极管(SMB_L4.3-W3.6-LS5.4-BI) | 1→CGND; 2→RS232_RX3 | +| D4 | ESD 二极管(SMB_L4.3-W3.6-LS5.4-BI) | 1→CGND; 2→RS232_TX3 | +| D5 | ESD 二极管(SMB_L4.3-W3.6-LS5.4-BI) | 1→CGND; 2→RS232_TX1 | +| D6 | ESD 二极管(SMB_L4.3-W3.6-LS5.4-BI) | 1→CGND; 2→RS232_RX1 | +| H1 | 16P 排针(HDR-TH_16P-P2.54-V-F) | 1→3.3V; 10→LCD_DB3; 11→LCD_DB4; 12→LCD_DB5; 13→LCD_DB6; 14→LCD_DB7; 15→LCD_BK; 16→GND; 2→LCD_RST; 3→LCD_WR; 4→LCD_RD; 5→LCD_CS; 6→LCD_CD; 7→LCD_DB0; 8→LCD_DB1; 9→LCD_DB2 | +| H2 | 3P 排针(HDR-TH_3P-P2.54-V-F) | 1→SWDIO; 2→SWCLK; 3→GND | +| J1 | HR911105A(RJ45-TH_HR911105A) | 1→RXA_P; 10→DIS_EEE; 2→RXA_N; 3→TXA_P; 4→$1N9145; 5→$1N9145; 6→TXA_N; 8→PGND; 9→$1N9156; SH1→PGND; SH2→PGND | +| J2 | HR911105A(RJ45-TH_HR911105A) | 1→RXB_P; 10→GND; 2→RXB_N; 3→TXB_P; 4→$1N9181; 5→$1N9181; 6→TXB_N; 8→PGND; 9→$1N9179; SH1→PGND; SH2→PGND | +| L1 | 磁珠/电感(L0603) | 1→5V; 2→AVCC | +| L2 | 磁珠/电感(L0603) | 1→AGND; 2→GND | +| L3 | 磁珠/电感(L1206) | 1→VDD50; 2→5V | +| L4 | 磁珠/电感(L1206) | 1→G3.3V; 2→$3N63 | +| L6 | 磁珠/电感(L0603) | 1→3.3V; 2→STM_VDDA | +| LED1 | LED_0603 | 1→$1N986; 2→$1N1012 | +| LED10 | LED_0603 | 1→LED6; 2→$4N286 | +| LED2 | LED_0603 | 1→$1N1082; 2→$1N8927 | +| LED3 | LED_0603 | 1→$1N9187; 2→$1N9188 | +| LED4 | LED_0603 | 1→GND; 2→$3N166 | +| LED5 | LED_0603 | 1→LED1; 2→$4N269 | +| LED6 | LED_0603 | 1→LED2; 2→$4N272 | +| LED7 | LED_0603 | 1→LED3; 2→$4N274 | +| LED8 | LED_0603 | 1→LED4; 2→$4N276 | +| LED9 | LED_0603 | 1→LED5; 2→$4N283 | +| Q1 | MOSFET/三极管(SOT-23_L2.9-W1.3-P0.95-LS2.4-BR) | 1→$1N6544; 2→GND; 3→$1N9187 | +| R1 | R0603 | 1→3.3V; 2→$1N9156 | +| R10 | R0603 | 1→$1N6544; 2→AVDDL | +| R11 | R0603 | 1→$1N6544; 2→GND | +| R12 | R0603 | 1→AIN1; 2→ADC1 | +| R13 | R0603 | 1→AIN8; 2→ADC8 | +| R14 | R0603 | 1→AGND; 2→ADC1_GND | +| R15 | R0603 | 1→AGND; 2→ADC8_GND | +| R16 | R0603 | 1→HRST; 2→GND | +| R17 | R0603 | 1→AIN2; 2→ADC2 | +| R18 | R0603 | 1→AGND; 2→ADC2_GND | +| R19 | R0603 | 1→AIN3; 2→ADC3 | +| R2 | R0603 | 1→$1N9179; 2→PBLED | +| R20 | R0603 | 1→AIN12; 2→ADC12 | +| R21 | R0603 | 1→AGND; 2→ADC3_GND | +| R22 | R0603 | 1→GND; 2→$2N742 | +| R23 | R0603 | 1→AIN4; 2→ADC4 | +| R24 | R0603 | 1→TP_FRSTDATA; 2→$2N646 | +| R25 | R0603 | 1→AGND; 2→ADC4_GND | +| R26 | R0603 | 1→AIN5; 2→ADC5 | +| R27 | R0603 | 1→AGND; 2→ADC5_GND | +| R28 | R0603 | 1→AIN6; 2→ADC6 | +| R29 | R0603 | 1→$2N658; 2→3.3V | +| R3 | R0603 | 1→$1N7578; 2→GND | +| R30 | R0603 | 1→AGND; 2→ADC6_GND | +| R31 | R0603 | 1→AIN7; 2→ADC7 | +| R32 | R0603 | 1→AGND; 2→ADC7_GND | +| R33 | R0603 | 1→$3N166; 2→3.3V | +| R34 | R0603 | 1→G3.3V; 2→$3N163 | +| R35 | R0603 | 1→C3.3V; 2→DIR4 | +| R36 | R0603 | 1→3.3V; 2→SD_SCL | +| R37 | R0603 | 1→3.3V; 2→SD_SDA | +| R38 | R0603 | 1→$4N140; 2→3.3V | +| R39 | R0603 | 1→$4N154; 2→GND | +| R4 | R0603 | 1→$1N1181; 2→GND | +| R40 | R0603 | 1→NRST; 2→3.3V | +| R41 | R0603 | 1→3.3V; 2→$4N156 | +| R42 | R0603 | 1→GND; 2→$4N158 | +| R43 | R0603 | 1→3.3V; 2→GD_CS | +| R44 | R0603 | 1→KEY1; 2→3.3V | +| R45 | R0603 | 1→AIN13; 2→ADC13 | +| R46 | R0603 | 1→AIN10; 2→ADC10 | +| R47 | R0603 | 1→AIN14; 2→ADC14 | +| R48 | R0603 | 1→AIN11; 2→ADC11 | +| R49 | R0603 | 1→AIN15; 2→ADC15 | +| R5 | R0603 | 1→AIN9; 2→ADC9 | +| R50 | R0603 | 1→KEY2; 2→3.3V | +| R51 | R0603 | 1→V_ZL1; 2→ADC16 | +| R52 | R0603 | 1→V_ZL2; 2→ADC17 | +| R53 | R0603 | 1→KEY3; 2→3.3V | +| R54 | R0603 | 1→KEY4; 2→3.3V | +| R55 | R0603 | 1→KEY5; 2→3.3V | +| R56 | R0603 | 1→KEY6; 2→3.3V | +| R57 | R0603 | 1→KEY7; 2→3.3V | +| R58 | R0603 | 1→KEY8; 2→3.3V | +| R59 | R0603 | 1→$4N269; 2→3.3V | +| R6 | R0603 | 1→3.3V; 2→DIS_EEE | +| R60 | R0603 | 1→$4N272; 2→3.3V | +| R61 | R0603 | 1→$4N274; 2→3.3V | +| R62 | R0603 | 1→$4N276; 2→3.3V | +| R63 | R0603 | 1→$4N283; 2→3.3V | +| R64 | R0603 | 1→$4N286; 2→3.3V | +| R7 | R0603 | 1→3.3V; 2→$1N1012 | +| R8 | R0603 | 1→$1N8927; 2→3.3V | +| R9 | R0603 | 1→$1N9188; 2→3.3V | +| SW1 | KEY-SMD_2P-L6.1-W3.6--LS7.9 | 1→GND; 2→NRST | +| SW2 | KEY-SMD_4P-L6.0-W6.0-P4.50-LS9.5-BR | 1→GND; 2→GND; 3→KEY1; 4→KEY1 | +| SW3 | KEY-SMD_4P-L6.0-W6.0-P4.50-LS9.5-BR | 1→GND; 2→GND; 3→KEY2; 4→KEY2 | +| SW4 | KEY-SMD_4P-L6.0-W6.0-P4.50-LS9.5-BR | 1→GND; 2→GND; 3→KEY3; 4→KEY3 | +| SW5 | KEY-SMD_4P-L6.0-W6.0-P4.50-LS9.5-BR | 1→GND; 2→GND; 3→KEY4; 4→KEY4 | +| SW6 | KEY-SMD_4P-L6.0-W6.0-P4.50-LS9.5-BR | 1→GND; 2→GND; 3→KEY5; 4→KEY5 | +| SW7 | KEY-SMD_4P-L6.0-W6.0-P4.50-LS9.5-BR | 1→GND; 2→GND; 3→KEY6; 4→KEY6 | +| SW8 | KEY-SMD_4P-L6.0-W6.0-P4.50-LS9.5-BR | 1→GND; 2→GND; 3→KEY7; 4→KEY7 | +| SW9 | KEY-SMD_4P-L6.0-W6.0-P4.50-LS9.5-BR | 1→GND; 2→GND; 3→KEY8; 4→KEY8 | +| T1 | H1102NLT(XFMR-SMD_H1102NLT) | 1→TX_P; 10→$1N6924; 11→$1N6728; 14→$1N6717; 15→$1N6719; 16→$1N6734; 2→$1N7347; 3→TX_N; 6→RX_P; 7→$1N7347; 8→RX_N; 9→$1N6731 | +| X1 | 晶振(CRYSTAL-SMD_4P-L3.2-W2.5-BL) | 1→RXI; 2→GND; 3→RXO; 4→GND | +| X2 | 晶振(CRYSTAL-SMD_4P-L3.2-W2.5-BL) | 1→XI; 2→GND; 3→XO; 4→GND | +| X3 | 晶振(CRYSTAL-SMD_4P-L3.2-W2.5-BL) | 1→$4N25; 2→GND; 3→$4N28; 4→GND | diff --git a/tools/netlist_semantics/gen_kb.py b/tools/netlist_semantics/gen_kb.py new file mode 100644 index 00000000..8f403927 --- /dev/null +++ b/tools/netlist_semantics/gen_kb.py @@ -0,0 +1,265 @@ +# -*- coding: utf-8 -*- +"""gen_kb.py - 生成 pinout_kb.json(V0.0 网表知识库)。 +运行: & '.venv\\Scripts\\python.exe' tools/netlist_semantics/gen_kb.py +数据来源:V0.0.tel 实测 + docs/芯片手册 + AGENTS.md 硬件引脚表。 +""" +import json +import os + +KB = { + "_comment": "V0.0 网表知识库:instances=位号→器件, nets=网络→语义。引脚功能以【网名+本表】为准(KiCad 符号脚号为任意编号,非手册脚号)。", + "instances": { + "U1": {"mpn": "CH395F", "pkg": "QFN-32", "desc": "SPI 以太网控制器 (MAC+PHY);SPI2↔U17,MDI→T1"}, + "U2": {"mpn": "RTL8305NBI-CG", "pkg": "QFN-48", "desc": "双口 10/100 以太网交换/PHY;驱动 J1/J2,经 T1 接 U1"}, + "U3": {"mpn": "TPAFE5160", "pkg": "LQFP-64", "desc": "16 通道 16-bit ADC;8080/FSMC 并口↔U17"}, + "U4": {"mpn": "B0303S", "pkg": "PWRM-TH", "desc": "3.3V→3.3V 隔离 DC-DC(通信域 C3.3V);实际 B0303S,封装误标 B0505S-1WR3(A2,V0.1 更正)"}, + "U5": {"mpn": "WINGTAT 9001-15481C00A", "pkg": "CONN-TH 48P", "desc": "48P 子板插座(继电器/告警/ADC/串口/时钟)"}, + "U6": {"mpn": "LDO (SOT-223)", "pkg": "SOT-223-4", "desc": "5V→G3.3V LDO(通信 3.3V 域)"}, + "U7": {"mpn": "LDO (SOT-223)", "pkg": "SOT-223-4", "desc": "5V→3.3V LDO(主 3.3V 域)"}, + "U8": {"mpn": "FOC-817SC-F", "pkg": "SMD-4", "desc": "光耦;隔离 ST_DIR4→DIR4(485 方向控制)"}, + "U9": {"mpn": "CA-IS3722HS", "pkg": "SOIC-8", "desc": "双通道数字隔离器;隔离 ST_UART1 → 232 ch1"}, + "U10": {"mpn": "CA-IS3722HS", "pkg": "SOIC-8", "desc": "双通道数字隔离器;隔离 ST_UART3 → 232 ch3"}, + "U11": {"mpn": "CA-IS3722HS", "pkg": "SOIC-8", "desc": "双通道数字隔离器;隔离 ST_UART4 → RS485"}, + "U12": {"mpn": "SuperESD (CDSOT23)", "pkg": "SOT-23-3", "desc": "ESD 保护;RS485 A/B 线"}, + "U13": {"mpn": "TPT3232E", "pkg": "SOP-16", "desc": "双路 RS232 电平转换收发器(驱动 RS232_TX1/RX1/TX3/RX3 → CN1/U14)"}, + "U14": {"mpn": "C2836689", "pkg": "RJ45-TH", "desc": "RJ45 座(232/CLOCK/CF 通信口,非以太网)"}, + "U15": {"mpn": "TP8485E-SR", "pkg": "SOIC-8", "desc": "RS-485 收发器"}, + "U16": {"mpn": "SD2506API-G", "pkg": "DIP-6", "desc": "时钟/RTC 芯片(I2C: SD_SDA/SD_SCL)"}, + "U17": {"mpn": "STM32F407ZGT6", "pkg": "LQFP-144", "desc": "主 MCU (Cortex-M4 @168MHz)"}, + "U18": {"mpn": "AIP74LVC16245TA48", "pkg": "TSSOP-48", "desc": "16 位总线收发器(U17 ↔ 子板 U5)"}, + "U19": {"mpn": "GD5F2GQ5UE", "pkg": "WSON-8", "desc": "2Gbit SPI NAND Flash"}, + "U20": {"mpn": "钽电容", "pkg": "CAP-TH", "desc": "电源滤波 (GND/PGND)"}, + "U21": {"mpn": "钽电容", "pkg": "CAP-TH", "desc": "电源滤波 (GND/PGND)"}, + "U22": {"mpn": "钽电容", "pkg": "CAP-TH", "desc": "电源滤波 (CGND/PGND)"}, + "J1": {"mpn": "HR911105A", "pkg": "RJ45-TH", "desc": "RJ45+网络变压器一体(端口 A)"}, + "J2": {"mpn": "HR911105A", "pkg": "RJ45-TH", "desc": "RJ45+网络变压器一体(端口 B)"}, + "H1": {"mpn": "16P 排针", "pkg": "HDR-TH", "desc": "LCD 8080 并口(板外屏)"}, + "H2": {"mpn": "3P 排针", "pkg": "HDR-TH", "desc": "SWD 调试(SWDIO/SWCLK/GND)"}, + "CN1": {"mpn": "JL15 端子", "pkg": "CONN-TH", "desc": "通信端子(RS485 A/B + RS232 1/3)"}, + "X1": {"mpn": "晶振", "pkg": "CRYSTAL-4P", "desc": "→ U2 RTL8305 (RXI/RXO)"}, + "X2": {"mpn": "晶振", "pkg": "CRYSTAL-4P", "desc": "→ U1 CH395F (XI/XO)"}, + "X3": {"mpn": "晶振", "pkg": "CRYSTAL-4P", "desc": "→ U17 pin23/24(网未命名,推测 HSE 8MHz)"}, + "T1": {"mpn": "H1102NLT", "pkg": "XFMR-SMD", "desc": "网络变压器(U1 CH395F ↔ U2 RTL8305)"}, + "L1": {"mpn": "磁珠/电感", "pkg": "L0603", "desc": "5V→AVCC 滤波"}, + "L2": {"mpn": "磁珠/电感", "pkg": "L0603", "desc": "AGND↔GND 连接"}, + "L3": {"mpn": "磁珠/电感", "pkg": "L1206", "desc": "VDD50↔5V"}, + "L4": {"mpn": "磁珠/电感", "pkg": "L1206", "desc": "G3.3V 滤波"}, + "L6": {"mpn": "磁珠/电感", "pkg": "L0603", "desc": "3.3V→STM_VDDA 滤波"}, + "D1": {"mpn": "肖特基/钳位二极管", "pkg": "SMB", "desc": "G3.3V 保护"}, + "D2": {"mpn": "肖特基/钳位二极管", "pkg": "SMB", "desc": "3.3V 保护"}, + "D3": {"mpn": "ESD 二极管", "pkg": "SMB", "desc": "RS232_RX3 保护"}, + "D4": {"mpn": "ESD 二极管", "pkg": "SMB", "desc": "RS232_TX3 保护"}, + "D5": {"mpn": "ESD 二极管", "pkg": "SMB", "desc": "RS232_TX1 保护"}, + "D6": {"mpn": "ESD 二极管", "pkg": "SMB", "desc": "RS232_RX1 保护"}, + "Q1": {"mpn": "MOSFET/三极管", "pkg": "SOT-23", "desc": "LED 驱动"}, + }, + "nets": { + "GND": {"func": "主数字地"}, + "AGND": {"func": "模拟地(ADC/模拟域)"}, + "PGND": {"func": "电源/网络地(RJ45 屏蔽)"}, + "CGND": {"func": "通信地(隔离侧)"}, + "3.3V": {"func": "3.3V 主电源"}, + "5V": {"func": "5V 电源(输入)"}, + "C3.3V": {"func": "3.3V(通信/隔离侧)"}, + "G3.3V": {"func": "3.3V(U6 LDO 输出,通信域)"}, + "AVCC": {"func": "模拟 3.3V(ADC 供电,经 L1)"}, + "AVDDL": {"func": "PHY 电源(U2 RTL8305)"}, + "STM_VDDA": {"func": "STM32 模拟电源 VDDA(经 L6)"}, + "VDD50": {"func": "5V(子板/USB 域,经 L3)"}, + "XI": {"func": "晶振输入", "note": "X2→U1 CH395F"}, + "XO": {"func": "晶振输出", "note": "X2→U1 CH395F"}, + "RXI": {"func": "晶振输入", "note": "X1→U2 RTL8305"}, + "RXO": {"func": "晶振输出", "note": "X1→U2 RTL8305"}, + "CLOCK": {"func": "时钟(子板/232)", "note": "→U5 C8 / U14 pin7"}, + "HRST": {"func": "ADC 复位", "note": "U3 reset,经 R16/C31"}, + "GD_SCLK": {"func": "SPI1_SCK", "gpio": "PB3", "note": "→U19 SCK"}, + "GD_SO": {"func": "SPI1_MISO", "gpio": "PB4", "note": "U19 SO←"}, + "GD_SI": {"func": "SPI1_MOSI", "gpio": "PB5", "note": "→U19 SI"}, + "GD_CS": {"func": "SPI1_NSS", "gpio": "PE0", "note": "→U19 CS"}, + "GD_HOLD": {"func": "HOLD", "gpio": "PE1", "note": "→U19 HOLD"}, + "GD_WP": {"func": "写保护", "gpio": "PB8", "note": "→U19 WP"}, + "SPI1_SOMI": {"func": "SPI1 MOSI(子板侧)", "note": "经 U18 16245→子板;GPIO 待核"}, + "SPI1_SIMO": {"func": "SPI1 MISO(子板侧)", "note": "经 U18 16245←子板;GPIO 待核"}, + "CH395F_SCS": {"func": "SPI2_NSS", "gpio": "PB12"}, + "CH395F_SCK": {"func": "SPI2_SCK", "gpio": "PB13"}, + "CH395F_SDO": {"func": "SPI2_MISO", "gpio": "PB14"}, + "CH395F_SDI": {"func": "SPI2_MOSI", "gpio": "PB15"}, + "SD_SDA": {"func": "I2C SDA", "note": "→U16 SD2506"}, + "SD_SCL": {"func": "I2C SCL", "note": "→U16 SD2506"}, + "ST_TX0": {"func": "USART ch0 TX", "note": "→子板 (U5 A10)"}, + "ST_RX0": {"func": "USART ch0 RX", "note": "←子板 (U5 B10)"}, + "ST_TX1": {"func": "USART ch1 TX", "note": "→U9 隔离→232 ch1"}, + "ST_RX1": {"func": "USART ch1 RX", "note": "←U9 隔离←232 ch1"}, + "ST_TX2": {"func": "USART ch2 TX", "note": "→子板 (U5 C7)"}, + "ST_RX2": {"func": "USART ch2 RX", "note": "←子板 (U5 C6)"}, + "ST_TX3": {"func": "USART ch3 TX", "note": "→U10 隔离→232 ch3"}, + "ST_RX3": {"func": "USART ch3 RX", "note": "←U10 隔离←232 ch3"}, + "ST_TX4": {"func": "UART5_TX(485)", "gpio": "PC12", "note": "→U11 隔离"}, + "ST_RX4": {"func": "UART5_RX(485)", "gpio": "PD2", "note": "←U11 隔离"}, + "ST_DIR4": {"func": "485 方向 DE", "gpio": "PD0", "note": "→U8 光耦"}, + "TX4": {"func": "485 TX(隔离后)", "note": "U11→U15"}, + "RX4": {"func": "485 RX(隔离后)", "note": "U15→U11"}, + "DIR4": {"func": "485 方向(隔离后)", "note": "U8→U15"}, + "RS485_A": {"func": "485 A 线", "note": "U15→U12 ESD→CN1"}, + "RS485_B": {"func": "485 B 线", "note": "U15→U12 ESD→CN1"}, + "TX1": {"func": "232 ch1 TX(隔离后)", "note": "U9→U13"}, + "RX1": {"func": "232 ch1 RX(隔离后)", "note": "U13→U9"}, + "TX3": {"func": "232 ch3 TX(隔离后)", "note": "U10→U13"}, + "RX3": {"func": "232 ch3 RX(隔离后)", "note": "U13→U10"}, + "RS232_TX1": {"func": "232 ch1 总线", "note": "U13→CN1/U14"}, + "RS232_RX1": {"func": "232 ch1 总线", "note": "CN1/U14→U13"}, + "RS232_TX3": {"func": "232 ch3 总线", "note": "U13→CN1/U14"}, + "RS232_RX3": {"func": "232 ch3 总线", "note": "CN1/U14→U13"}, + "LCD_DB0": {"func": "8080 数据 D0", "note": "U17 FSMC→H1"}, + "LCD_DB1": {"func": "8080 数据 D1", "note": "U17 FSMC→H1"}, + "LCD_DB2": {"func": "8080 数据 D2", "note": "U17 FSMC→H1"}, + "LCD_DB3": {"func": "8080 数据 D3", "note": "U17 FSMC→H1"}, + "LCD_DB4": {"func": "8080 数据 D4", "note": "U17 FSMC→H1"}, + "LCD_DB5": {"func": "8080 数据 D5", "note": "U17 FSMC→H1"}, + "LCD_DB6": {"func": "8080 数据 D6", "note": "U17 FSMC→H1"}, + "LCD_DB7": {"func": "8080 数据 D7", "note": "U17 FSMC→H1"}, + "LCD_CS": {"func": "片选", "note": "U17→H1"}, + "LCD_CD": {"func": "数据/命令 (ALE)", "note": "U17→H1"}, + "LCD_RD": {"func": "读", "note": "U17→H1"}, + "LCD_WR": {"func": "写", "note": "U17→H1"}, + "LCD_RST": {"func": "复位", "note": "U17→H1"}, + "LCD_BK": {"func": "背光", "note": "U17→H1"}, + "TP_RD": {"func": "读控制 (FSMC)", "gpio": "PD3"}, + "TP_CONVST": {"func": "转换启动", "gpio": "PD4"}, + "TP_BUSY": {"func": "忙", "gpio": "PD7"}, + "TP_OS0": {"func": "输出选择 OS0"}, + "TP_OS1": {"func": "输出选择 OS1"}, + "TP_OS2": {"func": "输出选择 OS2"}, + "TP_FRSTDATA": {"func": "首数据", "note": "经 R24"}, + "DB0": {"func": "FSMC 数据 D0", "gpio": "PG0", "note": "U17↔U3"}, + "DB1": {"func": "FSMC 数据 D1", "gpio": "PG1"}, + "DB2": {"func": "FSMC 数据 D2", "gpio": "PG2"}, + "DB3": {"func": "FSMC 数据 D3", "gpio": "PG3"}, + "DB4": {"func": "FSMC 数据 D4", "gpio": "PG4"}, + "DB5": {"func": "FSMC 数据 D5", "gpio": "PG5"}, + "DB6": {"func": "FSMC 数据 D6", "gpio": "PG6"}, + "DB7": {"func": "FSMC 数据 D7", "gpio": "PG7"}, + "DB8": {"func": "FSMC 数据 D8", "gpio": "PG8"}, + "DB9": {"func": "FSMC 数据 D9", "gpio": "PG9"}, + "DB10": {"func": "FSMC 数据 D10", "gpio": "PG10"}, + "DB11": {"func": "FSMC 数据 D11", "gpio": "PG11"}, + "DB12": {"func": "FSMC 数据 D12", "gpio": "PG12"}, + "DB13": {"func": "FSMC 数据 D13", "gpio": "PG13"}, + "DB14": {"func": "FSMC 数据 D14", "gpio": "PG14"}, + "DB15": {"func": "FSMC 数据 D15", "gpio": "PG15"}, + "AIN1": {"func": "子板模拟输入→ADC1"}, + "AIN2": {"func": "子板模拟输入→ADC2"}, + "AIN3": {"func": "子板模拟输入→ADC3"}, + "AIN4": {"func": "子板模拟输入→ADC4"}, + "AIN5": {"func": "子板模拟输入→ADC5"}, + "AIN6": {"func": "子板模拟输入→ADC6"}, + "AIN7": {"func": "子板模拟输入→ADC7"}, + "AIN8": {"func": "子板模拟输入→ADC8"}, + "AIN9": {"func": "子板模拟输入→ADC9"}, + "AIN10": {"func": "子板模拟输入→ADC10"}, + "AIN11": {"func": "子板模拟输入→ADC11"}, + "AIN12": {"func": "子板模拟输入→ADC12"}, + "AIN13": {"func": "子板模拟输入→ADC13"}, + "AIN14": {"func": "子板模拟输入→ADC14"}, + "AIN15": {"func": "子板模拟输入→ADC15"}, + "ADC1": {"func": "TPAFE5160 通道1"}, + "ADC2": {"func": "TPAFE5160 通道2"}, + "ADC3": {"func": "TPAFE5160 通道3"}, + "ADC4": {"func": "TPAFE5160 通道4"}, + "ADC5": {"func": "TPAFE5160 通道5"}, + "ADC6": {"func": "TPAFE5160 通道6"}, + "ADC7": {"func": "TPAFE5160 通道7"}, + "ADC8": {"func": "TPAFE5160 通道8"}, + "ADC9": {"func": "STM32 ADC 通道9"}, + "ADC10": {"func": "STM32 ADC 通道10"}, + "ADC11": {"func": "STM32 ADC 通道11"}, + "ADC12": {"func": "STM32 ADC 通道12"}, + "ADC13": {"func": "STM32 ADC 通道13"}, + "ADC14": {"func": "STM32 ADC 通道14"}, + "ADC15": {"func": "STM32 ADC 通道15"}, + "ADC16": {"func": "STM32 ADC 通道16"}, + "ADC17": {"func": "STM32 ADC 通道17"}, + "ADC1_GND": {"func": "ADC 通道1 地"}, + "ADC2_GND": {"func": "ADC 通道2 地"}, + "ADC3_GND": {"func": "ADC 通道3 地"}, + "ADC4_GND": {"func": "ADC 通道4 地"}, + "ADC5_GND": {"func": "ADC 通道5 地"}, + "ADC6_GND": {"func": "ADC 通道6 地"}, + "ADC7_GND": {"func": "ADC 通道7 地"}, + "ADC8_GND": {"func": "ADC 通道8 地"}, + "KEY1": {"func": "按键1", "note": "上拉 3.3V"}, + "KEY2": {"func": "按键2", "note": "上拉 3.3V"}, + "KEY3": {"func": "按键3", "note": "上拉 3.3V"}, + "KEY4": {"func": "按键4", "note": "上拉 3.3V"}, + "KEY5": {"func": "按键5", "note": "上拉 3.3V"}, + "KEY6": {"func": "按键6", "note": "上拉 3.3V"}, + "KEY7": {"func": "按键7", "note": "上拉 3.3V"}, + "KEY8": {"func": "按键8", "note": "上拉 3.3V"}, + "EXTKI1": {"func": "外部按键输入1", "note": "U5→U18→U17"}, + "EXTKI2": {"func": "外部按键输入2", "note": "U5→U18→U17"}, + "EXTKI3": {"func": "外部按键输入3", "note": "U5→U18→U17"}, + "EXTKO1": {"func": "外部按键输出1", "note": "U17→U18→U5"}, + "EXTKO2": {"func": "外部按键输出2", "note": "U17→U18→U5"}, + "EXTKO3": {"func": "外部按键输出3", "note": "U17→U18→U5"}, + "HT_A23": {"func": "子板信号 HT"}, + "HT_A26": {"func": "子板信号 HT"}, + "HT_C25": {"func": "子板信号 HT"}, + "HT_C26": {"func": "子板信号 HT"}, + "HT_C27": {"func": "子板信号 HT"}, + "CLZ_LED": {"func": "子板状态 LED(闭锁)"}, + "ERT_LED": {"func": "子板状态 LED"}, + "TRIP_LED": {"func": "子板状态 LED(跳闸)"}, + "RUN_LED": {"func": "子板状态 LED(运行)"}, + "RELAY_STO": {"func": "继电器控制", "note": "U17→U18→U5"}, + "H16": {"func": "子板信号"}, + "V15": {"func": "子板信号"}, + "J3": {"func": "子板信号"}, + "F3": {"func": "子板信号"}, + "K3": {"func": "子板信号"}, + "RAS": {"func": "FSMC RAS(子板侧)"}, + "DQM0": {"func": "FSMC DQM0(子板侧)"}, + "DQM1": {"func": "FSMC DQM1(子板侧)"}, + "WAIT1": {"func": "FSMC WAIT(子板侧)"}, + "SDCKE": {"func": "FSMC CKE(子板侧)"}, + "ST_IN_C3": {"func": "子板输入"}, + "ST_IN_D4": {"func": "子板输入"}, + "ST_IN_E4": {"func": "子板输入"}, + "CF_P": {"func": "CF 通信 P", "note": "U5→U14/CN1"}, + "CF_Q": {"func": "CF 通信 Q", "note": "U5→U14/CN1"}, + "V_ZL1": {"func": "电压测量1→ADC16"}, + "V_ZL2": {"func": "电压测量2→ADC17"}, + "R16": {"func": "子板信号"}, + "SWCLK": {"func": "SWD 时钟", "note": "U17→H2"}, + "SWDIO": {"func": "SWD 数据", "note": "U17↔H2"}, + "NRST": {"func": "复位", "note": "U17/U1,经 R40/SW1"}, + "LED1": {"func": "板级 LED1", "gpio": "PC4", "note": "低有效;顺序按 AGENTS.md 待核"}, + "LED2": {"func": "板级 LED2", "gpio": "PC5", "note": "低有效"}, + "LED3": {"func": "板级 LED3", "gpio": "PB1", "note": "低有效"}, + "LED4": {"func": "板级 LED4", "gpio": "PB2", "note": "低有效"}, + "LED5": {"func": "板级 LED5", "gpio": "PF11", "note": "低有效"}, + "LED6": {"func": "板级 LED6", "gpio": "PF12", "note": "低有效"}, + "PBLED": {"func": "PHY 活动 LED", "note": "U2→R2→LED"}, + "DIS_EEE": {"func": "显示/EEE 指示", "note": "U2→R6→LED1"}, + "INT": {"func": "CH395F 中断", "note": "U1→U17"}, + "RX_P": {"func": "MDI 差分(U2↔T1)"}, + "RX_N": {"func": "MDI 差分(U2↔T1)"}, + "TX_P": {"func": "MDI 差分(U2↔T1)"}, + "TX_N": {"func": "MDI 差分(U2↔T1)"}, + "RXA_P": {"func": "端口A MDI(U2↔J1)"}, + "RXA_N": {"func": "端口A MDI(U2↔J1)"}, + "TXA_P": {"func": "端口A MDI(U2↔J1)"}, + "TXA_N": {"func": "端口A MDI(U2↔J1)"}, + "RXB_P": {"func": "端口B MDI(U2↔J2)"}, + "RXB_N": {"func": "端口B MDI(U2↔J2)"}, + "TXB_P": {"func": "端口B MDI(U2↔J2)"}, + "TXB_N": {"func": "端口B MDI(U2↔J2)"}, + }, +} + +if __name__ == "__main__": + out = os.path.join(os.path.dirname(os.path.abspath(__file__)), "pinout_kb.json") + with open(out, "w", encoding="utf-8", newline="\n") as f: + json.dump(KB, f, ensure_ascii=False, indent=1) + f.write("\n") + print("written: %s (instances=%d, nets=%d)" % ( + out, len(KB["instances"]), len(KB["nets"]))) diff --git a/tools/netlist_semantics/netlist_sem.py b/tools/netlist_semantics/netlist_sem.py new file mode 100644 index 00000000..c05e0d2f --- /dev/null +++ b/tools/netlist_semantics/netlist_sem.py @@ -0,0 +1,418 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +r"""netlist_sem.py - KiCad Pcbnew 导出网表 (.tel) 语义化工具 + +将精简导出网表($PACKAGES/$NETS,无料号、无引脚功能名)结合引脚知识库 +(pinout_kb.json) 与规则引擎,生成紧凑的结构化语义图(Markdown), +供 LLM / 工程师快速理解板级连接。 + +用法(仓库根目录,统一 venv 解释器): + & '.venv\Scripts\python.exe' tools/netlist_semantics/netlist_sem.py dump-pins docs/硬件平台/V0.0.tel + & '.venv\Scripts\python.exe' tools/netlist_semantics/netlist_sem.py semantic docs/硬件平台/V0.0.tel -o docs/硬件平台/V0.0_网表语义图.md + +纯标准库实现,无第三方依赖。 +""" + +import argparse +import json +import os +import re +import sys +from collections import OrderedDict, defaultdict + +# ---------------------------------------------------------------- 解析 + +REF_RE = re.compile(r'^[A-Z]{1,4}\d+$') + + +def _group_entries(lines, is_start=None): + """按条目分组。is_start(ln) 判断是否新条目起始行;缺省:非空白起始行=新条目。""" + if is_start is None: + def is_start(ln): + return ln[0] not in ' \t' + entries = [] + cur = [] + for ln in lines: + if ln.strip() == '': + continue + if is_start(ln): + if cur: + entries.append('\n'.join(cur)) + cur = [ln] + else: + if not cur: + cur = [ln.strip()] + else: + cur.append(ln.strip()) + if cur: + entries.append('\n'.join(cur)) + return entries + + +def _tokens_after(text, sep=';'): + head, _, tail = text.partition(sep) + tail = tail.replace(',', ' ') + return head.strip(), [t for t in tail.split() if t] + + +def _parse_package(entry): + """解析单个 PACKAGE 条目,返回 (fp, value, [refs])。 + 兼容两种行格式: + 单行: FP ! FP ! '{Value}' ; REF1 REF2 ... + 多行: FP ! FP ! '{Value}' , 然后续行列 REF + 字段(封装/值)取首行按 ! 分割;refs 取首行 ';' 之后 + 所有续行。 + """ + lines = entry.split('\n') + first = lines[0].strip() + head = first.split(';', 1)[0] if ';' in first else first + fields = [x.strip() for x in head.split('!')] + fp = fields[0] if fields else '' + value = fields[2].strip().rstrip(',') if len(fields) > 2 else '' + refpart = first.split(';', 1)[1] if ';' in first else '' + if len(lines) > 1: + refpart = (refpart + '\n' if refpart else '') + '\n'.join(lines[1:]) + toks = re.split(r'[\s,]+', refpart.replace(',', ' ')) + refs = [t for t in toks if t and REF_RE.match(t)] + return fp, value, refs + + +def parse_netlist(path): + """解析 .tel。返回 (packages, nets) + packages: {ref: {'fp': 封装, 'value': 值}} + nets: {net: [(ref, pin), ...]} + """ + with open(path, encoding='utf-8', errors='replace') as f: + text = f.read() + + sections = {} + name, buf = None, [] + for ln in text.splitlines(): + if ln.startswith('$'): + if name: + sections[name] = buf + name = ln.strip().lstrip('$') + buf = [] + elif name: + buf.append(ln) + if name: + sections[name] = buf + + packages = {} + for entry in _group_entries(sections.get('PACKAGES', []), + lambda ln: ' ! ' in ln): + fp, value, refs = _parse_package(entry) + if not fp: + continue + for r in refs: + packages[r] = {'fp': fp, 'value': value} + + nets = {} + for entry in _group_entries(sections.get('NETS', [])): + head, toks = _tokens_after(entry) + name = head.strip().strip("'\"") + if not name: + continue + pins = [] + for t in toks: + ref, _, pin = t.rpartition('.') + if REF_RE.match(ref) and pin: + pins.append((ref, pin)) + if pins: + nets[name] = pins + + return packages, nets + + +def build_pin_index(packages, nets): + """pin_index[ref][pin] = [net, ...];unused_refs = 有封装无网络的位号""" + pin_index = defaultdict(lambda: defaultdict(list)) + seen_refs = set() + for net, pins in nets.items(): + for ref, pin in pins: + pin_index[ref][pin].append(net) + seen_refs.add(ref) + for ref in list(pin_index): + if ref not in packages: + pass # 网络中出现但 PACKAGES 缺失(如被 DNP 隐藏),仍保留 + unused = [r for r in packages if r not in seen_refs] + return pin_index, sorted(unused) + + +# ---------------------------------------------------------------- 知识库 + +def load_kb(path): + """返回 (instances, nets) + instances: {ref: {mpn, pkg, desc}} + nets: {net: {func, gpio, note}} + 说明:本工程 KiCad 符号引脚号为任意编号(非数据手册脚号,如 U17.133=PB3), + 故语义标注落在【网络名】与【位号】两级,不做引脚级断言。 + """ + with open(path, encoding='utf-8') as f: + kb = json.load(f) + return kb.get('instances', {}), kb.get('nets', {}) + + +# ---------------------------------------------------------------- 分类规则 + +GROUND_NETS = {'GND', 'AGND', 'PGND', 'CGND'} +RAIL_NETS = {'3.3V', '5V', 'C3.3V', 'G3.3V', 'AVCC', 'AVDDL', 'STM_VDDA', 'VDD50'} +CLOCK_NETS = {'XI', 'XO', 'RXI', 'RXO', 'CLOCK'} + + +def classify_net(name, pins=None, pin_index=None): + """返回 (类别, 说明)。类别: GND / POWER / CLOCK / SIGNAL + 串行时钟 (SCK/SCL/SCLK) 归 SIGNAL(接口信号),仅系统/晶振时钟归 CLOCK。""" + if name in GROUND_NETS or name.endswith('_GND'): + return 'GND', '地' + if name in RAIL_NETS or re.fullmatch(r'\d+\.\d+V', name) or name.startswith('VDD'): + return 'POWER', '电源轨' + if name in CLOCK_NETS: + return 'CLOCK', '时钟' + return 'SIGNAL', '信号' + + +# 接口分组规则:按网名匹配(顺序敏感,先匹配先归组) +INTERFACE_RULES = [ + ('以太网 MDI', 'U2 RTL8305 双口 MDI → T1 网络变压器 + J1/J2 RJ45(端口A/B);U1 CH395F 侧为无名网', + lambda n: n in ('RX_P', 'RX_N', 'TX_P', 'TX_N') or + re.fullmatch(r'RX[AB]_[PN]|TX[AB]_[PN]', n) is not None), + ('SPI-NAND (SPI1)', 'U17 SPI1 → U18 74LVC16245 → U19 GD5F2GQ5UE NAND(双向缓冲)', + lambda n: n.startswith('GD_') or n in ('SPI1_SOMI', 'SPI1_SIMO')), + ('SPI-ETH (SPI2)', 'U17 SPI2 → U1 CH395F(SPI 以太网)', + lambda n: n.startswith('CH395F_')), + ('I2C-时钟', 'U17 I2C → U16 SD2506 时钟/RTC 芯片', + lambda n: n in ('SD_SDA', 'SD_SCL')), + ('UART-ST', 'U17 USART → U9/U10/U11 隔离器 → RS232/RS485 通道', + lambda n: re.fullmatch(r'ST_(TX|RX)\d', n) is not None or n == 'ST_DIR4'), + ('RS-485', 'U11 信号隔离 + U8 光耦(DIR) → U15 TP8485E → U12 ESD → CN1 485 总线', + lambda n: n in ('RS485_A', 'RS485_B', 'TX4', 'RX4', 'DIR4')), + ('RS-232', 'U9/U10 隔离 → U13 双通道 232 收发器 → RS232 总线(CN1 / U14)', + lambda n: re.fullmatch(r'RS232_(TX|RX)\d', n) is not None or + re.fullmatch(r'[TR]X\d', n) is not None), + ('LCD 8080 并口', 'U17 FSMC → H1 16P 排针 → 板外 LCD(16bit 8080 并口)', + lambda n: n.startswith('LCD_')), + ('ADC 并口', 'U17 FSMC 读 ↔ U3 TPAFE5160(16bit + 控制线)', + lambda n: n.startswith('TP_') or re.fullmatch(r'DB\d+', n) is not None), + ('ADC 输入', 'U3 TPAFE5160 8 通道输入(经 R 分压/保护至 AIN)', + lambda n: n.startswith('AIN') or n.startswith('ADC')), + ('按键', 'U17 GPIO 按键(上拉 3.3V,低有效)', + lambda n: re.fullmatch(r'KEY\d+', n) is not None), + ('子板接口 (U18)', 'U17 ↔ U18 74LVC16245 ↔ U5 WINGTAT 子板(继电器/告警/状态/外键)', + lambda n: n.startswith('EXTK') or n.startswith('HT_') or n.startswith('ST_IN_') or + n.endswith('_LED') or n in ('RELAY_STO', 'H16', 'V15', 'J3', 'F3', 'K3', 'RAS', + 'DQM0', 'DQM1', 'WAIT1', 'SDCKE', 'CF_P', 'CF_Q', + 'V_ZL1', 'V_ZL2', 'R16')), + ('SWD/JTAG 调试', 'U17 调试口 → H2 3P 排针(SWCLK/SWDIO/GND)', + lambda n: n in ('SWCLK', 'SWDIO', 'NRST')), + ('状态指示', '板级 LED / PHY 中断 / 显示控制', + lambda n: re.fullmatch(r'LED\d+', n) is not None or + n in ('PBLED', 'DIS_EEE', 'INT')), +] + + +def group_interfaces(signals): + groups = OrderedDict() + ungrouped = [] + for net in signals: + placed = False + for gname, gdesc, pat in INTERFACE_RULES: + if pat(net): + groups.setdefault(gname, {'desc': gdesc, 'nets': []})['nets'].append(net) + placed = True + break + if not placed: + ungrouped.append(net) + return groups, ungrouped + + +# ---------------------------------------------------------------- 输出 + +def render_semantic(packages, nets, pin_index, instances, nets_kb): + L = [] + ap = L.append + + def net_ann(net): + """网络语义注释(来自知识库 nets 表);无名网($..)返回空。""" + if net.startswith('$'): + return '' + ann = nets_kb.get(net) + if not ann: + return '' + bits = [] + if ann.get('func'): + bits.append(ann['func']) + if ann.get('gpio'): + bits.append(ann['gpio']) + if ann.get('note'): + bits.append(ann['note']) + return ' '.join(bits) + + ics = sorted((r for r in pin_index if r.startswith('U')), + key=lambda r: int(re.sub(r'\D', '', r) or 0)) + oths = sorted((r for r in pin_index if not r.startswith('U'))) + + ap('# V0.0 网表语义图(自动生成)') + ap('') + ap('> 由 `tools/netlist_semantics/netlist_sem.py` 从 `V0.0.tel` + `pinout_kb.json` 生成。') + ap('> 网表仅含位号/引脚号/网名;MPN 与信号语义由知识库补全。') + ap('> 注意:KiCad 符号引脚号为任意编号(非数据手册脚号,如 U17.133=PB3),引脚功能以【网名+知识库】为准。') + ap('') + ap('## 1. 概览') + ap('') + ap(f'- 元件位号: {len(packages)} 组 / 网络: {len(nets)} 条') + n_gnd = sum(1 for n in nets if n in GROUND_NETS or n.endswith('_GND')) + n_rail = sum(1 for n in nets if n in RAIL_NETS) + n_unnamed = sum(1 for n in nets if n.startswith('$')) + ap(f'- 地网络: {n_gnd} / 电源轨: {n_rail} / 未命名(内部)网: {n_unnamed}') + ap('') + + # --- 电源域 + ap('## 2. 电源与地') + ap('') + ap('| 网络 | 类别 | 连接引脚数 | 主要去向 |') + ap('|---|---|---|---|') + for net in sorted(nets, key=lambda n: (n not in RAIL_NETS, n not in GROUND_NETS, n)): + cat, _ = classify_net(net, nets[net], pin_index) + if cat not in ('GND', 'POWER'): + continue + pins = nets[net] + ics_hit = sorted(set(r for r, _ in pins if r.startswith('U'))) + others = sorted(set(r for r, _ in pins if not r.startswith('U'))) + dest = ', '.join(ics_hit[:4] + (['…'] if len(ics_hit) > 4 else [])) + if others: + dest += f" / {len(others)}×被动件" + ap(f'| {net} | {cat} | {len(pins)} | {dest} |') + ap('') + + # --- 接口 + groups, ungrouped = group_interfaces( + [n for n in nets if not n.startswith('$') and + classify_net(n, nets[n], pin_index)[0] == 'SIGNAL']) + ap('## 3. 接口与总线') + ap('') + for gname, g in groups.items(): + ap(f'### {gname}') + ap('') + ap(f'{g["desc"]}') + ap('') + ap('| 网络 | 语义(知识库) | 连接 |') + ap('|---|---|---|') + for net in g['nets']: + pins = nets[net] + desc = ', '.join(f'{r}.{p}' for r, p in pins[:8]) + (' …' if len(pins) > 8 else '') + ap(f'| {net} | {net_ann(net) or "—"} | {desc} |') + ap('') + if ungrouped: + ap('### 未归类信号') + ap('') + ap(', '.join(ungrouped)) + ap('') + + # --- 芯片引脚 + ap('## 4. 芯片引脚') + ap('') + for ref in ics: + info = instances.get(ref, {}) + mpn = info.get('mpn', '?') + desc = info.get('desc', '') + fp = packages.get(ref, {}).get('fp', '?') + pins = pin_index[ref] + ap(f'### {ref} — {mpn}') + ap('') + if desc: + ap(f'{desc}') + ap('') + ap(f'封装: `{fp}`({len(pins)} 脚入网)') + ap('') + ap('| Pin | 网络 | 语义(知识库) |') + ap('|---|---|---|') + + def _key(kv): + p = kv[0] + m = re.fullmatch(r'(\d+)', p) + return (0, int(m.group(1))) if m else (1, p) + + for pin, nets_h in sorted(pins.items(), key=_key): + uniq = sorted(set(nets_h)) + ann = ';'.join(a for a in (net_ann(n) for n in uniq) if a) or '—' + ap(f'| {pin} | {", ".join(uniq)} | {ann} |') + ap('') + + # --- 其余器件 + ap('## 5. 连接件/晶振/变压器/无源/分立') + ap('') + ap('| 位号 | 器件(知识库 MPN) | 引脚→网络 |') + ap('|---|---|---|') + for ref in oths: + info = instances.get(ref, {}) + mpn = info.get('mpn', '') + fp = packages.get(ref, {}).get('fp', '?') + what = f'{mpn}({fp})' if mpn else fp + pins = pin_index[ref] + desc = '; '.join(f'{p}→{", ".join(sorted(set(ns)))}' + for p, ns in sorted(pins.items(), key=lambda kv: kv[0])) + ap(f'| {ref} | {what} | {desc} |') + ap('') + + return '\n'.join(L) + '\n' + + +def dump_pins(packages, nets): + pin_index, unused = build_pin_index(packages, nets) + print(f'== PACKAGES: {len(packages)} refs; NETS: {len(nets)} ==') + print(f'== refs in packages but on no net: {unused} ==') + ics = sorted((r for r in pin_index if r.startswith('U')), + key=lambda r: int(re.sub(r'\D', '', r) or 0)) + oths = sorted(r for r in pin_index if not r.startswith('U')) + for ref in ics + oths: + fp = packages.get(ref, {}).get('fp', '?') + pins = pin_index[ref] + print(f'\n### {ref} [{fp}] ({len(pins)} pins)') + + def _key(kv): + p = kv[0] + m = re.fullmatch(r'(\d+)', p) + return (0, int(m.group(1))) if m else (1, p) + + for pin, nets_h in sorted(pins.items(), key=_key): + print(f' {pin:>4} {", ".join(sorted(set(nets_h)))}') + + +# ---------------------------------------------------------------- main + +def main(): + here = os.path.dirname(os.path.abspath(__file__)) + ap = argparse.ArgumentParser( + description='KiCad Pcbnew .tel 网表语义化(解析 + 引脚知识库 + 规则引擎)') + sub = ap.add_subparsers(dest='cmd', required=True) + + p1 = sub.add_parser('dump-pins', help='按位号列出 引脚→网络(用于编制知识库)') + p1.add_argument('netlist') + + p2 = sub.add_parser('semantic', help='生成语义图 Markdown') + p2.add_argument('netlist') + p2.add_argument('-o', '--out', default=None, + help='输出文件(缺省打印到 stdout)') + p2.add_argument('--kb', default=os.path.join(here, 'pinout_kb.json')) + + a = ap.parse_args() + packages, nets = parse_netlist(a.netlist) + if a.cmd == 'dump-pins': + dump_pins(packages, nets) + else: + pin_index, unused = build_pin_index(packages, nets) + instances, nets_kb = load_kb(a.kb) + doc = render_semantic(packages, nets, pin_index, instances, nets_kb) + if a.out: + with open(a.out, 'w', encoding='utf-8', newline='\n') as f: + f.write(doc) + print(f'written: {a.out} ({len(doc)} chars)') + else: + sys.stdout.write(doc) + print(f'[stats] packages={len(packages)} nets={len(nets)} ' + f'kb_instances={len(instances)} kb_nets={len(nets_kb)} unused={unused}', + file=sys.stderr) + + +if __name__ == '__main__': + main() diff --git a/tools/netlist_semantics/pinout_kb.json b/tools/netlist_semantics/pinout_kb.json new file mode 100644 index 00000000..d720b3ab --- /dev/null +++ b/tools/netlist_semantics/pinout_kb.json @@ -0,0 +1,942 @@ +{ + "_comment": "V0.0 网表知识库:instances=位号→器件, nets=网络→语义。引脚功能以【网名+本表】为准(KiCad 符号脚号为任意编号,非手册脚号)。", + "instances": { + "U1": { + "mpn": "CH395F", + "pkg": "QFN-32", + "desc": "SPI 以太网控制器 (MAC+PHY);SPI2↔U17,MDI→T1" + }, + "U2": { + "mpn": "RTL8305NBI-CG", + "pkg": "QFN-48", + "desc": "双口 10/100 以太网交换/PHY;驱动 J1/J2,经 T1 接 U1" + }, + "U3": { + "mpn": "TPAFE5160", + "pkg": "LQFP-64", + "desc": "16 通道 16-bit ADC;8080/FSMC 并口↔U17" + }, + "U4": { + "mpn": "B0303S", + "pkg": "PWRM-TH", + "desc": "3.3V→3.3V 隔离 DC-DC(通信域 C3.3V);实际 B0303S,封装误标 B0505S-1WR3(A2,V0.1 更正)" + }, + "U5": { + "mpn": "WINGTAT 9001-15481C00A", + "pkg": "CONN-TH 48P", + "desc": "48P 子板插座(继电器/告警/ADC/串口/时钟)" + }, + "U6": { + "mpn": "LDO (SOT-223)", + "pkg": "SOT-223-4", + "desc": "5V→G3.3V LDO(通信 3.3V 域)" + }, + "U7": { + "mpn": "LDO (SOT-223)", + "pkg": "SOT-223-4", + "desc": "5V→3.3V LDO(主 3.3V 域)" + }, + "U8": { + "mpn": "FOC-817SC-F", + "pkg": "SMD-4", + "desc": "光耦;隔离 ST_DIR4→DIR4(485 方向控制)" + }, + "U9": { + "mpn": "CA-IS3722HS", + "pkg": "SOIC-8", + "desc": "双通道数字隔离器;隔离 ST_UART1 → 232 ch1" + }, + "U10": { + "mpn": "CA-IS3722HS", + "pkg": "SOIC-8", + "desc": "双通道数字隔离器;隔离 ST_UART3 → 232 ch3" + }, + "U11": { + "mpn": "CA-IS3722HS", + "pkg": "SOIC-8", + "desc": "双通道数字隔离器;隔离 ST_UART4 → RS485" + }, + "U12": { + "mpn": "SuperESD (CDSOT23)", + "pkg": "SOT-23-3", + "desc": "ESD 保护;RS485 A/B 线" + }, + "U13": { + "mpn": "TPT3232E", + "pkg": "SOP-16", + "desc": "双路 RS232 电平转换收发器(驱动 RS232_TX1/RX1/TX3/RX3 → CN1/U14)" + }, + "U14": { + "mpn": "C2836689", + "pkg": "RJ45-TH", + "desc": "RJ45 座(232/CLOCK/CF 通信口,非以太网)" + }, + "U15": { + "mpn": "TP8485E-SR", + "pkg": "SOIC-8", + "desc": "RS-485 收发器" + }, + "U16": { + "mpn": "SD2506API-G", + "pkg": "DIP-6", + "desc": "时钟/RTC 芯片(I2C: SD_SDA/SD_SCL)" + }, + "U17": { + "mpn": "STM32F407ZGT6", + "pkg": "LQFP-144", + "desc": "主 MCU (Cortex-M4 @168MHz)" + }, + "U18": { + "mpn": "AIP74LVC16245TA48", + "pkg": "TSSOP-48", + "desc": "16 位总线收发器(U17 ↔ 子板 U5)" + }, + "U19": { + "mpn": "GD5F2GQ5UE", + "pkg": "WSON-8", + "desc": "2Gbit SPI NAND Flash" + }, + "U20": { + "mpn": "钽电容", + "pkg": "CAP-TH", + "desc": "电源滤波 (GND/PGND)" + }, + "U21": { + "mpn": "钽电容", + "pkg": "CAP-TH", + "desc": "电源滤波 (GND/PGND)" + }, + "U22": { + "mpn": "钽电容", + "pkg": "CAP-TH", + "desc": "电源滤波 (CGND/PGND)" + }, + "J1": { + "mpn": "HR911105A", + "pkg": "RJ45-TH", + "desc": "RJ45+网络变压器一体(端口 A)" + }, + "J2": { + "mpn": "HR911105A", + "pkg": "RJ45-TH", + "desc": "RJ45+网络变压器一体(端口 B)" + }, + "H1": { + "mpn": "16P 排针", + "pkg": "HDR-TH", + "desc": "LCD 8080 并口(板外屏)" + }, + "H2": { + "mpn": "3P 排针", + "pkg": "HDR-TH", + "desc": "SWD 调试(SWDIO/SWCLK/GND)" + }, + "CN1": { + "mpn": "JL15 端子", + "pkg": "CONN-TH", + "desc": "通信端子(RS485 A/B + RS232 1/3)" + }, + "X1": { + "mpn": "晶振", + "pkg": "CRYSTAL-4P", + "desc": "→ U2 RTL8305 (RXI/RXO)" + }, + "X2": { + "mpn": "晶振", + "pkg": "CRYSTAL-4P", + "desc": "→ U1 CH395F (XI/XO)" + }, + "X3": { + "mpn": "晶振", + "pkg": "CRYSTAL-4P", + "desc": "→ U17 pin23/24(网未命名,推测 HSE 8MHz)" + }, + "T1": { + "mpn": "H1102NLT", + "pkg": "XFMR-SMD", + "desc": "网络变压器(U1 CH395F ↔ U2 RTL8305)" + }, + "L1": { + "mpn": "磁珠/电感", + "pkg": "L0603", + "desc": "5V→AVCC 滤波" + }, + "L2": { + "mpn": "磁珠/电感", + "pkg": "L0603", + "desc": "AGND↔GND 连接" + }, + "L3": { + "mpn": "磁珠/电感", + "pkg": "L1206", + "desc": "VDD50↔5V" + }, + "L4": { + "mpn": "磁珠/电感", + "pkg": "L1206", + "desc": "G3.3V 滤波" + }, + "L6": { + "mpn": "磁珠/电感", + "pkg": "L0603", + "desc": "3.3V→STM_VDDA 滤波" + }, + "D1": { + "mpn": "肖特基/钳位二极管", + "pkg": "SMB", + "desc": "G3.3V 保护" + }, + "D2": { + "mpn": "肖特基/钳位二极管", + "pkg": "SMB", + "desc": "3.3V 保护" + }, + "D3": { + "mpn": "ESD 二极管", + "pkg": "SMB", + "desc": "RS232_RX3 保护" + }, + "D4": { + "mpn": "ESD 二极管", + "pkg": "SMB", + "desc": "RS232_TX3 保护" + }, + "D5": { + "mpn": "ESD 二极管", + "pkg": "SMB", + "desc": "RS232_TX1 保护" + }, + "D6": { + "mpn": "ESD 二极管", + "pkg": "SMB", + "desc": "RS232_RX1 保护" + }, + "Q1": { + "mpn": "MOSFET/三极管", + "pkg": "SOT-23", + "desc": "LED 驱动" + } + }, + "nets": { + "GND": { + "func": "主数字地" + }, + "AGND": { + "func": "模拟地(ADC/模拟域)" + }, + "PGND": { + "func": "电源/网络地(RJ45 屏蔽)" + }, + "CGND": { + "func": "通信地(隔离侧)" + }, + "3.3V": { + "func": "3.3V 主电源" + }, + "5V": { + "func": "5V 电源(输入)" + }, + "C3.3V": { + "func": "3.3V(通信/隔离侧)" + }, + "G3.3V": { + "func": "3.3V(U6 LDO 输出,通信域)" + }, + "AVCC": { + "func": "模拟 3.3V(ADC 供电,经 L1)" + }, + "AVDDL": { + "func": "PHY 电源(U2 RTL8305)" + }, + "STM_VDDA": { + "func": "STM32 模拟电源 VDDA(经 L6)" + }, + "VDD50": { + "func": "5V(子板/USB 域,经 L3)" + }, + "XI": { + "func": "晶振输入", + "note": "X2→U1 CH395F" + }, + "XO": { + "func": "晶振输出", + "note": "X2→U1 CH395F" + }, + "RXI": { + "func": "晶振输入", + "note": "X1→U2 RTL8305" + }, + "RXO": { + "func": "晶振输出", + "note": "X1→U2 RTL8305" + }, + "CLOCK": { + "func": "时钟(子板/232)", + "note": "→U5 C8 / U14 pin7" + }, + "HRST": { + "func": "ADC 复位", + "note": "U3 reset,经 R16/C31" + }, + "GD_SCLK": { + "func": "SPI1_SCK", + "gpio": "PB3", + "note": "→U19 SCK" + }, + "GD_SO": { + "func": "SPI1_MISO", + "gpio": "PB4", + "note": "U19 SO←" + }, + "GD_SI": { + "func": "SPI1_MOSI", + "gpio": "PB5", + "note": "→U19 SI" + }, + "GD_CS": { + "func": "SPI1_NSS", + "gpio": "PE0", + "note": "→U19 CS" + }, + "GD_HOLD": { + "func": "HOLD", + "gpio": "PE1", + "note": "→U19 HOLD" + }, + "GD_WP": { + "func": "写保护", + "gpio": "PB8", + "note": "→U19 WP" + }, + "SPI1_SOMI": { + "func": "SPI1 MOSI(子板侧)", + "note": "经 U18 16245→子板;GPIO 待核" + }, + "SPI1_SIMO": { + "func": "SPI1 MISO(子板侧)", + "note": "经 U18 16245←子板;GPIO 待核" + }, + "CH395F_SCS": { + "func": "SPI2_NSS", + "gpio": "PB12" + }, + "CH395F_SCK": { + "func": "SPI2_SCK", + "gpio": "PB13" + }, + "CH395F_SDO": { + "func": "SPI2_MISO", + "gpio": "PB14" + }, + "CH395F_SDI": { + "func": "SPI2_MOSI", + "gpio": "PB15" + }, + "SD_SDA": { + "func": "I2C SDA", + "note": "→U16 SD2506" + }, + "SD_SCL": { + "func": "I2C SCL", + "note": "→U16 SD2506" + }, + "ST_TX0": { + "func": "USART ch0 TX", + "note": "→子板 (U5 A10)" + }, + "ST_RX0": { + "func": "USART ch0 RX", + "note": "←子板 (U5 B10)" + }, + "ST_TX1": { + "func": "USART ch1 TX", + "note": "→U9 隔离→232 ch1" + }, + "ST_RX1": { + "func": "USART ch1 RX", + "note": "←U9 隔离←232 ch1" + }, + "ST_TX2": { + "func": "USART ch2 TX", + "note": "→子板 (U5 C7)" + }, + "ST_RX2": { + "func": "USART ch2 RX", + "note": "←子板 (U5 C6)" + }, + "ST_TX3": { + "func": "USART ch3 TX", + "note": "→U10 隔离→232 ch3" + }, + "ST_RX3": { + "func": "USART ch3 RX", + "note": "←U10 隔离←232 ch3" + }, + "ST_TX4": { + "func": "UART5_TX(485)", + "gpio": "PC12", + "note": "→U11 隔离" + }, + "ST_RX4": { + "func": "UART5_RX(485)", + "gpio": "PD2", + "note": "←U11 隔离" + }, + "ST_DIR4": { + "func": "485 方向 DE", + "gpio": "PD0", + "note": "→U8 光耦" + }, + "TX4": { + "func": "485 TX(隔离后)", + "note": "U11→U15" + }, + "RX4": { + "func": "485 RX(隔离后)", + "note": "U15→U11" + }, + "DIR4": { + "func": "485 方向(隔离后)", + "note": "U8→U15" + }, + "RS485_A": { + "func": "485 A 线", + "note": "U15→U12 ESD→CN1" + }, + "RS485_B": { + "func": "485 B 线", + "note": "U15→U12 ESD→CN1" + }, + "TX1": { + "func": "232 ch1 TX(隔离后)", + "note": "U9→U13" + }, + "RX1": { + "func": "232 ch1 RX(隔离后)", + "note": "U13→U9" + }, + "TX3": { + "func": "232 ch3 TX(隔离后)", + "note": "U10→U13" + }, + "RX3": { + "func": "232 ch3 RX(隔离后)", + "note": "U13→U10" + }, + "RS232_TX1": { + "func": "232 ch1 总线", + "note": "U13→CN1/U14" + }, + "RS232_RX1": { + "func": "232 ch1 总线", + "note": "CN1/U14→U13" + }, + "RS232_TX3": { + "func": "232 ch3 总线", + "note": "U13→CN1/U14" + }, + "RS232_RX3": { + "func": "232 ch3 总线", + "note": "CN1/U14→U13" + }, + "LCD_DB0": { + "func": "8080 数据 D0", + "note": "U17 FSMC→H1" + }, + "LCD_DB1": { + "func": "8080 数据 D1", + "note": "U17 FSMC→H1" + }, + "LCD_DB2": { + "func": "8080 数据 D2", + "note": "U17 FSMC→H1" + }, + "LCD_DB3": { + "func": "8080 数据 D3", + "note": "U17 FSMC→H1" + }, + "LCD_DB4": { + "func": "8080 数据 D4", + "note": "U17 FSMC→H1" + }, + "LCD_DB5": { + "func": "8080 数据 D5", + "note": "U17 FSMC→H1" + }, + "LCD_DB6": { + "func": "8080 数据 D6", + "note": "U17 FSMC→H1" + }, + "LCD_DB7": { + "func": "8080 数据 D7", + "note": "U17 FSMC→H1" + }, + "LCD_CS": { + "func": "片选", + "note": "U17→H1" + }, + "LCD_CD": { + "func": "数据/命令 (ALE)", + "note": "U17→H1" + }, + "LCD_RD": { + "func": "读", + "note": "U17→H1" + }, + "LCD_WR": { + "func": "写", + "note": "U17→H1" + }, + "LCD_RST": { + "func": "复位", + "note": "U17→H1" + }, + "LCD_BK": { + "func": "背光", + "note": "U17→H1" + }, + "TP_RD": { + "func": "读控制 (FSMC)", + "gpio": "PD3" + }, + "TP_CONVST": { + "func": "转换启动", + "gpio": "PD4" + }, + "TP_BUSY": { + "func": "忙", + "gpio": "PD7" + }, + "TP_OS0": { + "func": "输出选择 OS0" + }, + "TP_OS1": { + "func": "输出选择 OS1" + }, + "TP_OS2": { + "func": "输出选择 OS2" + }, + "TP_FRSTDATA": { + "func": "首数据", + "note": "经 R24" + }, + "DB0": { + "func": "FSMC 数据 D0", + "gpio": "PG0", + "note": "U17↔U3" + }, + "DB1": { + "func": "FSMC 数据 D1", + "gpio": "PG1" + }, + "DB2": { + "func": "FSMC 数据 D2", + "gpio": "PG2" + }, + "DB3": { + "func": "FSMC 数据 D3", + "gpio": "PG3" + }, + "DB4": { + "func": "FSMC 数据 D4", + "gpio": "PG4" + }, + "DB5": { + "func": "FSMC 数据 D5", + "gpio": "PG5" + }, + "DB6": { + "func": "FSMC 数据 D6", + "gpio": "PG6" + }, + "DB7": { + "func": "FSMC 数据 D7", + "gpio": "PG7" + }, + "DB8": { + "func": "FSMC 数据 D8", + "gpio": "PG8" + }, + "DB9": { + "func": "FSMC 数据 D9", + "gpio": "PG9" + }, + "DB10": { + "func": "FSMC 数据 D10", + "gpio": "PG10" + }, + "DB11": { + "func": "FSMC 数据 D11", + "gpio": "PG11" + }, + "DB12": { + "func": "FSMC 数据 D12", + "gpio": "PG12" + }, + "DB13": { + "func": "FSMC 数据 D13", + "gpio": "PG13" + }, + "DB14": { + "func": "FSMC 数据 D14", + "gpio": "PG14" + }, + "DB15": { + "func": "FSMC 数据 D15", + "gpio": "PG15" + }, + "AIN1": { + "func": "子板模拟输入→ADC1" + }, + "AIN2": { + "func": "子板模拟输入→ADC2" + }, + "AIN3": { + "func": "子板模拟输入→ADC3" + }, + "AIN4": { + "func": "子板模拟输入→ADC4" + }, + "AIN5": { + "func": "子板模拟输入→ADC5" + }, + "AIN6": { + "func": "子板模拟输入→ADC6" + }, + "AIN7": { + "func": "子板模拟输入→ADC7" + }, + "AIN8": { + "func": "子板模拟输入→ADC8" + }, + "AIN9": { + "func": "子板模拟输入→ADC9" + }, + "AIN10": { + "func": "子板模拟输入→ADC10" + }, + "AIN11": { + "func": "子板模拟输入→ADC11" + }, + "AIN12": { + "func": "子板模拟输入→ADC12" + }, + "AIN13": { + "func": "子板模拟输入→ADC13" + }, + "AIN14": { + "func": "子板模拟输入→ADC14" + }, + "AIN15": { + "func": "子板模拟输入→ADC15" + }, + "ADC1": { + "func": "TPAFE5160 通道1" + }, + "ADC2": { + "func": "TPAFE5160 通道2" + }, + "ADC3": { + "func": "TPAFE5160 通道3" + }, + "ADC4": { + "func": "TPAFE5160 通道4" + }, + "ADC5": { + "func": "TPAFE5160 通道5" + }, + "ADC6": { + "func": "TPAFE5160 通道6" + }, + "ADC7": { + "func": "TPAFE5160 通道7" + }, + "ADC8": { + "func": "TPAFE5160 通道8" + }, + "ADC9": { + "func": "STM32 ADC 通道9" + }, + "ADC10": { + "func": "STM32 ADC 通道10" + }, + "ADC11": { + "func": "STM32 ADC 通道11" + }, + "ADC12": { + "func": "STM32 ADC 通道12" + }, + "ADC13": { + "func": "STM32 ADC 通道13" + }, + "ADC14": { + "func": "STM32 ADC 通道14" + }, + "ADC15": { + "func": "STM32 ADC 通道15" + }, + "ADC16": { + "func": "STM32 ADC 通道16" + }, + "ADC17": { + "func": "STM32 ADC 通道17" + }, + "ADC1_GND": { + "func": "ADC 通道1 地" + }, + "ADC2_GND": { + "func": "ADC 通道2 地" + }, + "ADC3_GND": { + "func": "ADC 通道3 地" + }, + "ADC4_GND": { + "func": "ADC 通道4 地" + }, + "ADC5_GND": { + "func": "ADC 通道5 地" + }, + "ADC6_GND": { + "func": "ADC 通道6 地" + }, + "ADC7_GND": { + "func": "ADC 通道7 地" + }, + "ADC8_GND": { + "func": "ADC 通道8 地" + }, + "KEY1": { + "func": "按键1", + "note": "上拉 3.3V" + }, + "KEY2": { + "func": "按键2", + "note": "上拉 3.3V" + }, + "KEY3": { + "func": "按键3", + "note": "上拉 3.3V" + }, + "KEY4": { + "func": "按键4", + "note": "上拉 3.3V" + }, + "KEY5": { + "func": "按键5", + "note": "上拉 3.3V" + }, + "KEY6": { + "func": "按键6", + "note": "上拉 3.3V" + }, + "KEY7": { + "func": "按键7", + "note": "上拉 3.3V" + }, + "KEY8": { + "func": "按键8", + "note": "上拉 3.3V" + }, + "EXTKI1": { + "func": "外部按键输入1", + "note": "U5→U18→U17" + }, + "EXTKI2": { + "func": "外部按键输入2", + "note": "U5→U18→U17" + }, + "EXTKI3": { + "func": "外部按键输入3", + "note": "U5→U18→U17" + }, + "EXTKO1": { + "func": "外部按键输出1", + "note": "U17→U18→U5" + }, + "EXTKO2": { + "func": "外部按键输出2", + "note": "U17→U18→U5" + }, + "EXTKO3": { + "func": "外部按键输出3", + "note": "U17→U18→U5" + }, + "HT_A23": { + "func": "子板信号 HT" + }, + "HT_A26": { + "func": "子板信号 HT" + }, + "HT_C25": { + "func": "子板信号 HT" + }, + "HT_C26": { + "func": "子板信号 HT" + }, + "HT_C27": { + "func": "子板信号 HT" + }, + "CLZ_LED": { + "func": "子板状态 LED(闭锁)" + }, + "ERT_LED": { + "func": "子板状态 LED" + }, + "TRIP_LED": { + "func": "子板状态 LED(跳闸)" + }, + "RUN_LED": { + "func": "子板状态 LED(运行)" + }, + "RELAY_STO": { + "func": "继电器控制", + "note": "U17→U18→U5" + }, + "H16": { + "func": "子板信号" + }, + "V15": { + "func": "子板信号" + }, + "J3": { + "func": "子板信号" + }, + "F3": { + "func": "子板信号" + }, + "K3": { + "func": "子板信号" + }, + "RAS": { + "func": "FSMC RAS(子板侧)" + }, + "DQM0": { + "func": "FSMC DQM0(子板侧)" + }, + "DQM1": { + "func": "FSMC DQM1(子板侧)" + }, + "WAIT1": { + "func": "FSMC WAIT(子板侧)" + }, + "SDCKE": { + "func": "FSMC CKE(子板侧)" + }, + "ST_IN_C3": { + "func": "子板输入" + }, + "ST_IN_D4": { + "func": "子板输入" + }, + "ST_IN_E4": { + "func": "子板输入" + }, + "CF_P": { + "func": "CF 通信 P", + "note": "U5→U14/CN1" + }, + "CF_Q": { + "func": "CF 通信 Q", + "note": "U5→U14/CN1" + }, + "V_ZL1": { + "func": "电压测量1→ADC16" + }, + "V_ZL2": { + "func": "电压测量2→ADC17" + }, + "R16": { + "func": "子板信号" + }, + "SWCLK": { + "func": "SWD 时钟", + "note": "U17→H2" + }, + "SWDIO": { + "func": "SWD 数据", + "note": "U17↔H2" + }, + "NRST": { + "func": "复位", + "note": "U17/U1,经 R40/SW1" + }, + "LED1": { + "func": "板级 LED1", + "gpio": "PC4", + "note": "低有效;顺序按 AGENTS.md 待核" + }, + "LED2": { + "func": "板级 LED2", + "gpio": "PC5", + "note": "低有效" + }, + "LED3": { + "func": "板级 LED3", + "gpio": "PB1", + "note": "低有效" + }, + "LED4": { + "func": "板级 LED4", + "gpio": "PB2", + "note": "低有效" + }, + "LED5": { + "func": "板级 LED5", + "gpio": "PF11", + "note": "低有效" + }, + "LED6": { + "func": "板级 LED6", + "gpio": "PF12", + "note": "低有效" + }, + "PBLED": { + "func": "PHY 活动 LED", + "note": "U2→R2→LED" + }, + "DIS_EEE": { + "func": "显示/EEE 指示", + "note": "U2→R6→LED1" + }, + "INT": { + "func": "CH395F 中断", + "note": "U1→U17" + }, + "RX_P": { + "func": "MDI 差分(U2↔T1)" + }, + "RX_N": { + "func": "MDI 差分(U2↔T1)" + }, + "TX_P": { + "func": "MDI 差分(U2↔T1)" + }, + "TX_N": { + "func": "MDI 差分(U2↔T1)" + }, + "RXA_P": { + "func": "端口A MDI(U2↔J1)" + }, + "RXA_N": { + "func": "端口A MDI(U2↔J1)" + }, + "TXA_P": { + "func": "端口A MDI(U2↔J1)" + }, + "TXA_N": { + "func": "端口A MDI(U2↔J1)" + }, + "RXB_P": { + "func": "端口B MDI(U2↔J2)" + }, + "RXB_N": { + "func": "端口B MDI(U2↔J2)" + }, + "TXB_P": { + "func": "端口B MDI(U2↔J2)" + }, + "TXB_N": { + "func": "端口B MDI(U2↔J2)" + } + } +}