Začínáme s deskou vícejádrového mikrořadiče Raspberry Pi Pico s použitím jazyka C
Contributed By DigiKey's North American Editors
2023-06-07
Ve vestavěných systémech existuje základní potřeba mít výkonnou, a levnou mikrokontrolérovou jednotku (MCU). Tato zařízení hrají důležitou roli nejen v produktu, ale také v pomocných testech, rychlém prototypování a schopnostech, jako je strojové učení (ML). Začátek s jednotkou MCU však obecně vyžaduje důkladné porozumění technologii MCU a nízkoúrovňovým programovacím jazykům. Vývojové desky dále často stojí mezi 20 a 1000 USD, což může být pro mnoho vývojářů příliš drahé. Vývojová deska však nemusí být pokaždé k dispozici, a pokud ano, konstruktéři se často potýkají s jejím uvedením do provozu.
Tento článek představuje platformu Raspberry Pi Pico (SC0915) jako nízkonákladovou vývojovou desku pro jednotku RP2040 MCU, která vývojářům poskytuje širokou škálu možností. Tento článek zkoumá Pico a některé rozšiřující desky, zabývá se různými sadami pro vývoj softwaru podporovanými platformou Raspberry Pi Pico, a ukazuje, jak vytvořit aplikaci s blikající LED diodou pomocí softwarové vývojové sady C.
Úvod do platformy Raspberry Pi Pico
Raspberry Pi Pico byla poprvé představen v roce 2021 jako vývojová platforma pro mikrokontrolér RP2040. Pico lze použít jako samostatnou vývojovou desku, nebo ji začlenit přímo do produktu díky okrajovým spojům, které lze připájet k nosné desce (obrázek 1). Díky ceně pod 5 USD a jeho víceúčelovým využitím se deska Pico stala oblíbeným řešením jak pro makery, tak i pro profesionální vývojáře.
Obrázek 1: Raspberry Pi Pico je levná vývojová deska obsahující vše potřebné pro vývoj aplikací na mikrokontroléru RP2040. (Zdroj obrázku: Raspberry Pi)
Mikrokontrolér RP2040 je vybaven dvoujádrovým procesorem Arm® Cortex®-M0+ taktovaným na 133 MHz obsahujícím až 264 kB paměti SRAM. Mikrokontrolér RP2040 neobsahuje paměť flash na čipu. Platforma Raspberry Pi Pico namísto toho poskytuje externí flash čip o kapacitě 2 MB, který se propojuje s mikrokontrolérem RP2040 pomocí quad sériového periferního rozhraní (QSPI). Deska dále obsahuje uživatelskou LED diodu, krystalový oscilátor, pomocí kterého fázový závěs (PLL) vytváří stabilní vysokorychlostní taktovací impulzy jednotky CPU, a tlačítko určující, zda procesor startuje normálně nebo do spouštěcího zavaděče.
Rozsáhlý ekosystém
Platforma Raspberry Pi Pico již disponuje rozsáhlým ekosystémem, který umožňuje vývojářům při psaní aplikací pro desku výběr mezi vývojovou softwarovou sadou s jazykem MicroPython nebo C. O platformě Raspberry Pi Pico je zajímavé vědět, že není k dispozici pouze jedna vývojová deska. Namísto toho existují tři desky; původní SC0915 se standardní konfigurací, SC0917 zahrnující paticové konektory a SC0918 obsahující levný Wi-Fi čip pro připojené aplikace (obrázek 2).
Obrázek 2: platforma Raspberry Pi Pico je k dispozici ve třech konfiguracích. (Zdroj obrázku: Beningo Embedded Group, LLC)
Pro každou z těchto verzí zůstává obecný půdorys desky stejný. Spoje na okraji desky se skládají ze 40pinových okrajových konektorů pro periferie a další možnosti připojení, jak je znázorněno na obrázku 3. Patří mezi ně napájení, uzemnění, univerzální asynchronní přijímač a vysílač (UART), vstup a výstup pro všeobecné použití (GPIO), pulsně šířková modulace (PWM), analogově-digitální převodník (ADC), sériové periferní propojení (SPI), rozhraní mezi integrovanými obvody (I2C) a ladění.
Obrázek 3: piny připojené k okraji desky Raspberry Pi Pico poskytují přístup k široké škále periferií. (Zdroj obrázku: Raspberry Pi)
Volitelné rozvětvovací desky
Pokud se bude platforma Raspberry Pi používat pro rychlé prototypování, je třeba získat snadný přístup ke konektorům na okraji desky. Jednou z možností, jak k nim získat přístup, je rozšíření patic a použití nepájivé desky. Toto řešení však může často vést k chaosu vodičů způsobující chyby. Místo toho tedy existuje několik možností pro rozvětvovací desky, které rozšiřují okrajové konektory na snadno dostupná rozhraní.
Například modulární deska Pico MM2040EV od společnosti Bridgetek rozděluje většinu okrajových konektorů na pinové a zásuvkové spoje. Kromě toho pro platformu Pico existuje rozšiřující deska 103100142 od společnosti Seed Studio, která poskytuje jednotlivá periferní rozhraní jako konektory. Každý konektor je pinově kompatibilní s rozšiřujícími deskami funkcí, jako jsou inerciální senzory, ovladače motoru a dálkoměry.
Do jazyka C nebo MicroPython?
Vestavěné systémy byly tradičně psány v jazyce C, protože vyvažuje nízkoúrovňové řízení s přístupy k aplikacím na vyšší úrovni. Problém jazyka C dnes spočívá ve skutečnosti, že se jedná o zastaralý, padesát let starý programovací jazyk, který se na univerzitách vyučuje jen zřídka. V něm lze také příliš snadno náhodně nasadit chyby programu a způsobit škody. Navzdory těmto potenciálním problémům je C jazykem volby pro vývoj většiny vestavěných systémů.
Alternativou k používání jazyka C, kterou poskytuje ekosystém plaformy Raspberry Pi Pico, je jazyk MicroPython. Jazyk MicroPython je port CPython navržený pro provoz na systémech založených na jednotkách MCU. Ačkoli se jedná o nepochybně náročnějšího uživatele procesoru, než je jazyk C, je to moderní jazyk, se kterým je mnoho vývojářů obeznámeno a vyhovuje jim. Jazyk MicroPython dokáže abstrahovat nízkoúrovňové detaily jednotky MCU a hardwaru. Hardwarové přístupy se uskutečňují prostřednictvím vysokoúrovňových aplikačních programovacích rozhraní (API), které se snadno učí, což je důležitá funkce pro projekty s krátkými termíny.
Při výběru softwarové vývojové sady (SDK) - C nebo MicroPython - se vývojáři musejí zaměřit na konkrétní potřeby. Použití jazyka C bude v porovnání s jazykem MicroPython poskytovat nízkoúrovňový přístup k registrům jednotky MCU, mít menší nároky na paměť a bude efektivnější.
Nastavení vývojové sady s jazykem C
Při použití sady SDK s jazykem C k vytvoření aplikace s blikající LED diodou existuje několik možností. První z nich je prostudování dokumentace sady SDK a postupování podle pokynů. Druhou je použití předvolby Docker container k automatické instalaci všech nástrojů nezbytných k zahájení. Třetí možností je ruční instalace sady nástrojů a vzorového kódu Raspberry Pi Pico, včetně:
- Git
- Python 3
- Cmake
- gcc-arm-none-eabi \
- libnewlib-arm-none-eabi
Načtení ukázkového kódu Raspberry Pi Pico lze provést klonováním git repo Raspberry Pi pomocí následujícího příkazu:
git klon https://github.com/raspberrypi/pico-sdk /home/sdk/pico-sdk && \
cd /home/sdk/pico-sdk && \
git submodule update --init &&
Jakmile budou tyto knihovny a zdrojový kód nainstalovány, dalším krokem je prozkoumání a kompilace aplikaci s blikající LED diodou.
Psaní první blikající aplikace
Sad SDK s jazykem C přichází s krátkým příkladem, který mohou vývojáři použít k vytvoření své první aplikace. Níže uvedený seznam kódů používá LED diodu na desce Pico a direktivu PICO_DEFAULT_LED_PIN k nastavení I/O pinu a jeho blikání se zpožděním 250 ms.
Kopírovat
/**
* 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
}
Výpis kódu: Raspberry Pi Pico používá direktivu PICO_DEFAULT_LED_PIN k nastavení I/O pinu a jeho blikání se zpožděním 250 ms. (Zdroj kódu: Raspberry Pi)
Podle seznamu je LED_PIN přiřazen výchozí pin; volání jsou pak provedena do C gpio API. gpio_init se používá k inicializaci pinu, zatímco gpio_set_dir se používá k nastavení LED_PIN na výstup. Poté se vytvoří nekonečná smyčka, která přepíná stav LED diody každých 250 ms.
Kompilace aplikace je poměrně jednoduchá. Nejprve musí vývojář vytvořit adresář sestavení ve své složce Raspberry Pi Pico pomocí následujících příkazů:
mkdir build
cd build
Dále je třeba cmake připravit na sestavení provedením následujícího příkazu:
cmake
Nyní může vývojář přejít do adresáře blikání a spustit make:
cd blink
make
Výstupem z procesu sestavení bude soubor blinky.uf2. Zkompilovaný program lze načíst do Raspberry Pi Pico podržením pinu BOOTSEL a zapnutím desky. RP2 se poté objeví jako velkokapacitní paměťové zařízení. Vývojář musí přetáhnout soubor blinky.uf2 na jednotku, v tomto okamžiku zavaděč nainstaluje aplikaci. Po dokončení by měla LED dioda začít blikat.
Závěr
Platforma Raspberry Pi Pico je atraktivní řešení pro vývojáře vestavěných aplikací, kteří hledají flexibilitu ve svém vývojovém cyklu. K dispozici je několik možností, včetně samostatných řešení nebo desek s bezdrátovým připojením. Ekosystém navíc podporuje jazyky C a C++, jakož i MicroPython. Vývojáři si mohou vybrat, který jazyk je pro jejich aplikaci nejvhodnější, a poté využít odpovídající SDK k urychlení vývoje softwaru.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.