☰
用Claude Code远程操控嘉立创EDA自动绘制STM32最小系统原理图
2026/10/6 6:46:27 网站建设 项目流程

1. 这套玩法到底在解决什么问题

画原理图这件事,说难不难,说烦是真烦。尤其是像 STM32F103C8T6 这种经典到不能再经典的最小系统,网上现成的参考设计一抓一大把,但真到自己动手在嘉立创 EDA 专业版里从零摆元件、连网络、标位号、查引脚,一套流程走下来,没个把小时根本收不了工。更别提中间还要反复核对 VBAT 要不要接、BOOT0 和 BOOT1 怎么拉、晶振负载电容选多大、复位电路是上拉还是下拉这些细节,稍不留神就埋个坑,等打板回来才发现某个引脚悬空了。

我这次做的事情,说白了就是把这套重复劳动交给 AI 去干:用 Claude Code 作为“远程操作员”,让它去驱动嘉立创 EDA 专业版,自动把 STM32F103C8T6 最小系统的原理图给我画出来。注意,这里的关键词是“远程控制”和“自动绘制”,不是让 AI 帮我写一段画图脚本然后我自己跑,而是让 AI 直接操作 EDA 软件本身,像一个人坐在电脑前那样去点菜单、放元件、拉线。

为什么盯上 Claude Code?因为它在代码理解、工具调用和长流程任务编排上确实比一般的对话式 AI 更靠谱。它本身是个命令行形态的 agent,能读写文件、能执行命令、能根据反馈调整下一步动作。嘉立创 EDA 专业版虽然是图形界面软件,但它底层有完整的工程文件结构,原理图数据是可以被程序化读写的。这就给了我们一个切入点:让 Claude Code 去操作工程文件,或者通过脚本桥接的方式去驱动 EDA 的接口,最终把原理图生成出来。

这套东西适合谁?我觉得有三类人值得花时间研究。第一类是经常画 STM32 最小系统、电源模块、传感器接口这类“套路化”电路的硬件工程师,把重复部分自动化掉,省下来的时间拿去调板子。第二类是想入门 AI agent 实操的开发者,拿一个看得见摸得着的硬件任务练手,比跑那些纯文本 demo 有意思得多。第三类是学生或者刚转硬件的朋友,通过拆解这个过程,能顺带把 STM32F103C8T6 最小系统的每一个外围电路为什么这么设计搞明白。

需要提前说清楚的是,这套方案不是“一键出图”的魔法。AI 负责的是执行和编排,电路本身的正确性、元件的选型、参数的取值,还是得靠人来把关。我下面会把整个思路、关键细节、实操步骤和踩过的坑都摊开讲,你照着做大概率能复现,但别指望完全不动脑子。

2. 整体方案设计与技术选型思路

2.1 为什么是 Claude Code 而不是普通对话 AI

普通对话式 AI 的问题在于,它只能给你“建议”,不能替你“动手”。你问它 STM32F103C8T6 最小系统怎么画,它能给你列一堆元件和连接关系,但接下来还是得你自己一个个往 EDA 里放。Claude Code 不一样,它是个 agent,有工具调用能力,能执行 shell 命令、能读写文件、能根据执行结果决定下一步。这就意味着它可以承担“操作员”的角色。

具体到我们这个任务,Claude Code 能做的事情包括:读取嘉立创 EDA 的工程文件结构、解析原理图的网表格式、调用 EDA 提供的脚本接口、甚至通过模拟输入的方式去操作图形界面。我实测下来,最稳的路径是走“工程文件 + 脚本接口”这条线,而不是去模拟鼠标点击。模拟点击太脆弱了,窗口一挪、分辨率一变就全乱套。

2.2 嘉立创 EDA 专业版的可编程切入点

嘉立创 EDA 专业版和标准版不一样,专业版在工程组织上更接近传统 EDA 工具,一个工程下面有原理图、PCB、符号库、封装库这些独立单元。它的原理图数据是有明确结构的,元件、网络、连线、位号这些信息都能被程序读取和写入。

