作者:Jacob Beningo
在嵌入式系統(tǒng)中,有一個(gè)內(nèi)在的需求,就是要有一個(gè)強(qiáng)大的、低成本的微控制器單元(MCU)。這些設(shè)備不僅在產(chǎn)品中發(fā)揮著重要作用,而且在支持測(cè)試、快速原型設(shè)計(jì)和機(jī)器學(xué)習(xí) (ML) 之類能力方面也發(fā)揮著重要作用。然而,使用 MCU 通常需要對(duì)MCU 技術(shù)和底層編程語言有深入的了解。除此之外,開發(fā)板的價(jià)格往往在 20 美元到 1000美元之間,這對(duì)許多開發(fā)人員來說可能太昂貴了。此外,并不總是有開發(fā)板,即使有開發(fā)板,設(shè)計(jì)者也常常要花很多精力讓開發(fā)板啟動(dòng)并運(yùn)行起來。
本文介紹了作為用于 RP2040 MCU 的低成本開發(fā)板的 Raspberry Pi Pico (SC0915),該板能為開發(fā)者提供廣泛的功能。文章探討了Pico 和一些擴(kuò)展板,研究了 Raspberry Pi Pico 支持的不同軟件開發(fā)工具包,并演示了如何使用 C SDK 創(chuàng)建一個(gè) LED 閃光應(yīng)用。
Raspberry Pi Pico 簡介
Raspberry Pi Pico 作為 RP2040 微控制器的開發(fā)平臺(tái)而于 2021 年首次推出。Pico
可以作為獨(dú)立的開發(fā)板使用,或者通過邊緣連接焊接到載板上,因此可以直接設(shè)計(jì)導(dǎo)入產(chǎn)品(圖 1)。因其低于 5 美元的成本及其多用途特性,Pico已經(jīng)成為創(chuàng)客和專業(yè)開發(fā)者的一個(gè)很受歡迎的解決方案。
圖 1:Raspberry Pi Pico 是一塊低成本的開發(fā)板,包含了在 RP2040 微控制器上開發(fā)應(yīng)用所需的一切。(圖片來源:Raspberry Pi)
RP2040 帶有一個(gè)雙核 Arm? Cortex?-M0+ 處理器,時(shí)鐘頻率為 133 兆赫(MHz),包括高至 264 千字節(jié) (Kb) 的SRAM。RP2040 不包括片上閃存。不過 Raspberry Pi Pico 提供了一個(gè) 2 兆字節(jié) (Mb) 的外部閃存芯片,通過一個(gè)四路串行外設(shè)接口(QSPI) 與 RP2040 連接。該板還提供了一個(gè)用戶 LED,一個(gè)鎖相環(huán) (PLL) 用來創(chuàng)建穩(wěn)定高速 CPU時(shí)鐘的晶體振蕩器,以及一個(gè)用來配置處理器是正常引導(dǎo)還是進(jìn)入引導(dǎo)程序的按鈕。
一個(gè)廣泛的生態(tài)系統(tǒng)
Raspberry Pi Pico 已經(jīng)有了一個(gè)廣泛的生態(tài)系統(tǒng),允許開發(fā)者選擇使用 MicroPython 或 C軟件開發(fā)工具包來為電路板編寫應(yīng)用程序。關(guān)于 Raspberry Pi Pico還有一點(diǎn)有趣的要說明的是,并不是只有一塊開發(fā)板可用。而是有三個(gè);只有一個(gè)標(biāo)準(zhǔn)配置的原版 SC0915、包括針座連接器的 SC0917以及帶有用于聯(lián)網(wǎng)應(yīng)用的低成本Wi-Fi 芯片的 SC0918(圖 2)。
圖 1:Raspberry Pi Pico 是一塊低成本的開發(fā)板,包含了在 RP2040 微控制器上開發(fā)應(yīng)用所需的一切。(圖片來源:Raspberry Pi)
RP2040 帶有一個(gè)雙核 Arm? Cortex?-M0+ 處理器,時(shí)鐘頻率為 133 兆赫(MHz),包括高至 264 千字節(jié) (Kb) 的SRAM。RP2040 不包括片上閃存。不過 Raspberry Pi Pico 提供了一個(gè) 2 兆字節(jié) (Mb) 的外部閃存芯片,通過一個(gè)四路串行外設(shè)接口(QSPI) 與 RP2040 連接。該板還提供了一個(gè)用戶 LED,一個(gè)鎖相環(huán) (PLL) 用來創(chuàng)建穩(wěn)定高速 CPU時(shí)鐘的晶體振蕩器,以及一個(gè)用來配置處理器是正常引導(dǎo)還是進(jìn)入引導(dǎo)程序的按鈕。
一個(gè)廣泛的生態(tài)系統(tǒng)
Raspberry Pi Pico 已經(jīng)有了一個(gè)廣泛的生態(tài)系統(tǒng),允許開發(fā)者選擇使用 MicroPython 或 C軟件開發(fā)工具包來為電路板編寫應(yīng)用程序。關(guān)于 Raspberry Pi Pico還有一點(diǎn)有趣的要說明的是,并不是只有一塊開發(fā)板可用。而是有三個(gè);只有一個(gè)標(biāo)準(zhǔn)配置的原版 SC0915、包括針座連接器的 SC0917以及帶有用于聯(lián)網(wǎng)應(yīng)用的低成本W(wǎng)i-Fi 芯片的 SC0918(圖 2)。
分線板選件
當(dāng) Raspberry Pi要用于快速原型開發(fā)時(shí),有必要方便接入電路板的邊緣連接器。接入它們的一個(gè)選擇是使用焊接針座并使用試驗(yàn)板。但這種解決方案往往會(huì)導(dǎo)致線路混亂,并從而導(dǎo)致差錯(cuò)。因此,取而代之的是,有多種分線板的選擇,將邊緣連接器擴(kuò)展到更容易獲得的接口。
例如,Bridgetek 的 MM2040EV Pico 模塊板將大部分邊緣連接器分解為插針和插座連接。此外,還有 Seeed Studio 為 Pico提供的 103100142 盾板,能以連接器的形式提供每個(gè)外設(shè)接口。每個(gè)連接器都與擴(kuò)展板引腳兼容,以便增加像慣性傳感器、電機(jī)驅(qū)動(dòng)器和測(cè)距儀之類功能。
用 C 還是用 MicroPython?
嵌入式系統(tǒng)傳統(tǒng)上都是用 C 語言編寫的,因?yàn)樗骖櫫说蛯拥目刂坪透邔拥南到y(tǒng)應(yīng)用方法。今天 C 語言的問題是,它是一種過時(shí)的、有著 50年歷史的編程語言,在大學(xué)里很少被教授。也更容易意外引入漏洞并造成損壞。盡管有這些潛在的問題,但 C 語言仍然是大多數(shù)嵌入式系統(tǒng)開發(fā)的首選語言。
Raspberry Pi Pico 生態(tài)系統(tǒng)提供的一個(gè)替代 C 語言的方案是 MicroPython。MicroPython 是一個(gè) CPython端口,旨在運(yùn)行在基于 MCU 的系統(tǒng)上。雖然它無疑是一個(gè)比 C語言更重度消耗處理器的用戶,但它是一種現(xiàn)代語言,許多開發(fā)人員都熟悉和適應(yīng)它。MicroPython 可以抽象出 MCU和硬件的低層細(xì)節(jié)。硬件訪問是通過高級(jí)應(yīng)用編程接口 (API) 進(jìn)行的,很容易學(xué)習(xí)——這是在項(xiàng)目期限緊迫的情況下的一個(gè)重要因素。
當(dāng)選擇使用哪種軟件開發(fā)工具包 (SDK) 時(shí)(C 或 MicroPython),開發(fā)者需要關(guān)注其具體的需求。與 MicroPython 相比,使用 C語言將提供對(duì) MCU 寄存器的低層訪問,具有更小的內(nèi)存占用,而且效率更高。
設(shè)置 C SDK
當(dāng)使用 C SDK 創(chuàng)建 LED 閃爍應(yīng)用時(shí),有幾種選擇。第一種是查看 SDK 文檔并按照說明進(jìn)行操作。第二種是使用預(yù)設(shè)的 Docker容器來自動(dòng)安裝所有必要的工具,以便開始使用。第三種選擇是手動(dòng)安裝工具鏈和 Raspberry Pi Pico 示例代碼,包括:
Git
Python 3
Cmake
gcc-arm-none-eabi
libnewlib-arm-none-eabi
可以通過使用以下命令克隆 Raspberry Pi 的 git repo 來完成獲取 Raspberry Pi Pico 示例代碼:
git clone https://github.com/raspberrypi/pico-sdk /home/sdk/pico-sdk
&&
cd /home/sdk/pico-sdk &&
git submodule update --init &&
這些庫和源代碼安裝完畢后,下一步就是探索和編譯 LED 閃爍應(yīng)用程序。
編寫第一個(gè)閃爍應(yīng)用程序
C SDK 帶有一個(gè)閃爍實(shí)例,開發(fā)者可以用它來建立其第一個(gè)應(yīng)用程序。以下代碼清單使用 Pico 的板載 LED 和PICO_DEFAULT_LED_PIN 指令來設(shè)置 I/O 引腳,并以 250 毫秒 (ms) 的延遲進(jìn)行閃爍。
/**
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "pico/stdlib.h"
int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
while (true) {
gpio_put(LED_PIN, 1);
sleep_ms(250);
gpio_put(LED_PIN, 0);
sleep_ms(250);
}
#endif
}
代碼清單:Raspberry Pi Pico 使用 PICO_DEFAULT_LED_PIN 指令來設(shè)置 I/O 引腳,并以 250毫秒的延遲進(jìn)行閃爍。(代碼來源:Raspberry Pi)
根據(jù)清單,LED_PIN 被指定為默認(rèn)引腳;然后調(diào)用 C gpio API。gpio_init 用于初始化引腳,而 gpio_set_dir 則用于將LED_PIN 設(shè)置為輸出。然后創(chuàng)建一個(gè)無限循環(huán),每 250 毫秒切換一次 LED 的狀態(tài)。
編譯應(yīng)用程序是相對(duì)簡單的。首先,開發(fā)者需要使用以下命令在他們的 Raspberry Pi Pico 文件夾中創(chuàng)建一個(gè)構(gòu)建目錄:
mkdir build
cd build
接下來,cmake 需要通過執(zhí)行以下命令為構(gòu)建做準(zhǔn)備:
cmake
現(xiàn)在,開發(fā)者可以換到 blinky 目錄并運(yùn)行 make:
cd blink
make
構(gòu)建過程的輸出將是一個(gè) blinky.uf2 文件。通過按住 BOOTSEL 引腳并給電路板通電,可以將編譯好的程序加載到 Raspberry Pi Pico 上。然后,RP2 將作為一個(gè)大容量存儲(chǔ)設(shè)備出現(xiàn)。開發(fā)者需要將 blinky.uf2 文件拖到驅(qū)動(dòng)器上,這時(shí),引導(dǎo)程序?qū)惭b該應(yīng)用程序。一旦完成,LED應(yīng)該就會(huì)開始閃爍。
結(jié)語
對(duì)于希望能夠掌控開發(fā)節(jié)奏的嵌入式開發(fā)者來說,Raspberry Pi Pico是一個(gè)很有吸引力的解決方案。這個(gè)方案提供多種選擇,包括獨(dú)立的解決方案或帶有無線連接的板卡。此外,其生態(tài)系統(tǒng)支持 C 和 C++,以及MicroPython。開發(fā)人員可以選擇最適合其應(yīng)用的語言,然后利用相應(yīng)的 SDK 來加速軟件開發(fā)。
-
微控制器
+關(guān)注
關(guān)注
48文章
7953瀏覽量
155130 -
嵌入式
+關(guān)注
關(guān)注
5152文章
19675瀏覽量
317665 -
C語言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141800
發(fā)布評(píng)論請(qǐng)先 登錄
Raspberry Pi Pico是什么
微控制器開發(fā)板Raspberry Pi Pico
使用raspberry pi Pico的原因
基于raspberry pi pico的EPS系統(tǒng)
4美元的微控制器Pico與RP2040芯片
樹莓派推出首款微控制器級(jí)產(chǎn)品Pi Pico
基于樹莓派產(chǎn)品 Raspberry Pi微控制器板的優(yōu)缺點(diǎn)
e絡(luò)盟現(xiàn)貨發(fā)售Arduino Nano RP2040 Connect和Raspberry Pi Pico

樹莓派 Raspberry Pi 設(shè)計(jì)的微控制器 RP2040迷你開發(fā)板Raspberry Pi Pico

適用于Raspberry Pi 4的Raspberry Pi Pico開發(fā)板

使用Raspberry Pi Pico W和MicroPython開發(fā)物聯(lián)網(wǎng)應(yīng)用

Raspberry Pi Pico 2

Raspberry Pi Pico 2 W 發(fā)布

評(píng)論