Raspberry Pi Pico 2: распиновка и отличия от Pico
Pico 2 — та же плата Raspberry Pi Pico по форме и расположению контактов, но с новым микроконтроллером RP2350: ядра Cortex-M33 или RISC-V Hazard3 до 150 МГц, вдвое больше памяти и три блока PIO. Разбираем по даташитам Raspberry Pi, что осталось прежним, какие функции выводов добавились и о чём помнить при переходе с Pico.
Обновлено Редакция GAW
Raspberry Pi Pico 2 — вторая версия платы Raspberry Pi Pico. По даташиту у неё та же форма 51 × 21 мм, те же 40 контактов на тех же местах, те же отверстия и отладочный разъём, но вместо RP2040 стоит RP2350 в корпусе QFN-60 (RP2350A).
| Параметр | Pico | Pico 2 |
|---|---|---|
| Микроконтроллер | RP2040: 2 × Cortex-M0+ | RP2350A: 2 × Cortex-M33 или 2 × RISC-V Hazard3 |
| Частота | 133 МГц | 150 МГц |
| SRAM | 264 КБ | 520 КБ |
| Флеш-память | 2 МБ | 4 МБ, W25Q32RV |
| Блоки PIO | 2, 8 автоматов | 3, 12 автоматов |
| GPIO на контактах | 26 | те же 26: GP0–GP22 и GP26–GP28 |
| Питание | VSYS 1,8–5,5 В | VSYS 1,8–5,5 В, стабилизатор RT6150 |
| Размер | 51 × 21 мм | 51 × 21 мм |
Распиновка
Плата нарисована сверху, разъёмом USB вверх. Нумерация та же, что у Pico: 1 — верхний левый у разъёма USB, вниз по левому ряду до 20, затем снизу вверх по правому до 40.
- ввод-вывод
- питание и земля
- управление: 3V3_EN, RUN
- выбранная функция
Контакты и функции GPIO
Основные функции выводов — SPI, UART, I²C и ШИМ — у RP2350 расположены так же, как у RP2040: код, который выбирает функции выводов для Pico, на Pico 2 работает с теми же номерами. Интерфейсы по умолчанию в pico-sdk для платы pico2 тоже прежние: UART0 — GP0 и GP1, I²C0 — GP4 и GP5, SPI0 — GP16–GP19.
| Контакт | Подпись | SPI | I²C | UART | ШИМ | Ещё |
|---|---|---|---|---|---|---|
| 1 | GP0 | SPI0 RX | I²C0 SDA | UART0 TX | PWM0 A | QMI CS1n: выбор второй микросхемы флеш или PSRAM; в pico-sdk по умолчанию UART0 TX |
| 2 | GP1 | SPI0 CSn | I²C0 SCL | UART0 RX | PWM0 B | в pico-sdk по умолчанию UART0 RX |
| 3 | GND | общий провод | ||||
| 4 | GP2 | SPI0 SCK | I²C1 SDA | UART0 CTS | PWM1 A | UART0 TX на функции F11 |
| 5 | GP3 | SPI0 TX | I²C1 SCL | UART0 RTS | PWM1 B | UART0 RX на функции F11 |
| 6 | GP4 | SPI0 RX | I²C0 SDA | UART1 TX | PWM2 A | в pico-sdk по умолчанию I2C0 SDA |
| 7 | GP5 | SPI0 CSn | I²C0 SCL | UART1 RX | PWM2 B | в pico-sdk по умолчанию I2C0 SCL |
| 8 | GND | общий провод | ||||
| 9 | GP6 | SPI0 SCK | I²C1 SDA | UART1 CTS | PWM3 A | UART1 TX на функции F11 |
| 10 | GP7 | SPI0 TX | I²C1 SCL | UART1 RTS | PWM3 B | UART1 RX на функции F11 |
| 11 | GP8 | SPI1 RX | I²C0 SDA | UART1 TX | PWM4 A | QMI CS1n: выбор второй микросхемы флеш или PSRAM |
| 12 | GP9 | SPI1 CSn | I²C0 SCL | UART1 RX | PWM4 B | |
| 13 | GND | общий провод | ||||
| 14 | GP10 | SPI1 SCK | I²C1 SDA | UART1 CTS | PWM5 A | UART1 TX на функции F11 |
| 15 | GP11 | SPI1 TX | I²C1 SCL | UART1 RTS | PWM5 B | UART1 RX на функции F11 |
| 16 | GP12 | SPI1 RX | I²C0 SDA | UART0 TX | PWM6 A | выход HSTX; тактовый GPIN0 |
| 17 | GP13 | SPI1 CSn | I²C0 SCL | UART0 RX | PWM6 B | выход HSTX; тактовый GPOUT0 |
| 18 | GND | общий провод | ||||
| 19 | GP14 | SPI1 SCK | I²C1 SDA | UART0 CTS | PWM7 A | выход HSTX; UART0 TX на функции F11; тактовый GPIN1 |
| 20 | GP15 | SPI1 TX | I²C1 SCL | UART0 RTS | PWM7 B | выход HSTX; UART0 RX на функции F11; тактовый GPOUT1 |
| 21 | GP16 | SPI0 RX | I²C0 SDA | UART0 TX | PWM0 A | выход HSTX; в pico-sdk по умолчанию SPI0 RX |
| 22 | GP17 | SPI0 CSn | I²C0 SCL | UART0 RX | PWM0 B | выход HSTX; в pico-sdk по умолчанию SPI0 CSn |
| 23 | GND | общий провод | ||||
| 24 | GP18 | SPI0 SCK | I²C1 SDA | UART0 CTS | PWM1 A | выход HSTX; UART0 TX на функции F11; в pico-sdk по умолчанию SPI0 SCK |
| 25 | GP19 | SPI0 TX | I²C1 SCL | UART0 RTS | PWM1 B | выход HSTX; UART0 RX на функции F11; QMI CS1n: выбор второй микросхемы флеш или PSRAM; в pico-sdk по умолчанию SPI0 TX |
| 26 | GP20 | SPI0 RX | I²C0 SDA | UART1 TX | PWM2 A | тактовый GPIN0 |
| 27 | GP21 | SPI0 CSn | I²C0 SCL | UART1 RX | PWM2 B | тактовый GPOUT0 |
| 28 | GND | общий провод | ||||
| 29 | GP22 | SPI0 SCK | I²C1 SDA | UART1 CTS | PWM3 A | UART1 TX на функции F11; тактовый GPIN1 |
| 30 | RUN | сброс RP2040 низким уровнем | ||||
| 31 | GP26 | SPI1 SCK | I²C1 SDA | UART1 CTS | PWM5 A | вход АЦП ADC0; UART1 TX на функции F11 |
| 32 | GP27 | SPI1 TX | I²C1 SCL | UART1 RTS | PWM5 B | вход АЦП ADC1; UART1 RX на функции F11 |
| 33 | AGND | земля АЦП | ||||
| 34 | GP28 | SPI1 RX | I²C0 SDA | UART0 TX | PWM6 A | вход АЦП ADC2 |
| 35 | ADC_VREF | питание и опора АЦП | ||||
| 36 | 3V3(OUT) | выход 3,3 В, до 300 мА | ||||
| 37 | 3V3_EN | выключение 3,3 В низким | ||||
| 38 | GND | общий провод | ||||
| 39 | VSYS | вход 1,8–5,5 В | ||||
| 40 | VBUS | 5 В от USB | ||||
Что добавилось в функциях выводов
По таблице 3 даташита RP2350 у каждого вывода стало двенадцать функций вместо девяти:
| Функция | Где | Что даёт |
|---|---|---|
| F0 HSTX | GPIO12–GPIO19 | быстрый передатчик High-Speed Transmit — все восемь выводов есть на контактах Pico 2 |
| F8 PIO2 | все GPIO | третий блок программируемого ввода-вывода |
| F9 QMI CS1n | GPIO0, GPIO8, GPIO19 | выбор второй микросхемы флеш-памяти или PSRAM на шине QSPI |
| F9 трассировка | GPIO1–GPIO5 | трассировка исполнения ядер Cortex-M33 |
| F11 UART | выводы CTS и RTS | TX и RX того же UART: на GP2 и GP3 — второй вариант UART0, на GP6 и GP7 — UART1 и так далее |
Функция F11 позволяет вывести TX и RX на выводы, которые у RP2040 годились только для CTS и RTS, — это даёт больше вариантов разводки UART. Программировать PIO помогает статья «PIO в RP2040», делитель такта автомата — калькулятор: у RP2350 тот же делитель 16.8.
GPIO, занятые на плате
Четыре вывода RP2350 Pico 2 использует сама, как и Pico:
| GPIO | Назначение на плате |
|---|---|
| GPIO23 | режим импульсного стабилизатора RT6150 (вывод PS): 0 — экономичный PFM, 1 — PWM с меньшими пульсациями |
| GPIO24 | вход: высокий уровень, если на VBUS есть напряжение USB |
| GPIO25 | выход на светодиод на плате |
| GPIO29 | АЦП, канал 3: напряжение VSYS, делённое на 3 |
Светодиод на GPIO25, как у Pico, а не на беспроводном модуле, как у Pico W. Напряжение VSYS, делённое на 3, по-прежнему измеряют каналом ADC3 на GPIO29. Если АЦП должен работать с меньшими пульсациями, даташит Pico 2 советует перевести стабилизатор в режим PWM высоким уровнем на GPIO23 — в режиме PFM по умолчанию пульсации больше.
Питание
Цепь питания та же: VBUS от разъёма micro-USB, вход VSYS на 1,8–5,5 В, импульсный стабилизатор RT6150, который даёт 3,3 В для RP2350 и внешних схем. Нагрузку на выход 3V3 даташит советует держать до 300 мА. Контакт 3V3_EN выключает стабилизатор, а с ним и всю плату; RUN — вход сброса RP2350 с внутренней подтяжкой около 50 кОм.
На обратной стороне — тестовые точки TP1–TP7: земля и линии USB, GPIO23 и GPIO25, BOOTSEL для входа в режим загрузки по USB и 1V1. TP4 и TP7 использовать не предполагается, TP5 со светодиодом даташит не рекомендует.
Эррата E9
У первого массового степпинга RP2350 — A2 — есть ошибка E9: вход в неопределённом состоянии отдаёт ток около 120 мкА, который встроенная подтяжка вниз не пересиливает. Если схема рассчитывает на внутреннюю подтяжку вниз — например, кнопка к питанию, — на плате с RP2350 степпинга A2 нужна внешняя подтяжка 8,2 кОм или меньше. В степпинге A3 ошибка исправлена. Подробнее и о других эррата — в разделе RP2040 и RP2350.
Прошивка и отладка
Прошивка та же, что у Pico: кнопка BOOTSEL при подключении USB открывает загрузчик UF2, а разъём SWD внизу платы позволяет загружать и отлаживать программу. Отладочный интерфейс разобран на странице JTAG и SWD. Прошивку для Pico 2 собирают заново — для платы pico2 в pico-sdk.
Частые вопросы
Чем Raspberry Pi Pico 2 отличается от Pico?
Микроконтроллером и памятью, но не распиновкой. По даташиту Pico 2 вместо RP2040 стоит RP2350: частота 150 МГц вместо 133, SRAM 520 КБ вместо 264, ядра Cortex-M33 или RISC-V Hazard3 вместо Cortex-M0+, три блока PIO вместо двух, флеш-память 4 МБ вместо 2. Размер платы, расположение контактов, отверстий и отладочного разъёма — те же.
Подойдёт ли программа для Pico к Pico 2?
Исходный код — обычно да: выводы и их основные функции SPI, UART, I²C и ШИМ те же. Но прошивку нужно собрать заново — для платы pico2 в pico-sdk, а в MicroPython и Arduino выбрать сборку для Pico 2: у RP2350 другие ядра.
Что такое HSTX на Pico 2?
Быстрый передатчик RP2350 — High-Speed Transmit. По даташиту RP2350 он передаёт поток данных на восемь выводов — функция F0 на GPIO12–GPIO19 — с частотой, не зависящей от системной, и снижает нагрузку на процессор при выводе изображения DVI-D. На Pico 2 все восемь выводов есть на контактах.
Что такое эррата E9 у RP2350?
Ошибка первого массового степпинга RP2350 — A2: когда вывод настроен как вход и напряжение на нём в неопределённой зоне, из него вытекает ток около 120 мкА, и встроенная подтяжка вниз его не пересиливает. Обходные пути по даташиту — внешняя подтяжка вниз 8,2 кОм или меньше либо отключение входного буфера. В степпинге A3 ошибка исправлена. Подробнее — в разделе о RP2040 и RP2350.
Источники
- Raspberry Pi. Raspberry Pi Pico 2 Datasheet (Release 5) — разд. 1 — RP2350: 2 × Cortex-M33 или Hazard3 до 150 МГц, 520 КБ SRAM, 30 GPIO (4 — АЦП), АЦП 12 бит 500 тыс. отсчётов/с, 2 UART, 2 I²C, 2 SPI, 16 каналов ШИМ, 3 блока PIO; флеш W25Q32RV, кварц Abracon; импульсный стабилизатор 1,8–5,5 В; разд. 2 — отличия от Pico: флеш 2 → 4 МБ, 133 → 150 МГц, SRAM 264 → 520 КБ, 2 → 3 PIO; рис. 3 — 51 × 21 мм, как у Pico; разд. 3.1 — GPIO23 (режим PS стабилизатора RT6150), GPIO24 (VBUS), GPIO25 (светодиод), GPIO29 (ADC3, VSYS/3); 3V3 — нагрузка до 300 мА; RUN — подтяжка около 50 кОм; тестовые точки TP1–TP7; разд. 5.4 — PWM-режим стабилизатора снижает пульсации
- Raspberry Pi. RP2350 Datasheet — разд. 1.2.3, табл. 3 — функции GPIO банка 0: F0 HSTX на GPIO12–19, F1 SPI, F2 UART, F3 I²C, F4 ШИМ, F5 SIO, F6–F8 PIO0–2, F9 QMI CS1n, трассировка, тактовые входы и выходы, F10 управление USB, F11 TX и RX UART на выводах CTS и RTS; АЦП на GPIO26–29 в корпусе QFN-60 (RP2350A); эррата RP2350-E9 у степпинга A2
- Raspberry Pi. pico-sdk 2.1.1: boards/pico2.h, rp2350 hardware/regs/io_bank0.h — PICO_RP2350A; UART0 — GP0 и GP1, I²C0 — GP4 и GP5, SPI0 — GP16–GP19, светодиод — GP25, флеш 4 МБ; значения FUNCSEL в io_bank0.h — сверка табл. 3; лицензия BSD-3-Clause
Нашли ошибку?
Смотрите также
- ПлатыArduino, ESP32-DevKitC, Raspberry Pi Pico: распиновка и питание
- Raspberry Pi Pico40 контактов, функции GPIO, питание, АЦП, BOOTSEL и SWD
- Raspberry Pi Pico W40 контактов, Wi-Fi и Bluetooth, занятые GPIO, светодиод, SWD, антенна
- RP2040 и RP2350RP2040 и RP2350: ядра, память, GPIO, PIO, АЦП, 5 В на выводах, эрраты
- PIO RP2040Автоматы PIO: устройство, 9 команд, задержка, side-set, FIFO, частота, пример
- Делитель PIO RP2040INT и FRAC по частоте и тактам на бит, регистр CLKDIV, ошибка, код pico-sdk
- JTAG и SWDARM JTAG 20, Cortex Debug 10, STDC14, ST-LINK