我摸索下来,主要有三个可操作的层面。第一个层面是工程文件的直接读写,原理图本质上是一堆结构化的数据,搞清楚它的 schema 之后,理论上可以用脚本直接生成。第二个层面是 EDA 自带的脚本扩展能力,专业版支持一定程度的脚本调用,可以在软件内部执行逻辑。第三个层面是外部程序通过文件监听或者接口调用的方式,跟 EDA 形成联动。

我最终采用的是“Claude Code 生成结构化数据 + 脚本写入工程”的组合。原因很简单:直接操作图形界面不可靠,而完全靠手写工程文件又容易因为格式细节出错。让 Claude Code 去生成符合规范的中间数据,再由一个稳定的写入脚本落地,这样既发挥了 AI 的编排能力,又保证了最终结果的可靠性。

2.3 STM32F103C8T6 最小系统的电路边界

在动手之前,得先把“最小系统”这四个字定义清楚。STM32F103C8T6 的最小系统,指的是让这颗芯片能正常跑起来所需要的最少外围电路。它通常包括这么几块:

  • 电源部分:3.3V 供电,需要退耦电容,VBAT 引脚的处理
  • 时钟部分:外部 8MHz 晶振加两个负载电容,负责提供主时钟
  • 复位部分:复位引脚的上拉电阻和滤波电容,通常还会加一个复位按键
  • 启动配置:BOOT0 和 BOOT1 的下拉电阻,决定启动模式
  • 调试接口:SWD 接口,至少引出 SWDIO 和 SWCLK
  • 芯片本体:STM32F103C8T6 的 48 脚 LQFP 封装

这几块里面,电源和时钟是重点,也是最容易出问题的地方。VBAT 引脚如果不用电池,一般直接接到 3.3V,但要注意它和主电源之间的处理。晶振的负载电容不是随便选的,得根据晶振的负载电容参数和 PCB 的寄生电容来算。这些细节我在后面会展开讲。

2.4 整体流程的拆解

整个自动化流程我拆成了五步。第一步是环境准备,把 Claude Code 装好、配好,把嘉立创 EDA 专业版装好,确认工程能正常新建和保存。第二步是让 Claude Code 理解任务,把 STM32F103C8T6 最小系统的电路要求、元件清单、连接关系用结构化的方式描述给它。第三步是生成原理图数据,Claude Code 根据描述生成符合嘉立创 EDA 格式的元件和网络数据。第四步是写入工程,通过脚本把生成的数据落到工程文件里。第五步是校验和修正,打开工程检查有没有漏连、错连、位号重复这些问题。

这五步里面,第三步和第四步是技术难点,也是我花时间最多的地方。第三步的难点在于要让 AI 输出的数据格式完全符合 EDA 的要求,差一个字段就可能导入失败。第四步的难点在于写入过程要稳定,不能把原有工程搞坏。

3. 核心细节解析与实操要点

3.1 Claude Code 的环境搭建与配置

Claude Code 的安装本身不复杂,它是个命令行工具,装好之后需要配置访问凭证。我是在 Windows 环境下操作的,整体流程比较顺。装完之后建议先跑一个简单的任务测试一下,比如让它读一个本地文件、执行一条命令,确认工具调用链路是通的。

配置的时候有几个点要注意。第一是工作目录的选择,建议专门建一个目录放这个项目的所有文件,包括工程文件、脚本、日志,让 Claude Code 在这个目录下工作,避免它乱翻其他文件。第二是权限控制,Claude Code 执行命令前会询问,对于这种要操作工程文件的任务,建议把常用命令加入白名单,不然每一步都弹确认会很烦。第三是模型选择,如果本地有合适的模型可以接,没有的话用默认的就行,这个任务对模型能力的要求主要在代码理解和结构化输出上。

