RP2040 и RP2350 — микроконтроллеры Raspberry Pi
RP2040 — первый микроконтроллер Raspberry Pi, сердце платы Pico: два ядра Cortex-M0+, 264 КБ памяти и программируемые блоки ввода-вывода PIO. RP2350 — его преемник с ядрами Cortex-M33 или RISC-V, вдвое большей памятью и защитой прошивки. Разбираем по даташитам, чем они отличаются и о чём помнить при проектировании.
RP2040 — первый микроконтроллер Raspberry Pi. По даташиту это два ядра ARM Cortex-M0+ до 133 МГц, 264 КБ встроенной памяти в шести банках, 30 GPIO и блоки программируемого ввода-вывода PIO, которые позволяют сделать в «железе» почти любой цифровой интерфейс. Встроенной флеш у чипа нет: программа хранится во внешней QSPI-флеш до 16 МБ и выполняется прямо из неё через кэш, а в ПЗУ зашит загрузчик UF2 — прошивка копируется на плату как файл на флешку.
Название по даташиту расшифровывается так: RP — Raspberry Pi, 2 — число ядер, 0 — тип ядра (Cortex-M0+), 4 — ⌊log₂(ОЗУ / 16 КБ)⌋, последний 0 — встроенной энергонезависимой памяти нет.
RP2040 и RP2350
RP2350 — следующее поколение. По даташитам Raspberry Pi:
| Параметр | RP2040 | RP2350 |
|---|---|---|
| Ядра | 2 × Cortex-M0+, до 133 МГц | 2 × Cortex-M33 или 2 × Hazard3 (RISC-V), 150 МГц |
| ОЗУ | 264 КБ, 6 банков | 520 КБ, 10 банков |
| Флеш | внешняя QSPI до 16 МБ | внешняя QSPI до 16 МБ и второй чип по второму выбору, у RP2354 — 2 МБ в корпусе |
| GPIO | 30 | 30 (RP2350A) или 48 (RP2350B) |
| Входы АЦП | 4 | 4 (A) или 8 (B) |
| Автоматы PIO | 8 (2 блока) | 12 (3 блока) |
| Каналы ШИМ | 16 | 24 |
| 5 В на выводах | нет, не выше IOVDD + 0,5 В | да, при поданном питании; 3,3 В без питания не повреждают |
| Защита | — | подписанная загрузка, OTP 8 КБ для ключей, TrustZone у ядер Cortex-M33, ускоритель SHA-256 |
| Питание ядра | встроенный линейный стабилизатор | встроенный импульсный, в сне — экономичный линейный |
Общее у обоих: 2 UART, 2 SPI, 2 I²C, USB 1.1 с режимами устройства и хоста, DMA, загрузчик в ПЗУ. Исполнения RP2350 по даташиту:
| Микросхема | Корпус | Встроенная флеш | GPIO | Входы АЦП |
|---|---|---|---|---|
| RP2350A | QFN-60 | нет | 30 | 4 |
| RP2350B | QFN-80 | нет | 48 | 8 |
| RP2354A | QFN-60 | 2 МБ | 30 | 4 |
| RP2354B | QFN-80 | 2 МБ | 48 | 8 |
Напряжение на выводах
Это главное практическое различие двух поколений. У RP2040 по таблице предельных режимов напряжение на выводе — от −0,5 до IOVDD + 0,5 В, а питание выводов IOVDD — 1,8–3,3 В номинально. Значит, при обычных 3,3 В на вывод нельзя подавать больше 3,8 В: сигналы 5-вольтовой логики и датчиков подключают через делитель или преобразователь уровней.
У RP2350 Raspberry Pi заявляет выводы, допускающие 5 В при поданном питании и не повреждающиеся от 3,3 В, когда чип обесточен.
АЦП
У RP2040 четыре входа АЦП на выводах GPIO и внутренний датчик температуры; преобразователь 12-разрядный, до 500 тысяч отсчётов в секунду. Но по испытаниям Raspberry Pi эффективная разрядность — 8,6–8,8 бита, типично 8,7, при 250 тысячах отсчётов. В списке эрратумов RP2040 есть особенность E11: дифференциальная нелинейность резко выше на кодах 512, 1536, 2560 и 3584 — даташит объясняет её разбросом внутренних конденсаторов. Ещё один эрратум, E6: на выводах АЦП цифровые входы по умолчанию не отключены, и их отключают программно перед измерением.
Как устроен АЦП на плате Pico и что ограничивает его точность там — в статье о Raspberry Pi Pico.
Эрратум RP2350-E9
У первого массового степпинга RP2350 — A2 — есть ошибка E9: когда вывод настроен как вход и напряжение на нём в неопределённой зоне между VIL и VIH, из него вытекает ток утечки около 120 мкА, который держит вывод примерно на 2,2 В. Встроенная подтяжка вниз его не пересиливает. По даташиту обходные пути — внешняя подтяжка вниз 8,2 кОм или меньше либо отключение входного буфера на время, когда нужна подтяжка вниз. Подтяжка вверх работает нормально. В степпинге A3 ошибка исправлена; степпинг читается из регистра CHIP_ID.
Периферия и платы
- PIO — главная особенность чипов Raspberry Pi: небольшие автоматы со своей системой команд, которые сами формируют сигналы на выводах. Подробно — в статье «PIO RP2040», делитель такта автомата считает калькулятор делителя PIO.
- ШИМ — 8 слайсов по 2 канала у RP2040; частоту и делитель считает калькулятор ШИМ RP2040.
- Платы — распиновка, питание и ограничения Raspberry Pi Pico и беспроводной Pico W.
Другие семейства и как выбрать — в разделе «Микроконтроллеры», чипы с Wi-Fi — в разделе ESP32.
Частые вопросы
Чем RP2350 отличается от RP2040?
По даташитам Raspberry Pi: у RP2350 два ядра Cortex-M33 или Hazard3 RISC-V на 150 МГц вместо Cortex-M0+ на 133 МГц, 520 КБ памяти вместо 264 КБ, 12 автоматов PIO вместо 8, 24 канала ШИМ вместо 16, защищённая загрузка и OTP-память. Выводы RP2350 выдерживают 5 В при поданном питании, у RP2040 — нет. В корпусе QFN-80 у RP2350 48 GPIO и 8 входов АЦП.
Можно ли подавать 5 В на выводы RP2040?
Нет. По даташиту RP2040 напряжение на выводе не должно превышать IOVDD + 0,5 В, то есть при питании 3,3 В — 3,8 В. Сигналы 5 В подают через делитель или преобразователь уровней. У RP2350 по даташиту выводы допускают 5 В, когда чип запитан, и не повреждаются от 3,3 В без питания.
Что означают цифры в названии RP2040?
Raspberry Pi объясняет это в даташите: 2 — число ядер, 0 — тип ядра (Cortex-M0+), 4 — округлённый вниз двоичный логарифм объёма ОЗУ, делённого на 16 КБ (264 КБ / 16 КБ ≈ 16, log₂ = 4), последний 0 — нет встроенной энергонезависимой памяти.
Насколько точен АЦП RP2040?
Скромно для 12 бит: по даташиту эффективная разрядность при 250 тысячах отсчётов в секунду — 8,7 бита типично. Кроме того, у RP2040 есть особенность из списка эрратумов: дифференциальная нелинейность резко выше на кодах 512, 1536, 2560 и 3584. Для точных измерений берут внешний АЦП или усредняют и избегают этих кодов.
Смотрите также
- МикроконтроллерыAVR, ARM Cortex-M, ESP32, PIC, MSP430: архитектура и выбор
- Raspberry Pi Pico40 контактов, функции GPIO, питание, АЦП, BOOTSEL и SWD
- ШИМ RP2040: TOP и делительTOP и делитель под частоту, коррекция фазы, уровень, слайс и канал, код Pico SDK
- PIO RP2040Автоматы PIO: устройство, 9 команд, задержка, side-set, FIFO, частота, пример
- Делитель PIO RP2040INT и FRAC по частоте и тактам на бит, регистр CLKDIV, ошибка, код pico-sdk
- ARM Cortex-MЯдра M0–M85: архитектуры, FPU, DSP, MPU, TrustZone, выбор
- ESP32ESP32, S2, S3, C2, C3, C5, C6, H2, P4: ядра, радио, USB, GPIO — сравнение и выбор