試用 Core2350B

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 ,當高電壓時亮著

USB+USB-BOOTRSTGNDVCC

FPC 6-Pin 連接器, 6支引腳 分別連接到:

FPC 6-PinCore2350B顏色
VCCVBUS
GNDGND
RSTRUN
BOOTBOOT
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 連接到電腦

引腳

GNDIO0VBUS3V3ENRUNUSB+USB-BOOTIO47GNDIO2IO13V3GNDAREFSWCLKSWGNDSWDIOIO46IO45IO4IO3IO43IO44IO6IO5IO41IO42IO8IO7IO39IO40IO10IO9IO37IO38IO12IO11IO35IO36IO14IO13IO33IO34IO15IO16IO18IO20IO22IO24IO26IO28IO31IO32GNDIO17IO19IO21IO23IO25IO27IO29IO30GND

Core2350B 共有 64支引腳,其中 48支GPIO引腳 及其餘 16支引腳,分別為:

引腳功能
VUSB電源輸入
3V33.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 引腳
引腳SPII 2 CUARTPWMADC其他
功能群組功能群組功能群組功能群組
GPIO0MISO0SDA0TX0A0--
GPIO1SS0SCL0RX0B0--
GPIO2SCK0SDA1TX0A1--
GPIO3MOSI0SCL1RX0B1--
GPIO4MISO0SDA0TX1A2--
GPIO5SS0SCL0RX1B2--
GPIO6SCK0SDA1TX1A3--
GPIO7MOSI0SCL1RX1B3--
GPIO8MISO1SDA0TX1A4--
GPIO9SS1SCL0RX1B4--
GPIO10SCK1SDA1TX1A5--
GPIO11MOSI1SCL1RX1B5--
GPIO12MISO1SDA0TX0A6-HSTX
GPIO13SS1SCL0RX0B6-HSTX
GPIO14SCK1SDA1TX0A7-HSTX
GPIO15MOSI1SCL1RX0B7-HSTX
GPIO16MISO0SDA0TX0A0-HSTX
GPIO17SS0SCL0RX0B0-HSTX
GPIO18SCK0SDA1TX0A1-HSTX
GPIO19MOSI0SCL1RX0B1-HSTX
GPIO20MISO0SDA0TX1A2--
GPIO21SS0SCL0RX1B2--
GPIO22SCK0SDA1TX1A3--
GPIO23MOSI0SCL1RX1B3--
GPIO24MISO1SDA0TX1A4--
GPIO25SS1SCL0RX1B4--
GPIO26SCK1SDA1TX1A5--
GPIO27MOSI1SCL1RX1B5--
GPIO28MISO1SDA0TX0A6--
GPIO29SS1SCL0RX0B6--
GPIO30SCK1SDA1TX0A7--
GPIO31MOSI1SCL1RX0B7--
GPIO32MISO0SDA0TX0A8--
GPIO33SS0SCL0RX0B8--
GPIO34SCK0SDA1TX0A9--
GPIO35MOSI0SCL1RX0B9--
GPIO36MISO0SDA0TX1A10--
GPIO37SS0SCL0RX1B10--
GPIO38SCK0SDA1TX1A11--
GPIO39MOSI0SCL1RX1B11--
GPIO40MISO1SDA0TX1A80-
GPIO41SS1SCL0RX1B81-
GPIO42SCK1SDA1TX1A92-
GPIO43MOSI1SCL1RX1B93-
GPIO44MISO1SDA0TX0A104-
GPIO45SS1SCL0RX0B105-
GPIO46SCK1SDA1TX0A116-
GPIO47MOSI1SCL1RX0B117PSRAM

使用 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 引腳佈局
RP2040GNDTop View1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556IOVDDGPIO0GPIO1GPIO2GPIO3GPIO4GPIO5GPIO6GPIO7IOVDDGPIO8GPIO9GPIO10GPIO11GPIO12GPIO13GPIO14GPIO15TESTENXINXOUTIOVDDDVDDSWCLKSWDIORUNGPIO16GPIO17IOVDDGPIO29_ADC3GPIO28_ADC2GPIO27_ADC1GPIO26_ADC0GPIO25GPIO24GPIO23GPIO22IOVDDGPIO21GPIO20GPIO19GPIO18QSPI_SS_NQSPI_SD1QSPI_SD2QSPI_SD0QSPI_SCLKQSPI_SD3DVDDIOVDDUSB_VDDUSB_DPUSB_DMVREF_VOUTVREF_VINADC_AVDD

RP2040 總共有 56支引腳,共有 30支GPIO引腳,其中 4支GPIO引腳 具備 ADC 功能

RP2350A 引腳佈局
RP2350AGNDTop View123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960IOVDDGPIO0GPIO1GPIO2GPIO3DVDDGPIO4GPIO5GPIO6GPIO7IOVDDGPIO8GPIO9GPIO10GPIO11GPIO12GPIO13GPIO14GPIO15IOVDDXINXOUTDVDDSWCLKSWDIORUNGPIO16GPIO17GPIO18IOVDDIOVDDADC_AVDDGPIO29_ADC3GPIO28_ADC2GPIO27_ADC1GPIO26_ADC0DVDDIOVDDGPIO25GPIO24GPIO23GPIO22GPIO21GPIO20GPIO19QSPI_SSQSPI_SD1QSPI_SD2QSPI_SD0QSPI_SCLKQSPI_SD3QSPI_IOVDDUSB_TOP_VDDUSB_DPUSB_DMVREF_FBVREF_VINVREF_LXVREF_PGNDVREG_AVDD

RP2350A 總共有 60支引腳,與 RP2040 相同,共有 30支GPIO引腳,其中 4支GPIO引腳 具備 ADC 功能

RP2350B 引腳佈局
RP2350BGNDTop View1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980GPIO4GPIO5GPIO6GPIO7IOVDDGPIO8GPIO9GPIO10GPIO11DVDDGPIO12GPIO13GPIO14GPIO15IOVDDGPIO16GPIO17GPIO18GPIO19GPIO20GPIO21GPIO22GPIO23IOVDDGPIO24GPIO25GPIO26GPIO26IOVDDXINXOUTDVDDSWCLKSWDIORUNGPIO28GPIO29GPIO30GPIO31GPIO32IOVDDADC_AVDDGPIO47_ADC7GPIO46_ADC6GPIO45_ADC5GPIO44_ADC4GPIO43_ADC3GPIO42_ADC2GPIO41_ADC1DVDDIOVDDGPIO40_ADC0GPIO39GPIO38GPIO37GPIO36GPIO35GPIO34GPIO33IOVDDGPIO3GPIO2GPIO1GPIO0IOVDDQSPI_SSQSPI_SD1QSPI_SD2QSPI_SD0QSPI_SCLKQSPI_SD3QSPI_IOVDDUSB_TOP_VDDUSB_DPUSB_DMVREF_FBVREF_VINVREF_LXVREF_PGNDVREG_AVDD

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引腳 的數量

參考資料