Kom i gang med Raspberry Pi Pico Multicore Microcontroller Board ved hjelp av C
Bidrag fra DigiKeys nordamerikanske redaktører
2023-06-07
Det er et naturlig behov i innebygde systemer for å ha en kraftig, billig mikrokontrollerenhet (MCU). Disse enhetene spiller en viktig rolle ikke bare i produktet, men også i å støtte tester, rask prototyping og evner som maskinlæring (ML). Å komme i gang med mikrokontrollere (MCU-er) krever imidlertid generelt en grundig forståelse av MCU-teknologi og programmeringsspråk på lavt nivå. På toppen av det koster utviklingskort ofte mellom 20 og 1000 amerikanske dollar (USD), noe som kan være for dyrt for mange utviklere. Det er heller ikke alltid tilfelle at et utviklingskort er tilgjengelig, og selv når de er det, sliter designere ofte med å få et brett i gang.
Denne artikkelen introduserer Raspberry Pi Pico (SC0915) som et rimelig utviklingskort for RP2040-mikrokontrolleren (MCU-en), som gir utviklere et bredt spekter av funksjoner. Artikkelen utforsker Pico og noen utvidelseskort, undersøker de forskjellige utviklingssettene for programvare som Raspberry Pi Pico støtter, og demonstrerer hvordan du oppretter en blinkende LED-utrustning ved hjelp av C SDK.
Introduksjon til Raspberry Pi Pico
Raspberry Pi Pico ble først introdusert i 2021 som utviklingsplattform for mikrokontrolleren RP2040. Pico kan brukes som et frittstående utviklingskort, eller det kan utformes til et produkt direkte på grunn av kantforbindelser som kan loddes til et bærekort (figur 1). Kombinasjonen av PICOs kostnader, på under 5 dollar, og dens muligheter for flerbruk, har den blitt en populær løsning for både beslutningstakere og profesjonelle utviklere.
Bilde 1: Raspberry Pi Pico er et billig utviklingskort som inneholder alt som er nødvendig for å utvikle programmer på RP2040-mikrokontrolleren. (Bildekilde: Raspberry Pi)
RP2040 har en dual-core Arm® Cortex®-M0+ prosessor klokket på 133 megahertz (MHz) og innbefatter opptil 264 kilobyte (Kbytes) SRAM. RP2040 har ikke flash-minne integrert i brikken (flash on-chip). I stedet gir Raspberry Pi Pico en ekstern 2 megabyte (Mbyte) flash-brikke som kobles til RP2040 over et QSPI-grensesnitt (quad serial peripheral interface). Kortet har også en bruker-LED, en krystalloscillator som faselåsesløyfen (PLL) bruker til å skape en stabil høyhastighets CPU-klokke, og en trykknapp for å konfigurere om prosessoren starter normalt eller inn i en oppstartslaster.
Et omfattende økosystem
Raspberry Pi Pico har allerede et omfattende økosystem som lar utviklere velge mellom å bruke MicroPython eller C programvareutviklingssett for å skrive programvare for kortet. En interessant merknad om Raspberry Pi Pico er at det ikke bare er et enkelt utviklingskort tilgjengelig. I stedet er det tre; den opprinnelige SC0915 med en standardkonfigurasjon, SC0917 som inkluderer stiftlister (pinnelister) og SC0918 som innbefatter en lavpris Wi-Fi-brikke for tilkoblede utrustninger (bilde 2).
Bilde 2: Raspberry Pi Pico er tilgjengelig i tre versjoner. (Bildekilde: Beningo Embedded Group, LLC)
For hver av disse versjonene forblir den generelle fysiske størrelsen (fotavtrykket) til kortet det samme. Kantforbindelsene for kortet består av 40-pinners kantforbindelser for periferienhetene og tilkoblingsmulighetene vist i bilde 3. Disse inkluderer strøm, jord, en universell asynkron mottaker og sender (UART), generelle innganger og utganger (GPIO), pulsbreddemodulasjon (PWM), en analog-til-digital-omformer (ADC), en seriell periferisk sammenkobling (SPI), et I2C-sgrensesnitt, samt feilsøking.
Bilde 3: Raspberry Pi Pico kant-tilkobling for uttakspinner (pinouts) gir et bredt utvalg av perifer tilgang. (Bildekilde: Raspberry Pi)
Alternativer med utbrytningskort (breakout-kort)
Når Raspberry Pi skal brukes til rask prototyping, er det behov for å få enkel tilgang til kortets kantkontakter. Et alternativ for å få tilgang til dem er å fylle topptekstene og bruke et koblingsbrett (breadboard). Denne løsningen kan imidlertid ofte føre til et virvar av ledninger som kan føre til feil. Så i stedet er det flere alternativer for utbrytningskort (breakout-kort) som utvider kantkontaktene til mer lett tilgjengelige grensesnitt.
PICO-modulkortet MM2040EV fra Bridgetek har for eksempel uttak på de fleste kantkontakter til pinne- og uttakstilkoblinger. I tillegg finnes shield-kortet 103100142 for Pico fra Seeed Studio som gir hver perifer grensesnitt som en kobling. Hver kontakt er pinnekompatibel med ekspansjonskort, for å legge til funksjoner som treghetssensorer, motordrivere og avstandsmålere.
Til C eller til MicroPython?
Innebygde systemer har tradisjonelt blitt skrevet i C fordi det balanserer lavt nivå kontroll med høyere nivå tilnærminger for systemprogramvare. Problemet med C i dag er at det er et utdatert, femti år gammelt programmeringsspråk som sjelden undervises på universiteter. Det er også for lett å tilfeldigvis injisere feil og forårsake skade. Til tross for disse potensielle problemene, C er språket av valg for de fleste av innebygde systemer utvikling.
Et alternativ til å bruke C, levert av Raspberry Pi Pico økosystemet, er MicroPython. MicroPython er en CPython-port designet for å kjøre på mikrokontroller (MCU)-baserte systemer. Selv om det utvilsomt er en tyngre prosessorbruker enn C, er det et moderne språk som mange utviklere er kjent med og komfortable med. MicroPython kan abstrahere ut detaljer på lavt nivå av mikrokontroller (MCU) og maskinvare. Maskinvaretilganger er gjennom høynivå-API-er (application programming interfaces), som er enkle å lære – en viktig funksjon med stramme prosjektfrister.
Når du velger hvilket programvareutviklingssett (SDK) som skal brukes, må C- eller MicroPython-utviklere fokusere på spesifikke behov. Sammenlignet med MicroPython vil bruk av C gi lavt nivå tilgang til mikrokontrollere (MCU-er) registre, ha et mindre minneavtrykk og være mer effektivt.
Sette opp C SDK
Når du bruker C SDK for å lage et blinkende LED-utrustning, er det flere alternativer. Den første er å gjennomgå SDK-dokumentasjonen og følge instruksjonene. Den andre er å bruke en forhåndsinnstilt Docker container for å automatisk installere alle nødvendige verktøy for å komme i gang. Et tredje alternativ er å installere verktøykjedene og Raspberry Pi Pico eksempelkoden manuelt, inkludert:
- Git
- Python 3
- Cmake
- gcc-arm-none-eabi \
- libnewlib-arm-none-eabi
Henting av Raspberry Pi Pico eksempelkoden kan gjøres ved å klone Raspberry Pi 's git repo ved hjelp av følgende kommando:
git clone https://github.com/raspberrypi/pico-sdk /home/sdk/pico-sdk && \
cd /home/sdk/pico-sdk && \
git submodule update --init &&
Når disse bibliotekene og kildekoden er installert, er neste trinn å utforske og kompilere en blinkende LED-utrustning.
Skrive den første profrakoden for en blinkende utrustning
C SDK kommer med et blinkende eksempel som utviklere kan bruke til å bygge sin første programvare. Kodeoppføringen nedenfor bruker PICOs innebygde LED og PICO_DEFAULT_LED_PIN-direktivet til å sette opp en I/O-pinne og blinke den med en forsinkelse på 250 millisekunder (ms).
Kopi
/**
* 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
}
Kodeliste: Raspberry Pi Pico bruker PICO_DEFAULT_LED_PIN-direktivet for å sette opp en I/O-pin og blinke den med en forsinkelse på 250 ms. (Kodekilde: Raspberry Pi)
Per oppføringen blir LED_PIN tildelt standard PIN-kode; anrop blir deretter gjort til C gpio API-er. gpio_init brukes til å initialisere pinnen, mens gpio_set_dir brukes til å sette LED_PIN til en utgang. En uendelig sløyfe opprettes så som veksler statusen til LED hver 250 ms.
Å kompilere programmet er relativt greit. Først må en utvikler opprette en byggekatalog i Raspberry Pi Pico-mappen ved hjelp av følgende kommandoer:
mkdir build
cd build
Deretter må cmake være forberedt på byggingen ved å utføre følgende kommando:
cmake
Nå kan en utvikler bytte til blinky-katalogen og kjøre make:
cd blink
make
Resultatet fra byggeprosessen vil være en blinky.uf2-fil. Det kompilerte programmet kan lastes på Raspberry Pi Pico ved å holde nede BOOTSEL PIN og slå på kortet. RP2 vil da vises som en masselagringsenhet. Utvikleren må dra filen blinky.uf2 til disken, hvorpå oppstartslasteren vil installere programmet. Når du er ferdig, bør lysdiodeen / LED-en begynne å blinke.
Konklusjon
Raspberry Pi Pico er en attraktiv løsning for innebygde utviklere som leter etter fleksibilitet i sin utviklingssyklus. Flere alternativer er tilgjengelige, inkludert frittstående løsninger eller kort med trådløs tilkobling. I tillegg støtter økosystemet C og C++, samt MicroPython. Utviklere kan velge hvilket språk som fungerer best for deres program og deretter utnytte tilsvarende SDK for å akselerere programvareutvikling.
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.




