必備:主流開發(fā)板引腳圖查詢指南與工具推薦)
每個(gè)嵌入式開發(fā)者都應(yīng)該收藏的寶藏網(wǎng)址——智能開發(fā)板引腳圖查詢指南干嵌入式這些年我發(fā)現(xiàn)自己干得最多的一件事不是寫代碼而是翻引腳圖。焊板子要翻、調(diào)驅(qū)動(dòng)要翻、連傳感器要翻甚至有時(shí)候就是單純記不清某個(gè)引腳默認(rèn)復(fù)用成了什么功能也得翻。說實(shí)話一張清晰、準(zhǔn)確的開發(fā)板引腳圖比很多花里胡哨的教程都管用。這個(gè)需求看起來很小但踩過坑的人都懂引腳搞錯(cuò)了輕則功能不工作重則燒芯片。這篇文章就專門聊聊開發(fā)板引腳圖這件事。我整理了這些年自己真正用下來覺得靠譜的網(wǎng)址和工具也把查引腳、對(duì)著引腳做開發(fā)的一些經(jīng)驗(yàn)和教訓(xùn)一并分享出來。不管你是剛?cè)腴T的單片機(jī)新手還是已經(jīng)在嵌入式 Linux 里摸爬滾打的老手這篇內(nèi)容應(yīng)該都能幫你省下不少時(shí)間。1. 引腳圖為什么是嵌入式開發(fā)的“隱性地基”很多初學(xué)者拿到一塊開發(fā)板第一件事是找例程、點(diǎn)亮LED很少有人會(huì)認(rèn)認(rèn)真真把整塊板的引腳布局看一遍。但實(shí)際做項(xiàng)目之后你會(huì)慢慢意識(shí)到引腳圖才是開發(fā)板所有資料里信息密度最高的一張圖。1.1 引腳圖里到底藏了哪些關(guān)鍵信息一張正經(jīng)的開發(fā)板引腳圖通常包含遠(yuǎn)比“哪個(gè)引腳在哪”更多的信息。首先是物理位置和編號(hào)這個(gè)最直觀。開發(fā)板引腳圖會(huì)明確標(biāo)注每個(gè)引腳的絲印編號(hào)比如 STM32 核心板上的 PA0、PA1ESP32 DevKit 上的 GPIO0、GPIO2樹莓派 40Pin 上的物理引腳 1、2、3。這些編號(hào)是你寫代碼、連杜邦線、畫原理圖時(shí)溝通的基本語言兩邊對(duì)不上一切白搭。其次是功能復(fù)用信息這是最容易踩坑的部分?,F(xiàn)代 MCU 的引腳幾乎都是“一針多能”同一個(gè)引腳既能當(dāng)普通 GPIO 用又能當(dāng) UART 的 TX、I2C 的 SCL、PWM 的輸出通道甚至還能是 ADC 的采樣通道。引腳圖上通常會(huì)用不同顏色的框或者縮寫把這些復(fù)用功能標(biāo)出來。你光知道這個(gè)引腳標(biāo)著 PA9不知道它默認(rèn)復(fù)用是 USART1_TX寫代碼的時(shí)候就會(huì)很迷茫為什么我用 HAL 庫(kù)初始化串口卻沒反應(yīng)。然后是電平標(biāo)準(zhǔn)和電氣特性這部分在好一點(diǎn)的引腳圖上也會(huì)有比如 5V 容忍、3.3V 邏輯電平、最大灌電流等。這些信息決定了你能不能把某個(gè)引腳直接連到 5V 的傳感器上還是必須加電平轉(zhuǎn)換芯片。忽略這些短時(shí)間內(nèi)可能沒事一旦環(huán)境出現(xiàn)波動(dòng)芯片就可能莫名其妙掛了。1.2 引腳出錯(cuò)到底會(huì)造成什么后果我見過太多因?yàn)橐_搞錯(cuò)而引發(fā)的“靈異事件”這里舉幾個(gè)典型的例子。最常見的是調(diào)試串口不輸出。新手拿到 STM32 核心板想用串口打印日志把 USB 轉(zhuǎn) TTL 模塊的 RX 接到了板子的 RX 上TX 接到了 TX上也就是所謂的“直連”。如果引腳圖上看一眼“交叉連接”的標(biāo)識(shí)就不會(huì)犯這個(gè)錯(cuò)。但就是因?yàn)闆]仔細(xì)看圖折騰了一晚上還以為板子壞了。還有一類是“引腳沖突”。比如你用 ESP32 的 GPIO12 接了一個(gè)按鍵又同時(shí)用這個(gè)引腳去驅(qū)動(dòng) SD 卡或 Flash 的片選結(jié)果發(fā)現(xiàn)系統(tǒng)啟動(dòng)時(shí)總是異常。翻一下 ESP32 的引腳圖你會(huì)發(fā)現(xiàn)GPIO12 是 MTDI 引腳上面通常接了上拉電阻影響了啟動(dòng)時(shí)的 Flash 電壓選擇。這一類“隱藏陷阱”只有看了詳細(xì)的引腳圖才能提前避開。更嚴(yán)重的還有燒毀器件。把 5V 外設(shè)直接接到不支持 5V 容忍的 3.3V 引腳上輕則外設(shè)工作異常重則直接把 MCU 的 GPIO 口燒掉。就我個(gè)人而言手頭至少有兩三塊板子是這么“意外犧牲”的。所以說引腳圖這東西是真真正正的“隱性地基”你可能平時(shí)感覺不到它的存在但一旦沒看明白后續(xù)的所有工作都可能翻車。2. 權(quán)威與寶藏那些值得放進(jìn)收藏夾的引腳圖網(wǎng)站標(biāo)題里說“寶藏網(wǎng)址”那這部分就是全文的核心。下面這些網(wǎng)站和工具可以說是我“收藏夾里的常駐嘉賓”每一條都有它不可替代的價(jià)值。2.1 芯片原廠官網(wǎng)最權(quán)威的引腳圖來源排在第一位的永遠(yuǎn)是芯片原廠的官網(wǎng)。很多網(wǎng)友喜歡到處搜“某某芯片引腳圖高清大圖”結(jié)果搜到的圖要么模糊不清要么引腳編號(hào)標(biāo)反甚至拿別的芯片的引腳圖來充數(shù)。這種坑我已經(jīng)踩過太多次了。以 ST 的芯片為例ST官網(wǎng)的“Product”頁(yè)面下每個(gè)型號(hào)都有一個(gè)“CAD Resources”或“Technical Literature”區(qū)域里面可以下載官方的 Datasheet 和參考手冊(cè)。Datasheet 里的引腳圖是最權(quán)威的因?yàn)樗切酒O(shè)計(jì)團(tuán)隊(duì)自己畫的引腳間距、編號(hào)方向、功能標(biāo)注都是精確的。具體怎么找我一般這么操作先去 ST 官網(wǎng)搜索芯片型號(hào)比如“STM32F407VET6”進(jìn)入產(chǎn)品頁(yè)面后點(diǎn)“Documentation”里面幾乎都有 PDF 版 Datasheet。下載下來后直接搜索關(guān)鍵詞“Pinout”或者“Pin description”就能定位到引腳圖和引腳功能表。其他原廠也是同樣的套路樂鑫 EspressifESP32、ESP8266 的數(shù)據(jù)手冊(cè)和技術(shù)參考手冊(cè)在官網(wǎng)都開放下載而且近幾年還提供了非常清晰的 Pin Mux 工具網(wǎng)址是 espressif.com 的“技術(shù)文檔”板塊。樹莓派基金會(huì)樹莓派的所有型號(hào)官方引腳定義直接在 raspberrypi.com 的“Documentation”里有一頁(yè)專門叫“GPIO”把 40Pin 的每一個(gè)引腳功能都標(biāo)得清清楚楚包括 BCM 編號(hào)和物理編號(hào)的對(duì)應(yīng)關(guān)系。德州儀器 TITI 的 Datasheet 和 EVM 板卡資料都很規(guī)范尤其在“ti.com/tool”頁(yè)面下能找到各種 LaunchPad 的“Design Files”和“Schematic”引腳圖自然不在話下。原廠資料的優(yōu)點(diǎn)是權(quán)威、完整、更新及時(shí)缺點(diǎn)則是需要自己去翻找英文資料居多對(duì)新手稍有門檻。2.2 Pinout.xyz 與 Pinout 系列網(wǎng)站快速查看樹莓派、Arduino 引腳的利器如果說原廠官網(wǎng)是“正史”那 Pinout.xyz 這類站點(diǎn)就是“通俗演義”特別適合快速查閱和日常開發(fā)參考。Pinout.xyz 最初是為樹莓派做的頁(yè)面設(shè)計(jì)的非常直觀左邊是樹莓派 40Pin 的物理排列圖鼠標(biāo)懸停在某個(gè)引腳上右邊就會(huì)顯示它的全部功能GPIO 編號(hào)、PWM 通道、I2C 總線、SPI 接口等等。對(duì)于樹莓派玩家來說這個(gè)網(wǎng)站比紙質(zhì)圖方便一萬倍因?yàn)槟悴挥糜洃浺苿?dòng)鼠標(biāo)就能看到“這個(gè)引腳都能干什么”。后來這個(gè)項(xiàng)目擴(kuò)展了很多硬件平臺(tái)包括 Arduino、BeagleBone、Onion Omega 等等。雖然支持的板卡數(shù)量不如原廠那么多但只要搜到的型號(hào)信息都挺用心的頁(yè)面布局也統(tǒng)一。還有一個(gè)類似工具叫 Pinouts是一個(gè)社區(qū)維護(hù)的在線引腳數(shù)據(jù)庫(kù)原理和 Pinout.xyz 類似但是覆蓋面更大很多國(guó)產(chǎn)開發(fā)板比如 WeMos D1、NodeMCU、Orange Pi 也能在上面找到圖解版引腳圖。這類網(wǎng)站最適合的場(chǎng)景是你手頭有一塊板子只是想確認(rèn)某個(gè)引腳的復(fù)用功能不想下載一個(gè)幾十頁(yè)的 PDF 慢慢翻。2.3 開發(fā)板廠商官網(wǎng)與 GitHub 倉(cāng)庫(kù)Esptool、Adafruit、Seeed 等除了芯片原廠開發(fā)板廠商和開源硬件社區(qū)的引腳圖資源也非常豐富甚至更貼近“開發(fā)板”這個(gè)實(shí)際使用場(chǎng)景。Adafruit 是我特別欣賞的一家它是美國(guó)知名的開源硬件廠商。Adafruit 官網(wǎng)上每個(gè)開發(fā)板比如 Adafruit Feather、ItsyBitsy、Circuit Playground都有專門的“Pinouts”頁(yè)面這些頁(yè)面是學(xué)習(xí)板卡最好的入口直接告訴你哪個(gè)引腳接 LED、哪個(gè)引腳接按鍵、哪些引腳有特殊功能。而且 Adafruit 還維護(hù)了一個(gè)“Fritzing”元件庫(kù)里面包含了大量開發(fā)板的接線圖畫電路原理圖或者做面包板實(shí)驗(yàn)時(shí)很有用。國(guó)內(nèi)的 Seeed Studio矽遞科技和 DFRobot 也做了類似的事情。在它們的 wiki 里幾乎每一款開發(fā)板都有配套的引腳圖說明比如 Seeed 的 XIAO 系列、Grove 系列。這些廠商還有一個(gè)優(yōu)點(diǎn)就是會(huì)為開發(fā)者準(zhǔn)備“Grove 擴(kuò)展板”之類的配件并且給出“傳感器 A 插哪個(gè)接口、傳感器 B 插哪個(gè)接口”的傻瓜式說明非常適合快速搭建原型。GitHub 上也有很多寶藏倉(cāng)庫(kù)值得收藏。比如有個(gè)“pins”開源項(xiàng)目收集了大量開發(fā)板的 JSON 格式引腳定義還有各家板卡的 Arduino Core、Zephyr 設(shè)備樹文件里也都包含了引腳復(fù)用的完整信息。如果你已經(jīng)能看懂設(shè)備樹或者 HAL 庫(kù)的引腳宏定義GitHub 反而比看 PDF 更高效。2.4 搜索引擎技巧用對(duì)關(guān)鍵詞三分鐘找到高清引腳圖搜索引擎依然是最快的工具問題在于大部分人不會(huì)搜。這里分享幾個(gè)我自己常用的搜索技巧。第一個(gè)技巧在搜索關(guān)鍵詞中加上“pinout”而不是“引腳圖”。因?yàn)樾酒烷_發(fā)板的大量一手資料是英文的搜中文經(jīng)常只剩論壇轉(zhuǎn)載貼圖還多半被水印蓋得看不清。比如你想找 STM32F103C8T6 的引腳圖搜“STM32F103C8T6 pinout”出來的結(jié)果質(zhì)量遠(yuǎn)高于搜“STM32F103C8T6 引腳圖”。第二個(gè)技巧限定文件類型。在搜索引擎里輸入“STlink V2 引腳圖 filetype:pdf”可以快速定位到 PDF 原版文檔。PDF 通常是廠家直接發(fā)布的圖片清晰度高放大也不會(huì)糊比網(wǎng)頁(yè)上的壓縮圖靠譜很多。第三個(gè)技巧用型號(hào)加“schematic”去搜原理圖。有時(shí)候你需要的不僅是引腳定義還希望知道開發(fā)板上這個(gè)引腳連到了什么外設(shè)、有沒有上下拉電阻、有沒有串接的濾波電容。這種情況下“開發(fā)板型號(hào) schematic”就很有效。我的經(jīng)驗(yàn)是先花一分鐘用原廠資料確認(rèn)核心引腳的電氣特性再用開源社區(qū)的網(wǎng)站快速查看復(fù)用手冊(cè)最后用搜索引擎處理查詢“這張圖上那個(gè)看不清的引腳”。三者結(jié)合基本上能覆蓋絕大多數(shù)查引腳的需求。3. 各主流開發(fā)板引腳速查與組件級(jí)細(xì)節(jié)光有網(wǎng)址還不夠下面把這些主流開發(fā)板、核心板、調(diào)試器的引腳重點(diǎn)和查看捷徑一并梳理一下。這個(gè)板塊適合先收藏等真正用到的時(shí)候再回來對(duì)著查。3.1 STM32 系列F103、F407、F103C8T6 等常見型號(hào)STM32 系列是國(guó)產(chǎn)嵌入式開發(fā)者的老朋友了。不過 STM32 型號(hào)繁多引腳封裝也各不相同。常見的有 LQFP48、LQFP64、LQFP100、LQFP144、BGA 等等。先看 STM32F103C8T6這是傳說中的“藍(lán) pill”核心板用的主控LQFP48 封裝48 個(gè)引腳屬于 STM32F1 系列里最具性價(jià)比的型號(hào)之一。在配套的核心板上一般會(huì)把所有引腳引出為兩排排針。你需要關(guān)注的重點(diǎn)是PA9/PA10 是 USART1 的 TX/RX、PA2/PA3 是 USART2 的 TX/RX、PA0~PA7 和 PB0~PB1 這 10 個(gè)引腳是 ADC1 的輸入通道。另外PB2 是 BOOT1 引腳如果用作普通 IO 要特別注意系統(tǒng)啟動(dòng)設(shè)置。然后是 STM32F407VET6這是很多中高級(jí)項(xiàng)目選擇的型號(hào)LQFP100 封裝100 個(gè)引腳資源比 F103 豐富得多。F407 最值得關(guān)注的是它的復(fù)用功能極其復(fù)雜一個(gè)引腳往往有十幾個(gè)可選功能所以不能只看引腳序號(hào)還要看引腳圖上的 AFAlternate Function表格。比如 PA2 除了能做 USART2_TX還可以是 TIM5_CH3、ADC123_IN2甚至是 ETH_MDIO。選功能的時(shí)候務(wù)必確認(rèn)這個(gè)引腳有沒有被其他外設(shè)占用。查詢工具方面ST 官方提供了一個(gè)叫 STM32CubeMX 的軟件它雖然主要用于代碼生成但其芯片引腳配置界面本身就是一張“活著的引腳圖”。你可以在圖形界面上點(diǎn)擊任何一個(gè)引腳直接看到它的所有可用復(fù)用功能還能實(shí)時(shí)發(fā)現(xiàn)引腳沖突。我強(qiáng)烈建議每個(gè) STM32 開發(fā)者都用這個(gè)工具輔助查看引腳定義比對(duì)著 PDF 效率高得多。ST-Link 調(diào)試器也是 STM32 開發(fā)者的日常工具。ST-Link/V2 的接口引腳圖網(wǎng)上版本很多有一點(diǎn)要特別注意標(biāo)準(zhǔn)的 ST-Link/V2 的排針定義里3.3V 和 5V 兩個(gè)電源引腳的位置不同有的版本是 3.3V 在右邊5V 在左邊。如果你用的是十塊錢包郵的國(guó)產(chǎn)“ST-Link 山寨版”引腳定義可能跟官方不完全一致務(wù)必看著實(shí)物絲印或賣家圖接線。3.2 ESP32 系列ESP32、ESP32-S3 開發(fā)板的引腳特征ESP32 系是物聯(lián)網(wǎng)開發(fā)者的主力選手。ESP32 共有 34 個(gè) GPIO但并不是所有 GPIO 都引到了開發(fā)板上而且很多 GPIO 的默認(rèn)狀態(tài)或者復(fù)用方向有特殊限制。ESP32 DevKitC 系列開發(fā)板一般引出了 30 個(gè)引腳兩排排針。它們已經(jīng)把很多關(guān)鍵外設(shè)連接到了板上比如 GPIO1 和 GPIO3 是板載 USB-UART 的 TX/RX 引腳GPIO2、GPIO4、GPIO12……不同模組版本之間也略微不同。最需要注意的是GPIO6~GPIO11 是連接外部 SPI Flash 的引腳盡量不要用作普通 IO否則可能干擾 Flash 讀寫。GPIO12 是 MTDI內(nèi)部有上拉會(huì)影響啟動(dòng)電壓設(shè)計(jì)中要特別小心。GPIO0 是 BOOT 引腳低電平觸發(fā)下載模式。再說 ESP32-S3這款芯片是樂鑫近年力推的產(chǎn)品帶 AI 加速、支持 USB OTG。ESP32-S3 開發(fā)板的引腳圖有幾個(gè)比較獨(dú)特的點(diǎn)GPIO0、GPIO3、GPIO4、GPIO5 這類引腳默認(rèn)就有 JTAG 或 USB 功能映射。有專門的 GPIO19、GPIO20 用作 USB D-/D如果你要用 USB 通信這倆引腳就是綁定關(guān)系。ESP32-S3 支持 ADC2 和 ADC1但 ADC2 在 Wi-Fi 開啟時(shí)會(huì)受干擾精度不如 ADC1如果項(xiàng)目有高精度采樣需求盡量把模擬量分配到 ADC1 通道。ESP32 系列引腳的在線資源非常豐富樂鑫官方提供了 ESP32-PICO-KIT、ESP32-DevKitC、ESP32-S3-DevKitC 等各款板卡的“Pin Descriptions”頁(yè)面做的很直觀。還有第三方做了“ESP32 Pinout”在線參考站輸入模塊名即可定位引腳。3.3 樹莓派和嵌入式 Linux 開發(fā)板40Pin GPIO 的潛在陷阱樹莓派的 40Pin GPIO 是開源硬件歷史上最成功的接口標(biāo)準(zhǔn)之一。它的好處是生態(tài)豐富幾乎所有傳感器模塊都有對(duì)應(yīng)的樹莓派庫(kù)壞處則是很多人會(huì)忽略“物理引腳編號(hào)”和“BCM 編號(hào)”的區(qū)別。需要用 Python 的RPi.GPIO庫(kù)操作 GPIO 時(shí)既可以采用 BOARD 模式按物理引腳號(hào)如 11、12也可以采用 BCM 模式按博通芯片的 GPIO 編號(hào)如 17、18。兩個(gè)編號(hào)體系對(duì)照錯(cuò)誤代碼里明明操作的是 GPIO17實(shí)際亮的卻是另一個(gè)引腳。解決這個(gè)問題最簡(jiǎn)單的辦法就是在電腦上放一張樹莓派 GPIO 對(duì)照?qǐng)D或者記熟怪癖物理引腳 3 是 SDA.1物理引腳 5 是 SCL.1物理引腳 7 是 GPIO4 等等。樹莓派引腳圖還有一個(gè)很重要的電氣細(xì)節(jié)所有 GPIO 都是 3.3V 邏輯電平不兼容 5V。如果要接 5V 的傳感器模塊要么模塊自帶電平轉(zhuǎn)換要么自己加一個(gè)雙向電平轉(zhuǎn)換芯片。另外樹莓派的 GPIO 輸出驅(qū)動(dòng)能力很弱一個(gè)引腳撐死幾十毫安想直接驅(qū)動(dòng)繼電器、電機(jī)這類大負(fù)載是基本不現(xiàn)實(shí)的得外接驅(qū)動(dòng)板。至于其他嵌入式 Linux 開發(fā)板比如全志 T113、瑞芯微 RK3568、飛凌、正點(diǎn)原子、韋東山這些廠商的板卡引腳圖一般藏在“硬件資料”或“底板原理圖”里。碰到這類板子我最建議先去板卡廠商提供的“用戶手冊(cè)”里找“接口定義”章節(jié)因?yàn)樗鼈兊牡装逡_定義往往與某幾個(gè)排針編號(hào)強(qiáng)相關(guān)單獨(dú)看芯片原廠的引腳圖反而不夠用。例如正點(diǎn)原子很多開發(fā)板的主控是 STM32MP157 或 RV1126板卡自帶的“開發(fā)板引腳資源分配表”能告訴你哪個(gè)引腳接到了 LED、哪個(gè)引腳接到了按鍵、哪些引腳是獨(dú)占的哪些引腳和 LCD 接口復(fù)用。有了這樣一張表設(shè)計(jì)擴(kuò)展電路時(shí)就能避免“引以為傲的引腳被核心板占用了”這種問題。3.4 其他常用外設(shè)和調(diào)試器ST-Link、JTAG、USB-TTL 引腳圖開發(fā)板是主體但嵌入式開發(fā)中還有一個(gè)隱形的引腳大戶就是各種調(diào)試器、下載器、USB-TTL 轉(zhuǎn)換器。ST-Link/V2 是 STM32 開發(fā)最常用的調(diào)試器上文提到過它的引腳定義。標(biāo)準(zhǔn)的引腳順序按照“3V3、SWDIO、SWCLK、GND、RST、SWIM”但是不同廠家的排線顏色不同很容易接反。我的經(jīng)驗(yàn)是找到 GND 引腳之后其他的就可以靠排除法了因?yàn)?GND 是整個(gè)系統(tǒng)中最好的基準(zhǔn)點(diǎn)用萬用表蜂鳴檔一支表筆接板子的 GND另一支掃排針能叫的那個(gè)引腳就是 GND。JTAG 是另一個(gè)繞不開的接口。標(biāo)準(zhǔn) 20Pin JTAG 的引腳定義里有 TMS、TCK、TDI、TDO、TRST 等有些還帶 VTref 參考電壓檢測(cè)。自己做轉(zhuǎn)接板的時(shí)候務(wù)必要把 TMS/TCK 兩根信號(hào)線布短一點(diǎn)太長(zhǎng)了信號(hào)反射嚴(yán)重調(diào)試器會(huì)連不上芯片。USB-TTL 模塊的引腳圖就簡(jiǎn)單得多一般就是 VCC、GND、TXD、RXD。但這里的“橫豎交叉”已經(jīng)坑了無數(shù)新手USB-TTL 的 TXD 要接目標(biāo)板的 RXDRXD 接目標(biāo)板的 TXD兩個(gè) TX 直接對(duì)連是什么都不會(huì)收到的。4. 從查圖到用圖Pin Mux 工具和自建引腳數(shù)據(jù)庫(kù)前面講的都是“被動(dòng)查圖”這一節(jié)聊點(diǎn)進(jìn)階思路怎么從“查到引腳”到“管理引腳”讓引腳信息真正為你的項(xiàng)目服務(wù)。4.1 STM32CubeMX 與 MCU 引腳配置工具的使用心得STM32CubeMX 是 ST 官方出品的圖形化配置工具它包含了一整套可視化的引腳配置界面。打開 CubeMX 選擇好芯片型號(hào)后你會(huì)直接看到一個(gè)芯片封裝圖這個(gè)圖上的每一個(gè)引腳都可以點(diǎn)擊配置。工作流程一般是這樣的先在“Pinout”視圖里用鼠標(biāo)點(diǎn)選一個(gè)引腳右側(cè)彈出的菜單中選擇復(fù)用功能。比如我想用 USART1就在 PA9 上選擇 USART1_TX在 PA10 上選擇 USART1_RX。如果功能沖突了CubeMX 會(huì)用紅色警告標(biāo)出沖突引腳并自動(dòng)尋找可替代引腳。CubeMX 最強(qiáng)大的地方是它能導(dǎo)出整個(gè)工程的初始化代碼而這些代碼里的 GPIO 初始化、Alternate Function 配置、時(shí)鐘樹配置都是由你剛才圖形化的引腳設(shè)置自動(dòng)生成的。這意味著你不需要手動(dòng)去查每一個(gè)引腳對(duì)應(yīng)的寄存器值只要你把圖形界面里的引腳選對(duì)了底層代碼就一定是對(duì)的。另外一個(gè)類似工具是樂鑫的 ESP-IDF 中自帶的“Kconfig”和“Pin Mux”機(jī)制以及 Arduino 環(huán)境下的“pins_arduino.h”。對(duì)樹莓派用戶來說則可以參考raspi-gpio命令或者/sys/kernel/debug/gpio文件來查看實(shí)時(shí)引腳狀態(tài)這個(gè)比靜態(tài)原理圖更能反映“這個(gè)引腳此刻到底被誰占用了”。4.2 自制一張開發(fā)板引腳速查表查了太多引腳圖之后我建了一個(gè)屬于自己的“板卡引腳速查數(shù)據(jù)庫(kù)”這個(gè)方法分享給你。具體做法是新建一個(gè) Excel 或 Markdown 文檔每個(gè)開發(fā)板建一個(gè) Sheet 或區(qū)塊羅列出所有引腳編號(hào)、默認(rèn)功能、可用復(fù)用功能、是否 5V 容忍、連接到了開發(fā)板上的哪個(gè)外設(shè)還有備注。每次在新板上調(diào)通一個(gè)外設(shè)就把驗(yàn)證過的引腳信息更新進(jìn)去。這個(gè)習(xí)慣堅(jiān)持下來你就有了一個(gè)比網(wǎng)上任何教程都貼合自己項(xiàng)目習(xí)慣的“私房引腳庫(kù)”。比如我自己的 ESP32-S3 速查表會(huì)標(biāo)記出“GPIO0板載 BOOT 按鍵注意不能用于輸出高電平驅(qū)動(dòng) LED否則會(huì)觸發(fā)下載模式”、“GPIO19/20USB D-/D如果 USB 用不上可以復(fù)用為普通 GPIO但要確認(rèn)外設(shè)初始化順序”、“GPIO46默認(rèn)是 Strapping 引腳上電瞬間的電平狀態(tài)會(huì)影響芯片啟動(dòng)模式不能隨意接大電容”等等。這些信息都是在實(shí)際開發(fā)中踩坑得來的遠(yuǎn)看很細(xì)碎但寫驅(qū)動(dòng)的時(shí)候真的能救命。4.3 用 Python 和數(shù)據(jù)庫(kù)做引腳分配檢查如果你做的項(xiàng)目外設(shè)很多引腳復(fù)用沖突會(huì)變成特別頭疼的問題。有一種很好的方案是把引腳定義提取成結(jié)構(gòu)化數(shù)據(jù)借助腳本做自動(dòng)檢查。比如拿到一個(gè)芯片的所有引腳 JSON 文件后可以寫一個(gè)簡(jiǎn)單的 Python 腳本把你計(jì)劃分配的外設(shè)功能逐一填進(jìn)去腳本自動(dòng)檢查有沒有兩個(gè)外設(shè)占用了同一個(gè)引腳有沒有使用到不支持 5V 容忍的引腳去接 5V 邏輯某個(gè)引腳是否同時(shí)被配置成輸入和輸出導(dǎo)致競(jìng)爭(zhēng)這個(gè)腳本不用很復(fù)雜幾十行就能寫得像模像樣。核心思路在于把“查圖”這個(gè)體力活變成“查數(shù)據(jù)庫(kù)”的邏輯活從而避免人工查看大圖時(shí)的視覺疲勞和遺漏。5. 調(diào)試器與開發(fā)板組合引腳接線防燒指南前面已經(jīng)提過很多次“接錯(cuò)引腳會(huì)燒板子”這里單獨(dú)拿出一節(jié)詳細(xì)講一下調(diào)試器和開發(fā)板之間的引腳接線問題。這一部分經(jīng)驗(yàn)都是真金白銀換來的多上心可以省下幾塊板子的錢。5.1 ST-Link 與 STM32 的 SWD 接線要點(diǎn)SWDSerial Wire Debug是一種只需要兩根線就能完成調(diào)試的協(xié)議這兩根線是 SWDIO 和 SWCLK。ST-Link 上的標(biāo)準(zhǔn) SWD 接口一般包括3.3V供電SWDIO數(shù)據(jù)SWCLK時(shí)鐘GND地RST可選復(fù)位SWIM老式 ST-Link 才有STM8 使用的接口接線時(shí)SWDIO 接 SWDIOSWCLK 接 SWCLK同名對(duì)接即可比較簡(jiǎn)單。但如果開發(fā)板上沒有專門的 SWD 調(diào)試口排針你可能需要從 MCU 引腳上飛線出來這時(shí)就要翻一下 MCU 的引腳圖找到 PA13SWDIO和 PA14SWCLK的具體位置。常見問題是“明明 SWDIO/SWCLK 接對(duì)了為什么還是識(shí)別不到芯片”這時(shí)候可以考慮是不是 GND 沒共地、調(diào)試器的電壓等級(jí)和核心板電壓不一致或者是芯片的 SWD 引腳被復(fù)用成了普通 IO 且正處于低功耗模式。解決方法是先按住復(fù)位引腳再點(diǎn)連接或者在“連接前擦除整個(gè)芯片”選項(xiàng)上打勾。ST-Link 官方工具 STM32CubeProgrammer 里就有這樣的恢復(fù)功能。5.2 樹莓派與總線設(shè)備接線防坑雖然樹莓派的 40Pin 可靠但它也是燒毀大戶因?yàn)橐_密集、布局緊湊稍不留神就會(huì)短路。我自己的教訓(xùn)是曾經(jīng)把 I2C 的 OLED 模塊接到樹莓派上明明 SDA 和 SCL 都接對(duì)了但模塊怎么都不亮。檢查了半天發(fā)現(xiàn)原因特別可笑——OLED 模塊的 VCC 接到了排針的 3.3VGND 接到了排針的 5V 對(duì)應(yīng)的位置上也就是物理引腳 4等于直接把 3.3V 接反到地了模塊自然不工作。從那以后我每次接線都會(huì)先確認(rèn)一遍“電源引腳到底在哪一排”而不是想當(dāng)然地按顏色猜。另外樹莓派的 I2C、SPI、UART 默認(rèn)是關(guān)閉的需要在raspi-config里打開。打開之后I2C 設(shè)備才能通過i2cdetect掃描到。如果你想快速確認(rèn)引腳接線是否正常可以先i2cdetect -y 1掃描一下地址如果能掃到設(shè)備說明 SDA/SCL 沒問題如果掃不到先別急著懷疑設(shè)備用萬用表量一下 3.3V 和 GND 是否真的有電。5.3 杜邦線和排針的接觸可靠性說到引腳接線就繞不開杜邦線。杜邦線質(zhì)量參差不齊那種幾塊錢一百根的“軟趴趴線”做實(shí)驗(yàn)還行要做長(zhǎng)期運(yùn)行的板子還是建議用焊接杜邦頭或者直接設(shè)計(jì) PCB。杜邦線接觸不良是一個(gè)很隱蔽的坑特別是插在排針上久了之后母頭內(nèi)部的彈片會(huì)松開導(dǎo)致信號(hào)時(shí)斷時(shí)續(xù)。排查這種問題最有效的手段是在疑似接口處輕輕晃動(dòng)線纜同時(shí)觀察系統(tǒng)日志或示波器波形。如果晃動(dòng)時(shí)信號(hào)發(fā)生跳變那基本就是插接件接觸不良。5.4 表筆就是第二雙眼睛萬用表與引腳檢測(cè)的配合最后建議每個(gè)嵌入式開發(fā)者都要熟練掌握萬用表的基本用法。查引腳時(shí)最怕的是“圖上標(biāo)了 A實(shí)際測(cè)出來是 B”尤其是一些二手板卡和雜牌開發(fā)板。這時(shí)萬用表的通斷檔和電壓檔就是你的最終裁判。具體做法是把萬用表調(diào)到通斷檔一支表筆接觸開發(fā)板的某個(gè)排針另一支表筆依次觸碰主控芯片的引腳如果蜂鳴器響說明兩個(gè)點(diǎn)是導(dǎo)通的你就能反推出“這個(gè)排針到底連到了芯片的哪個(gè)引腳”。這個(gè)方法還可以用來測(cè) PCB 走線是否開路、相鄰引腳是否意外短路。我自己的習(xí)慣是新板子到貨后先花十分鐘用萬用表把核心的幾個(gè)電源引腳和 GND 引腳測(cè)量一遍確認(rèn)沒被板廠焊錯(cuò)再上電。這個(gè)習(xí)慣幫我避掉過至少兩塊“出廠即廢”的板子。6. 收藏夾之外的思路AI 輔助與社區(qū)問答快速鎖定引腳現(xiàn)在人工智能工具已經(jīng)成了我查引腳的另一個(gè)好幫手。很多人覺得 AI 只會(huì)寫代碼其實(shí)它在“信息定位”這件事上也很有價(jià)值。6.1 用 AI 對(duì)話工具快速定位引腳定義如果你手上有一塊不常見的開發(fā)板直接問搜索引擎可能半天找不到明確答案但問 AI 對(duì)話工具反而可能直接給出答案——因?yàn)樗呀?jīng)“讀過”了大量資料。舉個(gè)例子你可以這樣提問“ESP32-S3-DevKitC-1 開發(fā)板的 GPIO4 引腳默認(rèn)用來做什么這引腳能不能直接接 WS2812 燈帶是不是需要外接電阻”一個(gè)好的回答會(huì)告訴你GPIO4 在官方板卡上通常引到排針上默認(rèn)未接外部外設(shè)可以作為普通輸出使用如果要驅(qū)動(dòng) WS2812需觀察電平匹配和時(shí)序要求一般建議加上適當(dāng)?shù)南蘖骰螂娖狡ヅ潆娮?。?dāng)然用 AI 有一個(gè)重要原則不要把它當(dāng)成最終答案而應(yīng)該當(dāng)成“初步參考”。拿到它的回答后還是要回到原廠引腳圖或原理圖驗(yàn)證一下。AI 的參訓(xùn)數(shù)據(jù)里芯片型號(hào)繁多偶爾會(huì)串型號(hào)如果它給的引腳編號(hào)存疑請(qǐng)務(wù)必二次確認(rèn)。6.2 嵌入式論壇和社區(qū)讓搜不到的資料變得搜得到除了 AI國(guó)內(nèi)外的嵌入式社區(qū)也是解決“冷門引腳問題”的好去處。當(dāng)你在搜索引擎和 AI 都查不到某一款開發(fā)板的引腳圖時(shí)社區(qū)提問往往能解決問題。常用的社區(qū)有電子工程世界EEWorld、21ic 電子論壇、CSDN國(guó)外的話StackExchange 的 Electrical Engineering、Raspberry Pi 官方論壇、Espressif 官方論壇在這些社區(qū)提問時(shí)我強(qiáng)烈建議你附上開發(fā)板的清晰照片特別是絲印面、板卡型號(hào)的完整名稱、以及你“希望確認(rèn)引腳對(duì)應(yīng)關(guān)系”的明確場(chǎng)景。帶著信息去提問收到有效回復(fù)的概率會(huì)大幅提升。還有一個(gè)小技巧很多開發(fā)板尤其是國(guó)產(chǎn)小廠出的它們的“引腳圖”其實(shí)就藏在商品詳情頁(yè)的評(píng)論里。你可以在淘寶、京東對(duì)應(yīng)商品頁(yè)的“問大家”或者評(píng)論區(qū)翻一翻經(jīng)常能看到買家用萬用表實(shí)測(cè)出的引腳排布圖。雖然是“野路子”但在應(yīng)急情況下極其有效。7. 實(shí)戰(zhàn)復(fù)盤一次由引腳圖引發(fā)的排障全記錄光說不練假把式最后分享一個(gè)我最近實(shí)際經(jīng)歷過的排障過程里面有很典型的“查引腳圖”應(yīng)用場(chǎng)景希望能幫你把前面所有內(nèi)容串起來。7.1 背景一塊 ESP32-S3 板卡點(diǎn)不亮項(xiàng)目需要在一塊 ESP32-S3 核心板上同時(shí)驅(qū)動(dòng)一塊 2.4 寸 TFT 屏、一個(gè) SD 卡槽、一個(gè) I2C 溫濕度傳感器和一個(gè)按鈕。我參照網(wǎng)上某篇帖子把各個(gè)外設(shè)對(duì)應(yīng)的引腳分配好然后畫好了底板原理圖打了樣?;貋砗蠛负迷想姵跏蓟Y(jié)果 TFT 屏幕白屏、SD 卡掛載失敗、I2C 掃描不到設(shè)備。三個(gè)外設(shè)同時(shí)失敗說明問題大概率出在“共用的引腳控制邏輯”上而不是某一個(gè)外設(shè)的個(gè)別問題。7.2 排障過程回到引腳圖逐一根因分析我先把官方原理圖導(dǎo)出來把底板原理圖里所有連接到核心板排針的網(wǎng)絡(luò)逐一核對(duì)重點(diǎn)檢查 SD 卡片的 CS 引腳和 TFT 的 CS 引腳是否被分配到了同一個(gè) GPIO。結(jié)果確實(shí)如此——我在設(shè)計(jì)底板時(shí)把 TFT 的 CS 和 SD 的 CS 都分配到了 GPIO10。本來想的是“兩個(gè)外設(shè)分時(shí)復(fù)用這個(gè) CS”結(jié)果忘了 SD 卡的 SPI 模式要求 CS 必須保持穩(wěn)定而 TFT 驅(qū)動(dòng)時(shí)又需要頻繁拉低 CS 發(fā)送命令兩邊互相干擾自然全部失敗。好在問題只在 CS 信號(hào)上我把 TFT 的 CS 改到 GPIO9重新飛線后問題就解決了。7.3 復(fù)盤心得引腳分配表永遠(yuǎn)不夠用這件事之后我總結(jié)了一條很重要的經(jīng)驗(yàn)畫 PCB 之前畫一張“引腳分配總表”不等于做完了引腳規(guī)劃。真正的規(guī)劃要細(xì)化到“每個(gè)外設(shè)的每一個(gè)信號(hào)線”而不僅僅是“用了哪個(gè) SPI 接口”。因?yàn)?SPI 接口下面至少有 SCK、MOSI、MISO、CS 四條線四條線可能在核心板上分別對(duì)應(yīng)不同的 GPIO而廠商原理圖里的 SPI2 和 SPI3 可能映射到了相同物理引腳這些都是只有仔細(xì)看引腳圖才能發(fā)現(xiàn)的坑。另一個(gè)經(jīng)驗(yàn)是飛線調(diào)試時(shí)不要嫌麻煩逐根拿萬用表通斷檔測(cè)一下“排針到核心板引腳”的連通性。有時(shí)候 PCB 打樣回來會(huì)有“過孔不通”或者“排針虛焊”的問題你以為是軟件配置錯(cuò)了實(shí)際是硬件鏈路斷的。用表筆測(cè)一下可以排除這一類物理問題。7.4 工具推薦清單基于本次排障萬用表優(yōu)利德 UT61E 或 Fluke 15B都?jí)蛴肊SP32-S3 引腳 JSON在 espressif/esp-idf 倉(cāng)庫(kù)的soc/esp32s3/include/soc目錄下有g(shù)pio_sig_map.h和pins_arduino.h比網(wǎng)上的二手圖準(zhǔn)確原理圖閱讀工具KiCad 免費(fèi)開源可以直接打開官方提供的源工程調(diào)試日志ESP32 平臺(tái)建議直接用idf.py monitor把 SPI 的初始化日志打開能看到具體的 IO 分配沖突提示8. 寫在最后把查引腳從“體力活”變成“基本功”引腳圖這件事看起來小但它貫穿了嵌入式開發(fā)的每一個(gè)環(huán)節(jié)。哪怕你已經(jīng)寫了很多年代碼面對(duì)一塊新板卡第一件事仍然是“看懂引腳圖”。它的準(zhǔn)確性和可以獲取的程度直接影響項(xiàng)目的進(jìn)度和質(zhì)量。我個(gè)人的習(xí)慣是“三層資料法”第一層直接看原廠 Datasheet 和板卡原理圖這一層決定權(quán)威性第二層用 Pinout.xyz、Adafruit、Seeed wiki 這類社區(qū)資源快速查閱這一層決定效率第三層用萬用表和示波器實(shí)測(cè)板卡引腳這一層決定真實(shí)性。層層遞進(jìn)基本不會(huì)漏掉關(guān)鍵信息。最后再分享一個(gè)小技巧把那些你常用的“引腳圖”保存在一個(gè)本地文件夾里并且用統(tǒng)一格式命名比如“[廠商][型號(hào)][類型][日期].pdf”。文件再多也不怕亂找起來比“網(wǎng)上重新搜”快得多。如果你有 NAS把它放到一個(gè)共享目錄和團(tuán)隊(duì)一起維護(hù)更新效果更好。希望這篇文章對(duì)你有所幫助。不管你現(xiàn)在在哪個(gè)階段只要把“查引腳”這件基本功練扎實(shí)了嵌入式開發(fā)的路上會(huì)順很多。如果后續(xù)你發(fā)現(xiàn)還有更寶藏的引腳圖網(wǎng)站也歡迎在評(píng)論區(qū)和我交流互通。