提示:Claude Code 的工作目录最好和嘉立创 EDA 的工程目录分开,中间用一个专门的同步脚本做桥接。这样即使 AI 生成的数据有问题,也不会直接污染你的工程文件。

3.2 嘉立创 EDA 专业版的工程结构

要自动化操作,就得先搞清楚工程文件长什么样。嘉立创 EDA 专业版的一个工程,本质上是一个文件夹,里面包含若干文件。原理图部分通常有独立的文件,记录了这个原理图页上的所有元件、网络、连线、文本标注等信息。

我建议你新建一个空白工程,手动放一个元件、连一根线、标一个位号,然后保存,再去翻工程文件,对比一下操作前后文件的变化。这样能最快地理解它的数据组织方式。我当初就是这么干的,放一个电阻、连两根线,然后看文件里多了哪些字段,很快就摸清了元件和网络是怎么表示的。

这里有个经验:嘉立创 EDA 的工程文件格式在不同版本之间可能有差异,所以一定要以你当前使用的版本为准。不要直接套用网上找的旧格式,很可能字段对不上。我踩过这个坑,用了一个旧版本的示例数据,结果导入的时候元件全丢了,排查了半天才发现是字段名变了。

3.3 STM32F103C8T6 最小系统的元件清单与连接关系

在让 AI 生成数据之前,我得先把电路本身描述清楚。下面是我整理的最小系统元件清单和关键连接关系,这份清单也是我喂给 Claude Code 的核心输入。

元件规格数量作用
主控芯片STM32F103C8T6 LQFP481核心
晶振8MHz 无源晶振1主时钟
负载电容20pF2晶振匹配
退耦电容100nF4电源滤波
电解电容10uF2电源储能
复位电阻10kΩ1复位上拉
复位电容100nF1复位滤波
复位按键轻触开关1手动复位
下拉电阻10kΩ2BOOT 配置
调试排针4Pin1SWD 接口

连接关系这块,核心是这么几条。电源方面,VDD 和 VSS 成对出现,每一对旁边都要放退耦电容。VDDA 和 VSSA 是模拟电源,也要接。VBAT 如果不用电池,直接接 3.3V。时钟方面,8MHz 晶振接在 OSC_IN 和 OSC_OUT 之间,两端各接一个负载电容到地。复位方面,NRST 通过 10kΩ 上拉到 3.3V,同时接 100nF 电容到地,再并一个按键。启动配置方面,BOOT0 通过 10kΩ 下拉到地,BOOT1 也就是 PB2,同样下拉。

这些连接关系我会用结构化的方式描述给 Claude Code,比如用“元件A的引脚X连接到元件B的引脚Y”这种格式,让它去生成对应的网络数据。

3.4 让 Claude Code 理解任务的提示词设计

这一步是整个流程里最关键的。提示词写得好不好,直接决定 AI 输出的数据能不能用。我的经验是,提示词要满足三个要求:结构清晰、约束明确、有示例。

结构清晰指的是把任务拆成明确的步骤,告诉 AI 先做什么后做什么。约束明确指的是把格式要求、命名规则、必填字段这些讲清楚。有示例指的是给一两个正确的数据样例,让 AI 照着格式来。

我实际用的提示词大概长这样:先说明任务背景,是要生成 STM32F103C8T6 最小系统的原理图数据;然后给出元件清单和连接关系;接着给出目标格式的说明和示例;最后要求 AI 输出完整的元件列表和网络列表,并且自检一遍有没有漏连。

这里有个技巧:让 AI 分两步输出。第一步先输出元件列表,我确认没问题之后再让它输出网络列表。这样比一次性输出所有内容更容易排查错误。我一开始图省事让它一次全输出,结果元件和网络混在一起,有个引脚连错了都没发现,后来分开做就清爽多了。

3.5 数据格式的校验与转换

AI 输出的数据不能直接往工程文件里塞,中间得有一层校验和转换。校验主要查三件事:元件位号有没有重复、网络连接有没有悬空引脚、电源和地的网络有没有正确合并。

