Wygląd płytki Raspberry Pi Pico został pokazany na fotografii tytułowej. Zastosowany mikrokontroler to specjalnie opracowany przez fundację układ, oznaczony symbolem RP2040.
Jego specyfikacja wygląda następująco:
- dwa rdzenie Cortex M0+ taktowane zegarem do 133 MHz,
- technologia 40 nm,
- 264 kB pamięci RAM w sześciu niezależnych bankach,
- współpraca z zewnętrzną pamięcią programu FLASH do 16 MB poprzez interfejs QSPI,
- wbudowany kontroler DMA,
- interfejsy 2×UART, 2×SPI, 2×I2C, 16×PWM, USB1.1,
- 30 linii GPIO,
- 4-wejściowy, 5-kanałowy przetwornik ADC SAR o rozdzielczości 12 bitów (ENOB = 9 bit) i maksymalnym próbkowaniu 500 kS/s,
- wbudowany przetwornik temperatury podłączony do piątego wejścia ADC,
- magistrala AHB łącząca peryferia z rdzeniem i pamięcią procesora,
- dwa układy logiki sekwencyjnej PIO z czterema maszynami stanów,
- dwa układy PLL generujące sygnały taktujące dla interfejsu USB, przetwornika ADC oraz rdzeni M0+,
- układ stabilizatora LDO dla zasilania rdzenia,
- interfejs debugowania SWD, bootloader, wsparcie UF2,
- obudowa QFN-56 7×7 mm, z padem termicznym.
Jak widać, nie skupiono się na opracowaniu procesora mającego wszystkie możliwe interfejsy i posiadającego niezrównaną elastyczność i wydajność. Dla osób stosujących mikroprocesory z rdzeniem M0+ ciekawostką może być użycie tylko zewnętrznej pamięci programu FLASH. Większość popularnych układów takich jak STM32, LPC, SAMD, PSoC itp. posiada wbudowaną pamięć o ewentualnie stopniowanej wielkości w zależności od wersji układu. Brak ten nie musi być poważną wadą, gdyż pamięci szeregowe Flash są powszechne i tanie, pozostaje jednak istotna w wielu aplikacjach kwestia zabezpieczenia jej zawartości przed nieautoryzowanym skopiowaniem.
Rozkład wyprowadzeń mikroprocesora RP2040 został pokazany na rysunku 1. Zakres dopuszczalnych napięć zasilania wynosi 1,62...3,63 V, zasilanie przetwornika ADC wyprowadzone jest na oddzielny pin, co ułatwia jego filtrację. Schemat blokowy RP2040 został pokazany na rysunku 2.
Sam układ RP2040 ma być dostępny w sprzedaży w drugim kwartale 2021 r.
Tak w telegraficznym skrócie prezentuje się serce Pi Pico.
Płytka Raspberry Pi Pico, oprócz mikroprocesora RP2040, zawiera 2 MB pamięć programu typu W25Q16, oscylator kwarcowy 12 MHz, przetwornicę buck-boost o napięciu wyjściowym 3,3 V umożliwiającą zasilanie płytki zarówno z portu USB napięciem 5 V, jak i ze złącza GPIO napięciem z przedziału 1,8...5,5 V, co ułatwia zasilanie bateryjne oraz, po uzupełnieniu aplikacji kilkoma elementami zewnętrznymi, realizację funkcji ładowania i zasilania z akumulatora. Z peryferiów dostępna jest tylko dioda LED. Przycisk BOOTSEL uruchamia wbudowany bootloader. Kilka linii GPIO procesora nie zostało wyprowadzonych na złącza, w tym niestety jedno z czterech wejść analogowych (ADC3) i są używane do monitorowania i sterowania zasilaniem oraz sterowania przetwornicą. Wyprowadzenia GPIO są zgodne z napięciem 3,3 V, przypisanie funkcji zostało pokazane na rysunku 3.
Rdzeń procesora zasilany jest napięciem 1,1 V z wbudowanego stabilizatora LDO. Możliwe jest doprowadzenie zewnętrznego napięcia odniesienia dla przetwornika ADC. Port debugowania w nie został wyprowadzony na typowe złącze 2×5 pinów, a jedynie na pady lutownicze. Rozmiary płytki to 51×21 mm, rozstaw złącz jest typowy i pasuje do płytek stykowych i prototypowych. Płytka według zapewnień producenta pracuje poprawnie w zakresie temperatur –25...85°C.
Wraz z płytką Pi Pico udostępniona została szczegółowa dokumentacja zarówno do mikroprocesora RP2040, jak i samej płytki uruchomieniowej. Do jakości dokumentacji nie można mieć zastrzeżeń, można ją pobrać tu: https://bit.ly/36e63dk.
Raspberry Pi Pico można programować w C/C++ i Micropythonie, dostępne są SDK oraz szczegółowy opis kompilacji dla Linuxa, Windows i Mac oraz programy przykładowe. Dla MicroPythona wydano też oficjalny drukowany podręcznik: „Get Started with MicroPython on Raspberry Pi Pico” http://bit.ly/3c9IJ43.
Programowanie pamięci FLASH odbywa się przy pomocy interfejsu USB. Po podłączeniu do PC moduł jest widoczny jako dysk przenośny, na który po prostu kopiujemy skompilowany plik programu.
Płytka Pi Pico wydaje się być bezpośrednią konkurencją dla Arduino MKR, z mocniejszym procesorem i bardzo konkurencyjną ceną, co okazuje się nie do końca właściwą oceną sytuacji. Zapowiadana jest współpraca zarówno z zespołem Arduino, jak i Adafruit, SparkFun oraz Pimoroni, którzy także udostępnili lub w najbliższym czasie udostępnią płytki z procesorem RP2040 i zróżnicowanym wbudowanym wyposażeniem. Jeżeli współpraca z zespołem Arduino zakończy się pełnym wsparciem programowym nowego procesora (w co nie wątpię skoro pracują nad własną płytką Arduino Nano RP2040 Connect z wbudowanym modułem Wi-Fi, mikrofonem MEMS i 9-osiowym IMU) sytuacja na rynku płytek uruchomieniowych DIY może stać się ciekawa.
Czy procesor RP2040 znajdzie zastosowanie w aplikacjach budowanych przez profesjonalistów i będzie konkurencją lub przynajmniej uzupełnieniem oferty STM, NXP i innych dostawców procesorów z rdzeniem ARM? Nie sądzę, ale na rynku DIY może znaleźć dla siebie miejsce. Popuszczając wodze fantazji i przewidując hipotetyczną integrację struktury RP2040 w strukturze SoC dla kolejnej wersji Raspberry Pi, analogicznie jak ma to miejsce w procesorach iMX8 otrzymalibyśmy bardzo ciekawe i kompleksowe rozwiązanie.
Adam Tatuś
adam.tatus@ep.com.pl