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

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

適用于Raspberry Pi 4的Raspberry Pi Pico開發板

使用Raspberry Pi Pico W和MicroPython開發物聯網應用

Raspberry Pi Pico 2

Raspberry Pi Pico 2 W 發布

評論