位号重复是个高频问题。AI 生成位号的时候,有时候会给两个电阻都标 R1,或者电容从 C1 开始但中间跳号。我写了一个简单的校验脚本,把所有位号收集起来查重,发现重复就报出来让 AI 重新生成。

悬空引脚是另一个坑。STM32F103C8T6 有 48 个引脚,其中有些是电源脚、有些是地脚、有些是功能脚。如果 AI 漏掉了某个电源脚没接,原理图上看不出来,但打板回来芯片根本不工作。我的做法是让 AI 输出一份引脚连接对照表,把每个引脚连到哪里都列出来,然后我人工核对一遍。这个核对过程不能省,AI 再聪明也可能漏。

转换这层主要是把 AI 输出的通用格式,转成嘉立创 EDA 能识别的具体格式。这部分我写了一个 Python 脚本,读入 AI 生成的 JSON 数据,输出符合 EDA 格式的文件。脚本本身不复杂,核心就是字段映射和格式拼接。

4. 实操过程与核心环节实现

4.1 环境准备的具体步骤

先说环境准备。我是在 Windows 上操作的,整体流程如下。

第一步,安装 Claude Code。按照官方文档的指引装好,配置好访问凭证。装完之后在命令行里跑一下,确认能正常启动和响应。

第二步,安装嘉立创 EDA 专业版。这个去官网下载安装包,一路下一步就行。装完之后新建一个空白工程,随便放个元件保存一下,确认软件本身工作正常。

第三步,准备项目目录。我建了一个叫stm32_min_system_auto的目录,里面分了几个子目录:eda_project放嘉立创 EDA 的工程文件,scripts放我的转换和写入脚本,ai_output放 Claude Code 生成的数据,logs放日志。这样结构清晰,出了问题也好排查。

第四步,测试 Claude Code 的文件读写能力。让它读一下ai_output目录下的一个测试文件,再写一个测试文件进去,确认它能正常操作这个目录。

4.2 用 Claude Code 生成元件与网络数据

环境准备好之后,就可以让 Claude Code 干活了。我把前面整理好的元件清单和连接关系,加上格式说明和示例,一起作为提示词发给它。

这里我贴一段我实际用的提示词结构,你可以参考:

任务:生成 STM32F103C8T6 最小系统的原理图数据 元件清单: - U1: STM32F103C8T6, LQFP48 - Y1: 8MHz 晶振 - C1, C2: 20pF 负载电容 - C3-C6: 100nF 退耦电容 - C7, C8: 10uF 电解电容 - R1: 10kΩ 复位上拉 - C9: 100nF 复位滤波 - SW1: 复位按键 - R2, R3: 10kΩ 下拉电阻 - J1: 4Pin SWD 排针 连接关系: - U1 的 VDD 引脚接 3.3V,每个 VDD 旁接一个 100nF 到地 - U1 的 VBAT 接 3.3V - U1 的 NRST 接 R1 一端,R1 另一端接 3.3V;NRST 同时接 C9 到地,接 SW1 到地 - U1 的 OSC_IN 接 Y1 一端和 C1 一端,C1 另一端接地 - U1 的 OSC_OUT 接 Y1 另一端和 C2 一端,C2 另一端接地 - U1 的 BOOT0 接 R2 到地 - U1 的 PB2 接 R3 到地 - U1 的 SWDIO 和 SWCLK 接到 J1 输出格式: 请输出 JSON 格式,包含 components 和 nets 两个数组。 components 每项包含:ref, value, footprint nets 每项包含:name, connections(每项为 ref.pin 格式) 示例: { "components": [ {"ref": "R1", "value": "10k", "footprint": "R0603"} ], "nets": [ {"name": "NRST", "connections": ["U1.NRST", "R1.1", "C9.1", "SW1.1"]} ] }

Claude Code 拿到这个提示词之后,会生成一份 JSON 数据。我一般会先让它只生成 components 部分,确认元件清单没问题,再让它生成 nets 部分。这样分步走,出错概率低很多。

