硬件方案与接线

硬件方案是这个平台里最先定下来、也最不应随意变更的部分。固件是按照它写的,接线是按照它接的。这一篇讲它怎么来的、怎么读、以及接线前要核什么。

一览

支持的框架esp-idfarduino,只有这两种
支持的硬件esp-idf 的构建目标:esp32 / s2 / s3 / c2 / c3 / c6 / h2。arduino 的开发板:ESP32 与 ESP8266 系列开发板、Arduino Uno
方案里有什么框架、目标、器件清单、引脚连接、约束条目、记录在案的需求
方案里没有什么元件的具体电气参数、PCB 布局、外壳、电源设计
谁说了算你。它出方案,你确认了才生效
引脚可靠性照资料推的,不是量出来的。接线前必须对实物核一遍

它是怎么替你选的

你描述完想做什么,它会做三件事:挑一颗主控、挑外围器件、把引脚排好。挑的依据按优先级是:

  1. 你手上已经有的。你说了型号,它就围着你的型号做,不会另选。
  2. 你的功能需求。要跑屏幕就得有足够的内存和接口,要跑蓝牙就得选带蓝牙的。
  3. 平台支持得好不好。它宁可给你一个稳的方案,而不是一个新颖但容易出问题的。

所以第 1 条最有价值。开头就说清楚你手上有什么,可以避免「方案里的板子我没有 / 我有的板子方案没用上」这一整轮。

提议 → 确认 → 冻结

方案有三个阶段,界面上都能看出来:

提议它给出一版方案,在对话里展示。这时候还不算数,你可以随便让它改
确认你在对话里说「确认」,它就不再改动这一版,准备冻结。这一步还没有生成任何固化的快照
冻结方案被固化成一个带版本号的快照。之后写固件、编译,都以这个快照为准。Main 面板顶部会从「未冻结」变成「已冻结 #1」,顶栏也是到这一步才出现「硬件方案已确认」

冻结之后,对话里会出现一张方案卡,用三行数字说明固化了什么:几项器件、几条连接、几条约束。

为什么要冻结

因为固件必须依据一份固定不变的事实编写。如果方案边写边改,你会遇到「代码用的是旧引脚、表上写的是新引脚」这种最难查的问题。冻结的意思是:从这一刻起,写码和接线用的是同一份事实。

冻结不是永久的。需要修改时告知它即可,它会出新的一版重新走一遍确认。

冻结被拦住了怎么办

当你在对话里要求冻结时,有时会看到「冻结受阻」,下面列着几条待确认的项。这不是故障——它是在说:有些事实它没把握,怕替你做主。比如某个器件的 I²C 地址原理图上没写、某个模块的供电方式它推不出来。

两条路:

  1. 逐条给答案(推荐)。在对话里回答那几条,比如 那个触摸芯片的地址是 0x5A,我量过。信息补齐了自然就能冻。
  2. 知晓后仍然冻结。那一块的下面有这个按钮。点它会把你的决定发给助手,由助手带着这几条阻塞项重新提交冻结。代价是那几条以后可能真的是错的。

四个支持等级

顶栏一直挂着一个「硬件支持」标记。它回答的是:你现在这条路,平台有多大把握。

推荐能为这套硬件挑出构建目标,而且硬件事实已经齐备。可以直接往下走
可尝试构建目标挑得出来,但硬件事实还缺一块——通常是器件已经列出来了、引脚连接还没定。能做,出问题的概率高一些
信息不足不是说不行,是说你给的信息还不够判断。补一句完整型号通常就变了
不支持框架认出来了,但这个目标不在能力目录里,重试无用。它宁可现在说,也不假装能做然后在编译时炸掉

「信息不足」是最容易被误读的一个。看到它先别换板子——把板子上印的那一整串型号报给它,通常就过了。

读懂模块清单

Main 面板里的「模块清单」这一块,回答「它替我选了什么」。它是一份列表,每一行是一个器件,右边是它占用的引脚。

每行会标一个类型:

