ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

用Claude Code远程操控嘉立创EDA自动绘制STM32最小系统原理图

用Claude Code远程操控嘉立创EDA自动绘制STM32最小系统原理图 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.3VNRST 同时接 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 是 20pFCstray 取 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 直接生成完整数据太难可以先让它生成一个“骨架”比如只放主控芯片和电源确认没问题之后再逐步加外围电路。这样每一步都可控出问题也好定位。我一开始贪快想一步到位结果错误堆在一起排查起来很痛苦。后来改成增量式先电源后时钟再复位每一步都校验整体效率反而更高。
返回列表