作者:Jacob Beningo
在嵌入式系統(tǒng)中,有一個內在的需求,就是要有一個強大的、低成本的微控制器單元(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 盾板,能以連接器的形式提供每個外設接口。每個連接器都與擴展板引腳兼容,以便增加像慣性傳感器、電機驅動器和測距儀之類功能。
用 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 寄存器的低層訪問,具有更小的內存占用,而且效率更高。
設置 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 被指定為默認引腳;然后調用 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 文件拖到驅動器上,這時,引導程序將安裝該應用程序。一旦完成,LED應該就會開始閃爍。
結語
對于希望能夠掌控開發(fā)節(jié)奏的嵌入式開發(fā)者來說,Raspberry Pi Pico是一個很有吸引力的解決方案。這個方案提供多種選擇,包括獨立的解決方案或帶有無線連接的板卡。此外,其生態(tài)系統(tǒng)支持 C 和 C++,以及MicroPython。開發(fā)人員可以選擇最適合其應用的語言,然后利用相應的 SDK 來加速軟件開發(fā)。
-
微控制器
+關注
關注
48文章
7559瀏覽量
151468 -
嵌入式
+關注
關注
5083文章
19131瀏覽量
305469 -
C語言
+關注
關注
180文章
7605瀏覽量
136903
發(fā)布評論請先 登錄
相關推薦
評論