| name | schematic-interface-analyzer |
| description | 分析原理图、网表、开发板手册、引脚表和板级资料,生成 MCU 固件可用的硬件接口定义、开发板资源模型和引脚/外设选型建议,并主动扫描硬件开发陷阱。适用于成品开发板资料读取、单芯片项目引脚规划、根据实时项目需求选择合适外设和引脚、提取 MCU 引脚总表、外设模块接口速查、证据来源、全引脚覆盖、NC 说明、复用冲突、下载调试风险、电源风险和危险输出时。 |
原理图接口分析
生成可审核的硬件接口速查表、开发板资源模型和项目引脚/外设选型建议。AI 负责出初稿、做证据标注和风险扫描,工程师负责核对关键结论。
适用模式
先判断当前属于哪种模式,再选择输出重点。
-
成品开发板模式
用户提供开发板手册、原理图、例程、IO 表或厂商资料。目标是读懂开发板已有资源,整理板载外设、已占用引脚、可独立使用引脚、复用冲突,再根据用户项目需求推荐合适外设和引脚。
-
单芯片裸设计模式
用户只指定 MCU 型号/封装,可能还没有原理图。目标是基于芯片手册和用户需求做引脚规划,给出候选外设、复用功能、约束、风险和后续原理图连接建议。
-
既有项目模式
用户已有原理图、代码或旧项目。目标是核对硬件事实和代码定义是否一致,找出引脚、电平、复用、启动下载和危险输出风险。
-
排错模式
用户描述某个外设不工作、无法下载、通信异常、上电误动作。目标是围绕相关接口追证据、查冲突、给最小验证建议。
优先输入
- 开发板手册、开发板 IO 表、开发板原理图、例程说明。
- 原理图导出的网表、原理图 PDF、清晰截图。
- MCU 精确型号、封装、板卡版本。
- 用户当前项目需求:要接什么模块、要几个 UART/SPI/I2C/ADC/PWM/GPIO、是否要保留调试口、是否有低功耗/高速/抗干扰要求。
- 负载类型:继电器、电机、加热、阀、蜂鸣器、LED、传感器、屏幕、通信模块、电源控制等。
- 芯片手册引脚复用摘录。
- 现有代码中的
bsp、board、key、led、gpio、config 文件。
优先使用网表、原理图和厂商表格;只有 PDF/图片时,要标注 OCR 或视觉识别的不确定性。
工作流
-
识别资料类型和证据质量
判断输入是开发板资料、芯片手册、原理图、网表、旧代码还是截图。给出识别质量:高/中/低,并说明哪些结论只能作为推断。
-
生成芯片速览
提取 MCU 型号、封装、Flash/RAM、主频、电源、可用外设数量、调试/启动方式、特殊引脚限制。
-
建立 MCU 引脚总表
尽量覆盖当前封装所有引脚。每个引脚要标注:脚号、端口、复用功能、板上网络、模块、是否已占用、是否可独立使用、是否 NC、证据来源、置信度。
-
建立外设模块接口速查
按模块整理:电源、时钟、启动复位、下载调试、LED、按键、UART、SPI、I2C、ADC、PWM、USB、SDIO、FSMC、DCMI、LCD、存储器、无线模块、传感器、执行器。
-
建立开发板资源模型
针对成品开发板,区分:
- 板载已占用资源。
- 可复用但需注意冲突的资源。
- 独立引出的空闲 IO。
- 不建议使用的 IO。
- NC/悬空/未引出的引脚。
-
根据项目需求做引脚/外设选型
结合用户当前需求和开发板约束,给出推荐方案、备选方案、不推荐方案和理由。
-
扫描硬件坑
按“硬件坑扫描清单”逐项检查,不只列引脚。
-
和手册/代码交叉检查
检查复用功能是否存在、ADC 引脚是否支持、I2C 是否需要开漏和上拉、Boot/SWD/JTAG 是否冲突、代码宏定义是否和硬件事实一致。
-
输出接口表、资源模型、选型建议、风险扫描、危险输出和待确认问题。
证据来源标注
每条关键结论都要尽量标证据来源:
[网表]:来自原理图网表,可信度高。
[原理图]:来自原理图人工/视觉读取。
[开发板手册]:来自开发板资料、IO 表或教程。
[芯片手册]:来自 MCU datasheet/reference manual。
[例程]:来自厂商例程或 BSP 代码。
[代码]:来自当前项目源码。
[推断]:根据电路或常识推断,必须可被人工复核。
[待确认]:证据不足,不可直接用于固件实现。
不要把 [推断] 写成事实。危险输出、有效电平、启动/下载、复用冲突必须优先给出证据。
成品开发板资源选型规则
当用户使用成品开发板时,不要只问“哪个 GPIO 可用”,要先保护开发板原有关键资源:
- 优先保留调试口:SWD/JTAG、USB 串口、日志串口。
- 避免占用启动脚:BOOT0、BOOT1、strapping pin。
- 避免影响板载存储:SPI Flash、EEPROM、TF 卡、外扩 SRAM。
- 避免破坏常用调试资源:LED、按键、printf 串口。
- 注意开发板跳帽、焊盘、排针、模块接口是否需要物理配置。
- 对多设备共用总线,检查片选、地址冲突、总线上拉和默认态。
- 对 LCD、摄像头、SDIO、FSMC 等并口资源,优先检查是否互斥。
根据需求推荐外设时,按这个优先级:
- 不影响下载调试。
- 不影响启动。
- 不与板载关键外设冲突。
- 电气和时序满足需求。
- 布线/排针连接方便。
- 后续代码和例程支持更好。
单芯片引脚规划规则
当用户后续只用某颗芯片、不是开发板时:
- 先确认 MCU 型号、封装、供电电压、晶振、调试口、启动方式。
- 先锁定不可动资源:电源、地、复位、晶振、BOOT、SWD/JTAG、VREF/VBAT。
- 再分配高约束外设:USB、SDIO、FSMC、DCMI、CAN、以太网、晶振相关脚。
- 再分配通信外设:UART、SPI、I2C。
- 再分配模拟和定时器资源:ADC、DAC、PWM、输入捕获。
- 最后分配普通 GPIO。
- 对每个分配给出备选引脚,避免后期 PCB 或功能变更卡死。
- 输出时区分“芯片能力”和“当前板级用途”。芯片复用功能不等于当前硬件可用。
硬件坑扫描清单
必须主动检查这些风险:
- 有效电平反相:三极管、MOS、光耦、继电器、LED、蜂鸣器、使能脚。
- 上电默认态:复位期间 GPIO 高阻、上拉/下拉、Boot 阶段是否会误触发输出。
- 危险负载:继电器、电机、加热、阀、高压 PWM、电源开关、充电控制。
- 下载调试冲突:SWDIO/SWCLK、JTAG、复用为普通 IO 后无法下载。
- 启动脚冲突:BOOT0、BOOT1、strapping pin、按键复用启动脚。
- 复位链路:MCU RESET 是否同时复位 LCD、外设、通信模块。
- 晶振和时钟:HSE/LSE 引脚是否被占用,外部晶振是否存在。
- ADC/VREF:参考电压、输入范围、分压、模拟地、采样源阻抗。
- I2C:上拉电阻、多个器件地址冲突、是否使用硬件 I2C 的已知坑。
- SPI:多设备片选、JTAG/SPI 复用、MISO 总线冲突、片选默认态。
- UART:TX/RX 视角是否反了,USB 转串口跳帽是否连接。
- USB:D+/D-、VBUS、OTG Host 供电能力。
- SDIO/摄像头/LCD/FSMC:并行总线或模块接口是否共用 IO,是否只能分时复用。
- 外扩存储:Flash/SRAM/EEPROM 容量、页/扇区大小、写擦限制。
- 电源:USB 供电电流是否够,大负载是否需要独立电源。
- 板级版本:同一开发板不同批次器件型号差异。
- 代码风险:现有宏定义、有效电平、端口配置是否和硬件事实一致。
风险分级
对每个风险标注等级:
P0:可能烧板、伤人、损坏负载、导致不可恢复写入或高压误动作。
P1:可能导致无法下载、无法启动、外设冲突、通信失败。
P2:可能导致功能异常、偶发错误、调试困难。
P3:文档不清、命名不一致、后续维护风险。
输出模板
# 硬件接口与开发板资源分析
## 基本信息
- 分析模式: 成品开发板 / 单芯片裸设计 / 既有项目 / 排错
- MCU:
- 封装:
- 板卡/项目版本:
- 输入资料:
- 识别质量:
## 芯片速览
| 项目 | 内容 | 证据 |
|---|---|---|
| MCU | | |
| 封装 | | |
| Flash/RAM | | |
| 主频/供电 | | |
| 关键外设 | | |
| 调试/启动 | | |
## MCU 引脚总表
> 尽量覆盖当前封装所有引脚。未连接写 `NC`,未引出写 `未引出`,只具备芯片复用但当前板子没接写 `芯片能力/板上不可用`。
| Pin# | MCU引脚 | 复用功能 | 板上网络 | 模块 | 类型 | 有效电平/参数 | 占用状态 | 是否推荐项目使用 | 证据 | 置信度 |
|---:|---|---|---|---|---|---|---|---|---|---|
## 外设模块接口速查
| 模块 | 功能 | MCU引脚/网络 | 电平/参数 | 占用/复用 | 软件建议 | 证据 |
|---|---|---|---|---|---|---|
## 开发板资源模型
| 资源 | 引脚/接口 | 当前用途 | 状态 | 推荐级别 | 原因 |
|---|---|---|---|---|---|
| 调试口 | | | 保留 | 推荐保留 | |
| 串口 | | | 可用/占用 | 推荐/谨慎 | |
| SPI | | | 可复用/冲突 | 推荐/谨慎/不推荐 | |
| I2C | | | 可复用/地址冲突 | 推荐/谨慎 | |
| 普通 GPIO | | | 空闲/未引出/NC | 推荐/不推荐 | |
## 基于当前需求的外设/引脚推荐
### 需求
- ...
### 推荐方案
| 优先级 | 外设/引脚 | 用法 | 推荐理由 | 代价/风险 | 验证方式 |
|---|---|---|---|---|---|
### 备选方案
| 外设/引脚 | 适用条件 | 风险 |
|---|---|---|
### 不推荐方案
| 外设/引脚 | 不推荐原因 |
|---|---|
## 硬件坑扫描
| 等级 | 风险类型 | 相关网络/引脚 | 可能后果 | 判断依据 | 建议验证 |
|---|---|---|---|---|---|
## 危险输出
| 网络名 | 负载 | 推断有效电平 | 安全默认态 | 上电验证方法 | 是否可直接带载 |
|---|---|---|---|---|---|
## 复用冲突
| 资源A | 资源B | 冲突引脚 | 是否可分时复用 | 软件策略 |
|---|---|---|---|---|
## NC / 未引出 / 不建议使用引脚
| 引脚 | 状态 | 原因 | 是否可改板使用 |
|---|---|---|---|
## 待人工核对
- ...
审核规则
- 电路没有明确证明时,不要把有效电平写成最终结论。
- 三极管、MOS、光耦、继电器驱动、使能脚都属于极性风险项。
- 原理图器件型号可能填错,不能盲信器件标注。
- 看不清或推断链条不完整时,写
待人工确认,不要自信猜测。
- 未经人工核对的接口表不能直接作为固件初始化依据。
- 对危险输出,默认结论是“不可直接带载测试”,除非工程师确认安全。
- 推荐引脚时必须说明“不推荐哪些引脚及原因”,避免只给单一答案。
- 成品开发板上,开发板手册的“芯片复用功能”不等于“板上已经接好可用”。
和代码联动
如果项目已有代码,额外检查:
#define LED0、KEY0、RELAY、MOTOR 等宏是否和接口表一致。
- GPIO 模式是否符合硬件:输入/输出/复用/模拟、上下拉、开漏/推挽。
- 初始化顺序是否先设置安全电平,再切输出模式。
- 中断触发边沿是否符合按键或信号有效边沿。
- 片选默认态是否保证未选中。
- 串口、SPI、I2C、定时器通道是否和推荐引脚一致。
文章中的经验
- AI 能把几小时的引脚整理压缩到几分钟,但人工核对不能省。
- 标注不清、型号错误、网络命名混乱会直接导致 AI 结论错误。
- 真正有价值的不只是“列引脚”,而是提前挖出有效电平、下载口复用、启动脚、供电不足、接口冲突等会让项目翻车的坑。
- 对成品开发板,最有价值的是先建立开发板资源模型,再结合当前项目需求做外设和引脚选型。
- AI 介入会倒逼原理图规范化:器件型号要对,网络名要清晰,关键标注不能省。