Перейти к содержанию

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:

ПараметрRP2040RP2350
Ядра2 × Cortex-M0+, до 133 МГц2 × Cortex-M33 или 2 × Hazard3 (RISC-V), 150 МГц
ОЗУ264 КБ, 6 банков520 КБ, 10 банков
Флешвнешняя QSPI до 16 МБвнешняя QSPI до 16 МБ и второй чип по второму выбору, у RP2354 — 2 МБ в корпусе
GPIO3030 (RP2350A) или 48 (RP2350B)
Входы АЦП44 (A) или 8 (B)
Автоматы PIO8 (2 блока)12 (3 блока)
Каналы ШИМ1624
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Входы АЦП
RP2350AQFN-60нет304
RP2350BQFN-80нет488
RP2354AQFN-602 МБ304
RP2354BQFN-802 МБ488

Напряжение на выводах

Это главное практическое различие двух поколений. У 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. Для точных измерений берут внешний АЦП или усредняют и избегают этих кодов.