RP2040
Der RP2040 ist ein 32-Bit Microcontroller, der von der Raspberry Pi Foundation selbst entwickelt und am 21. Januar 2021 der Öffentlichkeit vorgestellt wurde. Er basiert auf einem Dual-Core ARM Cortex-M0+ Design.
Design-Ziele
- Geringe Kosten (ca. 1 €)
- Hohe Verfügbarkeit
- Einfache Verwendbarkeit
- Deterministisches Interrupt Handling und Instruction Cycle Timing für zeitkritische Applikationen
Features
- 3,3 V Betriebsspannung
- 133 MHz Dual ARM Cortex-M0+ Cores
- 264 KB SRAM
- Für Code und Daten
- Physisch partitioniert in sechs unabhängige Bänke für gleichzeitigen parallelen Zugriff durch verschiedene Bus-Master
- Binary-Code kann direkt aus externem Speicher über dedizierte Interfaces ausgeführt werden (SPI, DSPI oder QSPI). Ein kleiner Cache erhöht die Performance für typische Applikationen.
- QSPI Bus Controller, unterstützt bis zu 16 MB externen Flash-Speicher
- DMA Controller
- DMA Bus Master sind verfügbar, um sich wiederholende Datentransfers von den Prozessoren auszulagern
- AHB Crossbar für Chip-internes Daten-Routing
- Max. Bus-Bandbreite: 2 GB/s @ 125 MHz Systemtakt
- 2 × On-Chip PLLs, um unabhängig voneinander den System-Takt und den USB/ADC-Takt zu generieren
- Dedizierte Hardware für feste Peripherie-Funktionen wie SPI, I²C, UART
- Interner Ringoszillator (ROSC), 1,8-12 MHz
- Quarz-Oszillator (XOSC) für externe Quarze mit 1-15 MHz
- 64-Bit System-Timer mit Inkrement von 1 µs
- RTC (Real-Time Clock)
- 2× 4 PIO (Programmable Input/Output) State Machines
- Interner Temperatursensor
- Watchdog
- Brown-out Detection
Peripherie:
- 30 × GPIO (General Purpose Inputs/Outputs)
- 2 × UART (Universal Asynchronous Receiver Transmitter)
- 2 × SPI (Serial Peripheral Interface)
- 2 × I²C
- 16 × PWM (Pulse Width Modulation)
- USB 1.1 (Host- und Device-Modus)
- 4-Kanal 12-Bit Analog-Digital-Umsetzer (ADC)
- Nach dem SAR-Prinzip
- Sample-Rate: 500 kS/s @ 48 MHz ADC-Takt
- 3-Pin SWD (Serial Wire Debug) Interface
Programmierung
Der RP2040 kann in ARM Assembler, C/C++ oder MicroPython programmiert werden. Ein C/C++ SDK für das Raspberry Pi Pico Board ist verfügbar, das auch das freie Real-Time Betriebssystem FreeRTOS unterstützt. Offizielle Beispiel-Programme für das Raspberry Pi Pico Board sind in GitHub-Repositories zu finden.[1]
2021 veröffentlichten Geoff Graham und Peter Mather den BASIC-Interpreter PicoMite[2] als Ableger von BBC MMBasic. Dieser unterstützt alle PIOs, SD-Karten im FAT16/32-Format, diverse Sensoren, Grafikdisplays, die Kommunikation per UART, I2C und 1-Wire, ADC, PWM und SPI. Die Programmierung erfolgt über den USB-Anschluss auf der Platine per VT100-Emulation. PicoMite beinhaltet auch einen PIO-Assembler.
Besonderheiten
- Das I/O-Subsystem ist als PIO (Programmable Input/Output) ausgeführt. Es handelt sich dabei um State Machines, die sich mittels 9 spezieller Assembler-Instruktionen in ihrer konkreten Funktion frei programmieren lassen. Das ermöglicht somit Software-Implementierungen von Protokollen wie SDIO, DPI, I²S und DVI-D.
- Ein vollständig verbundener Switch verbindet ARM-Cores und DMA-Engines mit sechs unabhängigen RAM-Bänken
- Ein USB-Controller incl. PHY-Interface ist bereits im Chip integriert, so dass kein externer USB-Controller IC (z. B. USB-UART Bridge) benötigt wird
Package & Herstellungsprozess
Der Chip wird im 40-nm-Verfahren hergestellt. Er hat eine Größe von 20 mm² und ist in einem 7×7 mm großen QFN-56-SMD-Gehäuse untergebracht.
Namensgebung
RP | 2 | 0 | 4 | 0 |
---|---|---|---|---|
Raspberry Pi | Anzahl Cores | Prozessor-Typ: M0+ | RAM-Größe: floor(log2(RAM_in_kB / 16kB)) | NVRAM-Größe: floor(log2(NVRAM_in_kB / 16kB)) 0: kein on-board NVRAM |
Einzelnachweise
- raspberrypi / pico-examples, auf /github.com, abgerufen am 26. Juli 2021
- heise online: PicoMite: Neuer Basic-Interpreter für den Raspberry Pico. Abgerufen am 16. Januar 2022.
- RP2040 Datasheet (en, PDF) In: RaspberryPi.org. Abgerufen am 18. Juli 2021.