Raspberry Pi 雖然發佈了 RP2040 及 RP2350 這兩款微控制器晶片
但其下的 Raspberry Pi Pico 產品系列都沒有將 RP2040 及 RP2350 所有GPIO引腳導出
因此在下找尋一些基於 RP2040 及 RP2350 而且能夠 所有GPIO引腳 的 第三方廠商設計的開發板
在下發現一款稱為 Core2350B 的開發板,搭載 RP2350B 微控制器,擁有 48 個 GPIO 引腳
即是 Core2350B 將 RP2350B 所有GPIO引腳 全部導出
外觀
Core2350B 的 正面
Core2350B 採用 0.1英寸孔距設計,方便焊接到標準的 0.1英寸引腳上
與雙排引腳設計不同,Core2350B 使用四邊引腳的設計,而且每邊為雙行,這種設計並不適合安裝到麵包板上使用
Core2350B 使用 RP2350B晶片
J2YX穩壓器
板載LED ,當高電壓時亮著
FPC 6-Pin 連接器, 6支引腳 分別連接到:
FPC 6-Pin | Core2350B | 顏色 |
---|---|---|
VCC | VBUS | 紅 |
GND | GND | 黑 |
RST | RUN | 藍 |
BOOT | BOOT | 灰 |
USB- | USB- | 白 |
USB+ | USB+ | 綠 |
需要注意的是,Core2350B 沒有USB插口,用戶需自行將其 VBUS 、 GND 、USB+ 、 USB- 連接到電腦的相應 USB 的引腳,才能讓電腦識別
不過,Core2350B 還提供 FPC 6-Pin 連接器和帶有 FPC 6-Pin 的 USB 插口控制板,可以讓 Core2350B 經 USB 連接到電腦
Core2350B 的 背面
64Mb(8MB) PSRAM
雖然晶片表面已經刮損,但在下從外觀、封裝、引腳數量翻查資料,估計是 AP MEMORY 公司的 6404L
winbond 公司 的 25Q128JV 快閃記憶體,提供額外 128Mb(16MB) 的儲存空間
USB 連接板,提供 FPC 6-Pin 連接器連接到 Core2350B
還有 BOOT按鈕 及 RESET按鈕 ,能夠協助重新啟動 Core2350B 及將 Core2350 載入到 起動模式
FPC 6-Pin 排線
將 Core2350B 連接到 FPC 6-Pin 連接板便可以使用 USB 連接到電腦
引腳
Core2350B 共有 64支引腳,其中 48支GPIO引腳 及其餘 16支引腳,分別為:
引腳 | 功能 |
---|---|
VUSB | 電源輸入 |
3V3 | 3.3V 電源輸出 |
GND | 接地 |
3V3EN | 高電壓時,啟動 3.3V 電源輸出 |
AREF | 調整 ADC 的電壓 |
BOOT | 接地時載入到起動模式 |
RUN | 接地後 重新啟動 |
USB+ | 連接到 電腦的USB+ 以發送及接收資料 |
USB- | 連接到 電腦的USB- 以發送及接收資料 |
SWCLK | 偵錯用的 序列時脈引腳 |
SWGND | 偵錯用的 接地,與 GND 相連 |
SWDIO | 偵錯用的 序列輸入輸出引腳 |
當中有 5支引腳為 GND
GPIO引腳中,GPIO39 與 板載LED 連接,高電壓時亮著;而 GPIO40 至 GPIO47 的 8 個引腳具備 ADC 功能
GPIO 引腳
引腳 | SPI | I2C | UART | PWM | ADC | 其他 | ||||
---|---|---|---|---|---|---|---|---|---|---|
功能 | 群組 | 功能 | 群組 | 功能 | 群組 | 功能 | 群組 | |||
GPIO0 | MISO | 0 | SDA | 0 | TX | 0 | A | 0 | - | - |
GPIO1 | SS | 0 | SCL | 0 | RX | 0 | B | 0 | - | - |
GPIO2 | SCK | 0 | SDA | 1 | TX | 0 | A | 1 | - | - |
GPIO3 | MOSI | 0 | SCL | 1 | RX | 0 | B | 1 | - | - |
GPIO4 | MISO | 0 | SDA | 0 | TX | 1 | A | 2 | - | - |
GPIO5 | SS | 0 | SCL | 0 | RX | 1 | B | 2 | - | - |
GPIO6 | SCK | 0 | SDA | 1 | TX | 1 | A | 3 | - | - |
GPIO7 | MOSI | 0 | SCL | 1 | RX | 1 | B | 3 | - | - |
GPIO8 | MISO | 1 | SDA | 0 | TX | 1 | A | 4 | - | - |
GPIO9 | SS | 1 | SCL | 0 | RX | 1 | B | 4 | - | - |
GPIO10 | SCK | 1 | SDA | 1 | TX | 1 | A | 5 | - | - |
GPIO11 | MOSI | 1 | SCL | 1 | RX | 1 | B | 5 | - | - |
GPIO12 | MISO | 1 | SDA | 0 | TX | 0 | A | 6 | - | HSTX |
GPIO13 | SS | 1 | SCL | 0 | RX | 0 | B | 6 | - | HSTX |
GPIO14 | SCK | 1 | SDA | 1 | TX | 0 | A | 7 | - | HSTX |
GPIO15 | MOSI | 1 | SCL | 1 | RX | 0 | B | 7 | - | HSTX |
GPIO16 | MISO | 0 | SDA | 0 | TX | 0 | A | 0 | - | HSTX |
GPIO17 | SS | 0 | SCL | 0 | RX | 0 | B | 0 | - | HSTX |
GPIO18 | SCK | 0 | SDA | 1 | TX | 0 | A | 1 | - | HSTX |
GPIO19 | MOSI | 0 | SCL | 1 | RX | 0 | B | 1 | - | HSTX |
GPIO20 | MISO | 0 | SDA | 0 | TX | 1 | A | 2 | - | - |
GPIO21 | SS | 0 | SCL | 0 | RX | 1 | B | 2 | - | - |
GPIO22 | SCK | 0 | SDA | 1 | TX | 1 | A | 3 | - | - |
GPIO23 | MOSI | 0 | SCL | 1 | RX | 1 | B | 3 | - | - |
GPIO24 | MISO | 1 | SDA | 0 | TX | 1 | A | 4 | - | - |
GPIO25 | SS | 1 | SCL | 0 | RX | 1 | B | 4 | - | - |
GPIO26 | SCK | 1 | SDA | 1 | TX | 1 | A | 5 | - | - |
GPIO27 | MOSI | 1 | SCL | 1 | RX | 1 | B | 5 | - | - |
GPIO28 | MISO | 1 | SDA | 0 | TX | 0 | A | 6 | - | - |
GPIO29 | SS | 1 | SCL | 0 | RX | 0 | B | 6 | - | - |
GPIO30 | SCK | 1 | SDA | 1 | TX | 0 | A | 7 | - | - |
GPIO31 | MOSI | 1 | SCL | 1 | RX | 0 | B | 7 | - | - |
GPIO32 | MISO | 0 | SDA | 0 | TX | 0 | A | 8 | - | - |
GPIO33 | SS | 0 | SCL | 0 | RX | 0 | B | 8 | - | - |
GPIO34 | SCK | 0 | SDA | 1 | TX | 0 | A | 9 | - | - |
GPIO35 | MOSI | 0 | SCL | 1 | RX | 0 | B | 9 | - | - |
GPIO36 | MISO | 0 | SDA | 0 | TX | 1 | A | 10 | - | - |
GPIO37 | SS | 0 | SCL | 0 | RX | 1 | B | 10 | - | - |
GPIO38 | SCK | 0 | SDA | 1 | TX | 1 | A | 11 | - | - |
GPIO39 | MOSI | 0 | SCL | 1 | RX | 1 | B | 11 | - | - |
GPIO40 | MISO | 1 | SDA | 0 | TX | 1 | A | 8 | 0 | - |
GPIO41 | SS | 1 | SCL | 0 | RX | 1 | B | 8 | 1 | - |
GPIO42 | SCK | 1 | SDA | 1 | TX | 1 | A | 9 | 2 | - |
GPIO43 | MOSI | 1 | SCL | 1 | RX | 1 | B | 9 | 3 | - |
GPIO44 | MISO | 1 | SDA | 0 | TX | 0 | A | 10 | 4 | - |
GPIO45 | SS | 1 | SCL | 0 | RX | 0 | B | 10 | 5 | - |
GPIO46 | SCK | 1 | SDA | 1 | TX | 0 | A | 11 | 6 | - |
GPIO47 | MOSI | 1 | SCL | 1 | RX | 0 | B | 11 | 7 | PSRAM |
使用 Arduino IDE
到 Additional Boards Manager URLs 加入
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
到 Boards Manager 尋找 rp2350 並下載及安裝其開發板套件
雖然同屬於 RP2350 ,但 Raspberry Pi Pico 2 是使用 RP2350A 不是 RP2350B
因此不能使用 Raspberry Pi Pico 2 (或兼容開發板) 的配置來編譯及燒錄韌體到 Core2350B
在選擇編譯的開發板時,選擇 Raspberry Pi RP2040 (*) > Pimoroni PGA2350
(Core2350B 其實是模仿 Pimoroni PGA2350 的開發板,同樣是使用 RP2350B晶片
雖然兩者都是導出 48支 GPIO引腳,但兩款開發板的引腳佈局並不兼容,因此兩者不能直接替待
Core2350B 只是借用 Pimoroni PGA2350 的 函式庫 編譯 與 Core2350B 兼容的 韌體)
測試效果
使用 MicroPython
使用 MicroPython 同樣需要借用其他同樣使用 RP2350B晶片 的開發板,但在 MicroPython 支援 RP2350B晶片 並不多
在下暫時只發現由 WeAct Studio 提供的 RP2350B Core 的韌體兼容 Core2350B ,建議下載及安裝最新的穩定版本
亦可以在 Terminal 輸入:
wget `curl --request 'GET' 'https://micropython.org/download/WEACTSTUDIO_RP2350B_CORE/' \ | grep 'CORE-[^R].\+\.uf2' \ | head -1 \ | sed -r 's/.+href="([^"]+)".+/https:\/\/micropython.org\1/g'`
直接下載最新的穩定版本
如果使用 RISC-V 版本,可以輸入:
wget `curl --request 'GET' 'https://micropython.org/download/WEACTSTUDIO_RP2350B_CORE/' \ | grep 'CORE-R.\+\.uf2' \ | head -1 \ | sed -r 's/.+href="([^"]+)".+/https:\/\/micropython.org\1/g'`
直接下載最新的 RISC-V 穩定版本
將 Core2350B 載入到起動模式,並將 .uf2檔案 (韌體) 複製到 Core2350B 的目錄
使用 Thonny IDE
在 Thonny options > Interpreter ,選擇 MicroPython (generic)
便可以編寫支援 RP2350B晶片 的 MicroPython 程式碼
說明
from machine import Pin from time import sleep led = Pin(39, Pin.OUT) while True: led.value(not led.value()) sleep(1)
使用 CircuitPython
CircuitPython 沒有提供支援 Core2350B開發板 的韌體
因此需要借用其他支援 RP2350B晶片 的開發板的韌體才能使用 CircuitPython
在下在 CircuitPython 找到 PGA2350開發板 的韌體,即是剛才在 Arduino IDE 提及的 Pimoroni PGA2350 完全相同
可以在 Terminal 輸入:
wget `curl --request 'GET' 'https://circuitpython.org/board/pimoroni_pga2350/' \ | grep 'value.\+US.\+b.\+\.uf2' \ | sed -r 's/.*"([^"]+)".*/\1/g'`
直接下載最新的穩定版本
如果使用 測試版本,可以輸入:
wget `curl --request 'GET' 'https://circuitpython.org/board/pimoroni_pga2350/' \ | grep 'value.\+en_US-[^b]\+\.uf2' \ | sed -r 's/.*"([^"]+)".*/\1/g'`
直接下載最新的 測試版本
from digitalio import DigitalInOut, Direction from time import sleep import board led = DigitalInOut(board.GP39) led.direction = Direction.OUTPUT while True: led.value = not led.value sleep(1)
由於安裝 CircuitPython 韌體的 Core2350B 同樣與 Raspberry Pi Pico 相同,會被宿主系統當作儲存裝置
因此當掛載 Core2350B 後,便可以使用任何文字編輯軟件修改 Core2350B 中的檔案
如果使用 Thonny IDE 的指令操作直接編寫 CurcuitPython 的程式碼來控制 Core2350B
需要到 Thonny options > Interpreter ,選擇 CircuitPython (generic)
便可以編寫支援 RP2350B晶片 的 CircuitPython 程式碼
補充資料
由於在下有一些 Mini USB Type-B 的 USB線,而在下亦越來越少使用 Mini USB Type-B 插孔的 USB裝置
因此在下將 USB線 的 Mini USB Type-B 插頭剪掉,並將 0.1英寸引腳 焊接到線路上
方便安裝到麵包或其他使用 0.1英寸的電路板插孔上
由於焊接引腳的線路有機會因為焊接受熱後減弱強度,在下在焊接的位置加上 UV膠 並將其硬化 以增加強度
令線路不能容易折斷及避免焊接的位置脫落
測試效果
在下直接將 USB線 的引腳連接到 Core2350B 的 USB引腳,便可以不使用 FPC 6-Pin 連接板
但亦即是需要自行改裝 USB線
RP2040 引腳佈局
RP2040 總共有 56支引腳,共有 30支GPIO引腳,其中 4支GPIO引腳 具備 ADC 功能
RP2350A 引腳佈局
RP2350A 總共有 60支引腳,與 RP2040 相同,共有 30支GPIO引腳,其中 4支GPIO引腳 具備 ADC 功能
RP2350B 引腳佈局
RP2350B 總共有 80支引腳,共有 48支GPIO引腳,其中 8支GPIO引腳 具備 ADC 功能
Raspberry Pi 官方的說明文件其實都有提供 RP2350A 及 RP2350B 的引腳佈局
不過在下希望可以在列印引腳佈局的圖像不會失真,因此以 SVG格式 重新繪製 引腳佈局的圖像
總結
整個 Core2350B 開發板的長闊各只有 1英寸,但卻能導出 48支GPIO引腳
而且亦導出 起動引腳 及 重置引腳 ,非常適合開發需要使用大量 GPIO 的小型裝置
沒有 USB插孔 令 Core2350B 省卻不少空間,而且亦比較扁平
提供 FPC 6-Pin 連接板讓 Core2350B 經 USB Type-C 連接到 宿主電腦
亦可以使用導出的 2支USB引腳 ,直接使用 USB線(需要自行開線) 連接到 宿主電腦
4邊2行的設計,不適合安裝在麵包上測試,如果需要方便使用,必須設計專有的轉接電路板
否則需要直接使用跳線連接到
在下一直認為 Raspberry Pi 官方發佈的 Raspberry Pi Pico 系列不導出 所有GPIO引腳 的設計感到很奇怪
雖然普遍情況下,使用者都不需要使用 所有GPIO引腳,但最少也應該將具備 ADC 功能的 GPIO引腳 導出
但 Raspberry Pi Pico 系列只將 3支具備 ADC 的 GPIO引腳 導出
反而 第三方廠商設計的 RP2040 、 RP2350* 的開發板 都會優先將 所有具備 ADC 的 GPIO引腳 導出
因此在下希望 Raspberry Pi 官方再發佈新型的 微控制器 時,會考慮製作優先導出所有具備 ADC 功能的 GPIO引腳 的 開發板
而且能夠減少 GND引腳 的數量
沒有留言 :
張貼留言