主控芯片核心那颗芯片本身,比如 ESP32-S3
开发板芯片焊在上面的那块成品板,比如 ESP32-S3-DevKitC-1。它右边列的引脚是这块板子上可用的脚
模块外围器件:传感器、屏幕、PMU 等。右边列的是这个器件自己的引脚名(比如 SCLSDARESET

按照这份清单采购。型号要对得上——同一个功能的模块,不同厂家引脚顺序可能完全不同。

读懂引脚连接表

模块清单下面那一块叫「引脚连接」,回答「怎么接线」。每一行是一条连接:某个模块的某个脚 → 开发板的某个脚

模块左边是外围器件和它自己的引脚名
连到
开发板右边是开发板上的 GPIO 编号
类型这条线是干什么的:电源 / 地 / 信号,或者具体的总线名(I²C、QSPI 等)

⚠️ 板载已经连好的 vs 需要你自己接

这是最容易弄错、也最容易损坏器件的一处。

如果某个器件原本就焊在开发板上(比如板载的屏幕、板载的电源管理芯片),那么表里那些连接已经在板子内部连好了,你什么都不用接。这时候你要是按照表去外面又接一遍线,轻则不工作,重则短路。

只有那些你自己额外插上去的模块(面包板上的传感器、外接的屏幕)才需要按表接线。

怎么分辨:看模块清单里那一行是不是「开发板」自带的一部分。分不清就直接问它:

这张引脚表里,哪些是板子上已经连好的,哪些需要我自己接线?

接线之前,核一遍

它给的引脚是照资料推的,不是量出来的。没做过联网核对时,界面上也写着这句话:「引脚未经联网核对,接线前请对照实物确认。」做过之后,那个位置显示的是最近一次联网核查的时间。

核什么:板子上印的丝印字。把表里的 GPIO4 和你板子上印的 4D4 对上号。同一个系列不同型号的板子,引脚排布可能完全不同。

面包板上 HC-SR04 通过四根杜邦线接到 ESP32-S3-DevKitC-1
接对了的样子:HC-SR04 的四根线接到 ESP32-S3-DevKitC-1——TRIG→GPIO2ECHO→GPIO1GND→GND,VCC 按模块自身的供电要求接。

Main 面板上还有什么

往下滚还有这几块:

接线约束(必读)方案里那些会出事的地方,单独列在这里。动手之前先读这一块。接线之前也请确认手上的模块是 3.3V 还是 5V 版本,供电和信号电平要和板子对得上
记录在案的需求它把你说过的要求逐条记下来,写固件时按这个来。可以当验收清单用
固件已实现功能到目前为止固件里真的写了哪些功能。这张表是从代码里来的,不是从计划来的——它说有,就是真的有
编译产物最近一次编译的结果,四行:「编译」(状态)、「框架」、「构建目标」、「大小」。失败时还会多一行「失败环节」
如果你熟悉软件开发

把「冻结的硬件方案」理解成一份 lockfile:它锁的不是依赖版本,是物理事实——哪颗芯片、哪几个脚、哪条总线。固件生成是以这份 lock 为输入的,改 lock 就要重新生成。

和 lockfile 不同的是:它没法验证。npm ci 会因为 lock 和 registry 对不上而失败,而这里,你把线接错了,编译仍然通过、烧录仍然成功,只有 Console 里那几行输出会告诉你不对。所以「接线前对实物核一遍」不是客套话,它是这条链路上唯一的校验环节,而且只能由你来做。

常见问题

我能指定用哪些引脚吗?

能,直接说。HC-SR04 的 TRIG 我要接 GPIO4,不要 GPIO2。它会重排方案。

方案确认之后还能改吗?

可以。说明想修改的内容,它会出新的一版。之前的版本仍然留着。

为什么不能用 GPIO6 到 GPIO11?

在经典 ESP32 上这几个脚接着 flash 芯片,占用它们板子就起不来。它一般会避开,但如果你自行指定就会遇到——所以描述需求时可以一并加上一句 不要用 GPIO6 到 GPIO11

它给的方案我看不懂,能让它解释吗?

可以,这也是最简便的用法:解释一下为什么选这颗芯片这几条 QSPI 的线分别是做什么的哪些引脚还空着。你不需要看懂生成的代码,但可以随时问。