4.3 数据校验脚本的编写

AI 生成的数据拿到手之后,第一件事是校验。我写了一个 Python 脚本做三件事:查位号重复、查引脚悬空、查电源网络。

查位号重复很简单,把所有 ref 收集起来,用集合去重,长度对不上就说明有重复。查引脚悬空稍微复杂一点,需要先有一份 STM32F103C8T6 的完整引脚列表,然后遍历所有 net 的 connections,看哪些引脚没被覆盖到。查电源网络是确认 3.3V 和 GND 这两个网络存在,并且连到了该连的地方。

import json def check_duplicate_refs(components): refs = [c['ref'] for c in components] seen = set() dupes = [] for r in refs: if r in seen: dupes.append(r) seen.add(r) return dupes def check_unconnected_pins(nets, all_pins): connected = set() for net in nets: for conn in net['connections']: connected.add(conn) return [p for p in all_pins if p not in connected] def check_power_nets(nets): names = [n['name'] for n in nets] return '3.3V' in names and 'GND' in names

这个脚本跑一遍,有问题就反馈给 Claude Code 让它修正。我实测下来,第一轮生成的数据大概有七八成是对的,剩下的靠校验脚本抓出来再修。

4.4 写入嘉立创 EDA 工程的实现

数据校验通过之后,就要往工程文件里写了。这一步是整个流程里最需要小心的,因为写坏了工程可能就打不开了。

我的做法是:先备份原始工程,然后在副本上操作。写入脚本读入校验后的 JSON 数据,按照嘉立创 EDA 的格式要求,生成对应的元件记录和网络记录,追加到工程文件里。

这里有个关键点:嘉立创 EDA 的工程文件里,元件和网络是分开存储的,而且元件的位置信息、旋转角度这些也要给。我一开始只给了元件和连接关系,没给位置,结果导入之后所有元件叠在一起,根本没法看。后来我在数据里加了坐标信息,让 AI 按网格布局给每个元件分配位置,导入之后就整齐多了。

坐标这块我的做法是:主控芯片放中间,晶振和负载电容放左边,复位电路放右下,退耦电容靠近芯片的电源引脚,调试排针放右边。这些位置信息我也让 Claude Code 一起生成,它按我给的布局规则分配坐标,效果还不错。

4.5 打开工程校验与人工修正

写入完成之后,用嘉立创 EDA 专业版打开工程,做最后的校验。我一般会检查这几项:元件是不是都在、位号有没有重复、连线有没有断、电源和地有没有连上、晶振和复位电路是不是正确。

这一步 AI 帮不上太多忙,主要靠人眼。但前面校验脚本已经把大部分低级错误排掉了,所以人工检查的压力小很多。我实测下来,从打开工程到确认无误,大概十分钟左右。

如果发现问题,就回到数据层面去修,改完 JSON 重新写入。不要直接在 EDA 里手动改,因为下次重新生成的时候会把你的手动修改覆盖掉。保持“数据是唯一来源”这个原则,整个流程才可重复。

5. 常见问题与排查技巧实录

5.1 元件导入后位号重复或跳号

这是最常见的问题。AI 生成位号的时候,有时候会犯迷糊,给两个电容都标 C1,或者从 C1 跳到 C3 中间空一个。解决办法就是在校验脚本里加查重逻辑,发现重复就报出来,让 AI 重新生成。跳号问题不影响功能,但看着难受,我一般也会让 AI 修正。

提示:给 AI 的提示词里明确写清楚位号的命名规则,比如“电阻从 R1 开始连续编号,电容从 C1 开始连续编号”,能大幅降低这类问题。

5.2 引脚悬空导致功能异常

STM32F103C8T6 有多个 VDD 和 VSS 引脚,如果漏接其中一个,芯片可能时好时坏。我的排查方法是维护一份完整的引脚清单,用脚本比对哪些引脚没被任何网络覆盖。发现悬空就补上连接。

