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

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

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

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

Raspberry Pi Pico 2

Raspberry Pi Pico 2 W 發(fā)布

評論