这里有个经验:电源和地引脚最容易漏,因为它们在原理图上通常不画连线,而是用电源符号表示。我在数据里把电源和地也当成普通网络处理,每个电源引脚都显式连到 3.3V 网络,每个地引脚都显式连到 GND 网络,这样就不会漏。

5.3 晶振负载电容取值不当

负载电容的取值不是拍脑袋定的。晶振的规格书里会给出一个负载电容参数,比如 20pF。实际用的电容值要按公式算:C1 = C2 = 2 × (CL - Cstray),其中 CL 是晶振的负载电容,Cstray 是 PCB 的寄生电容,一般取 3 到 5pF。如果晶振 CL 是 20pF,Cstray 取 4pF,那 C1 和 C2 就是 32pF,取标准值 33pF。

我一开始直接用了 20pF,结果晶振起振不稳定。后来按公式算了一下改成 33pF,就稳了。这个细节 AI 不一定知道,得靠人把关。

5.4 工程文件写入后无法打开

这个问题通常是因为写入的格式不对,比如字段名拼错、括号不匹配、编码不对。我的排查步骤是:先用备份的原始工程确认软件本身没问题,然后对比写入前后的文件差异,找到出错的字段。建议写入脚本每次操作前都自动备份,出问题能快速回滚。

5.5 常见问题速查表

问题现象可能原因排查方法解决方式
元件导入后消失格式字段不匹配对比原始工程文件修正字段名和格式
位号重复AI 生成时未查重跑查重脚本让 AI 重新生成
引脚悬空连接关系遗漏跑引脚覆盖检查补充连接关系
晶振不起振负载电容取值不当核对晶振规格书按公式重算电容值
工程打不开文件格式损坏对比备份文件回滚后重新写入
元件叠在一起缺少坐标信息检查数据中是否有坐标补充坐标并重新布局

5.6 几个我踩过的坑

第一个坑是没备份就写入。有一次写入脚本出了 bug,把工程文件写坏了,原始工程又没备份,只能重新建。从那以后我养成了写入前必备份的习惯。

第二个坑是提示词太模糊。一开始我只说“生成最小系统原理图数据”,没给格式要求,AI 输出的东西五花八门,根本没法用。后来把格式、示例、约束都写清楚,输出质量立马就上来了。

第三个坑是忽略了电源网络的合并。AI 生成的数据里,3.3V 可能被写成 VCC、VDD、3V3 好几个名字,导致电源网络没合并到一起。后来我在校验脚本里加了网络名归一化,把所有电源别名统一成 3.3V,问题就解决了。

6. 关于这套方案的一些个人体会

这套流程跑通之后,我最大的感受是:AI 在硬件设计里的定位,目前还是“高效的执行者”,而不是“可靠的决策者”。它能帮你把重复劳动干掉,把画图的时间从一小时压缩到十分钟,但电路本身的正确性、参数的合理性,还是得人来判断。晶振电容选多大、复位电路怎么设计、电源怎么处理,这些 AI 给的建议只能当参考,最终拍板的是你。

另外,这套方案的可扩展性其实挺强的。STM32F103C8T6 最小系统只是一个例子,同样的思路可以套到其他芯片上,比如 STC89C52RC、ESP32、甚至一些电源管理芯片。只要把元件清单和连接关系整理清楚,让 AI 生成数据,再写入工程,流程是一样的。我后面打算把这套东西做成一个模板,换芯片的时候只改元件和连接关系,其他部分复用。

最后分享一个小技巧:如果你觉得让 AI 直接生成完整数据太难,可以先让它生成一个“骨架”,比如只放主控芯片和电源,确认没问题之后再逐步加外围电路。这样每一步都可控,出问题也好定位。我一开始贪快想一步到位,结果错误堆在一起,排查起来很痛苦。后来改成增量式,先电源后时钟再复位,每一步都校验,整体效率反而更高。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询