Raspberry Pi Pico: распиновка и устройство платы
Плата Raspberry Pi Pico по даташиту и схеме Raspberry Pi: где какой из 40 контактов, какие функции RP2040 доступны на каждом GPIO, как устроено питание от USB и от батареи, чем ограничены входы и АЦП и как загрузить программу через BOOTSEL или SWD.
Обновлено Редакция GAW
Raspberry Pi Pico — плата на микроконтроллере RP2040 от Raspberry Pi: два ядра Cortex-M0+, 264 КБ ОЗУ, внешняя флеш-память 2 МБ и 26 выводов GPIO на краях платы размером 21 × 51 мм. Контакты выведены в два ряда с шагом 2,54 мм, как у микросхемы в корпусе DIP, поэтому плата вставляется в макетную плату, а полукруглые площадки по краю позволяют припаять её к другой плате как модуль. Страница описывает Pico ревизии Rev3 по даташиту платы, её схеме и даташиту RP2040.
| Параметр | Значение |
|---|---|
| Микроконтроллер | RP2040: 2 × Cortex-M0+ до 133 МГц (до 200 МГц при напряжении ядра 1,15 В) |
| Память | 264 КБ SRAM; флеш 2 МБ W25Q16JV по QSPI с исполнением на месте |
| GPIO на контактах | 26 с логикой 3,3 В: GP0–GP22 и GP26–GP28, из них 3 — входы АЦП |
| Интерфейсы RP2040 | 2 × UART, 2 × I²C, 2 × SPI, 16 каналов ШИМ, 2 блока PIO, USB 1.1 |
| АЦП | 12 бит, 500 тыс. выборок/с, 4 входа (3 на контактах, 1 измеряет VSYS) |
| Питание | VBUS 5 В ± 10 % от USB или VSYS 1,8–5,5 В |
| Тактирование | кварц 12 МГц |
| Разъёмы | micro-USB, 40 контактов с шагом 2,54 мм, 3 контакта SWD |
| Рабочая температура | −20…+85 °C с учётом самонагрева; окружающая — до 70 °C |
Распиновка
Плата нарисована сверху, разъёмом USB вверх. Контакт 1 — верхний левый у разъёма USB, номера идут вниз по левому ряду до 20, а затем снизу вверх по правому: 21 внизу справа, 40 вверху справа. Рядом с каждым контактом — подпись с платы и функции, которые RP2040 может на него вывести. Кнопки над рисунком подсвечивают выводы одного блока: например, все контакты, на которые можно назначить UART1.
- ввод-вывод
- питание и земля
- управление: 3V3_EN, RUN
- выбранная функция
Земляных контактов восемь: 3, 8, 13, 18, 23, 28, 38 и AGND (33) — земля аналоговой части, под входами АЦП проложен отдельный аналоговый слой земли, который заканчивается на этом контакте. Если АЦП не используется или точность не важна, AGND можно соединить с общей землёй. Внизу платы — три площадки отладочного интерфейса SWD.
Контакты и функции GPIO
У RP2040 каждый вывод GPIO подключается к одному из нескольких блоков: функцию выбирает поле FUNCSEL регистра управления вывода. Блоки SIO (программное управление выводом) и оба PIO доступны на любом GPIO, поэтому в таблице их нет; аппаратные интерфейсы распределены так, что каждый из них выведен на несколько групп контактов. В один момент вывод выполняет одну функцию, а один вход периферии лучше подключать только к одному выводу: если, например, UART0 RX назначить на два вывода, приёмник увидит логическое ИЛИ их уровней.
| Контакт | Подпись | SPI | I²C | UART | ШИМ | Ещё |
|---|---|---|---|---|---|---|
| 1 | GP0 | SPI0 RX | I²C0 SDA | UART0 TX | PWM0 A | в 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 | |
| 5 | GP3 | SPI0 TX | I²C1 SCL | UART0 RTS | PWM1 B | |
| 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 | |
| 10 | GP7 | SPI0 TX | I²C1 SCL | UART1 RTS | PWM3 B | |
| 11 | GP8 | SPI1 RX | I²C0 SDA | UART1 TX | PWM4 A | |
| 12 | GP9 | SPI1 CSn | I²C0 SCL | UART1 RX | PWM4 B | |
| 13 | GND | общий провод | ||||
| 14 | GP10 | SPI1 SCK | I²C1 SDA | UART1 CTS | PWM5 A | |
| 15 | GP11 | SPI1 TX | I²C1 SCL | UART1 RTS | PWM5 B | |
| 16 | GP12 | SPI1 RX | I²C0 SDA | UART0 TX | PWM6 A | |
| 17 | GP13 | SPI1 CSn | I²C0 SCL | UART0 RX | PWM6 B | |
| 18 | GND | общий провод | ||||
| 19 | GP14 | SPI1 SCK | I²C1 SDA | UART0 CTS | PWM7 A | |
| 20 | GP15 | SPI1 TX | I²C1 SCL | UART0 RTS | PWM7 B | |
| 21 | GP16 | SPI0 RX | I²C0 SDA | UART0 TX | PWM0 A | в pico-sdk по умолчанию SPI0 RX |
| 22 | GP17 | SPI0 CSn | I²C0 SCL | UART0 RX | PWM0 B | в pico-sdk по умолчанию SPI0 CSn |
| 23 | GND | общий провод | ||||
| 24 | GP18 | SPI0 SCK | I²C1 SDA | UART0 CTS | PWM1 A | в pico-sdk по умолчанию SPI0 SCK |
| 25 | GP19 | SPI0 TX | I²C1 SCL | UART0 RTS | PWM1 B | в 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 | тактовый GPIN1 |
| 30 | RUN | сброс RP2040 низким уровнем | ||||
| 31 | GP26 | SPI1 SCK | I²C1 SDA | UART1 CTS | PWM5 A | вход АЦП ADC0 |
| 32 | GP27 | SPI1 TX | I²C1 SCL | UART1 RTS | PWM5 B | вход АЦП ADC1 |
| 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 | ||||
ШИМ у RP2040 устроен блоками: восемь блоков по два канала A и B, и два соседних вывода принадлежат одному блоку. Поэтому GP0 и GP16 — один и тот же канал PWM0 A: на них будет одинаковый сигнал. Канал B можно использовать и как вход — для измерения частоты и скважности. Частоту и скважность для заданного делителя можно прикинуть в калькуляторе ШИМ.
В pico-sdk выводы интерфейсов по умолчанию заданы в файле описания платы: UART0 — GP0 и GP1, I²C0 — GP4 и GP5, SPI0 — GP16 (RX), GP17 (CSn), GP18 (SCK) и GP19 (TX). Их можно переназначить на любые другие выводы с той же функцией. Подтягивающие резисторы для шины I²C на плате не установлены — их ставят снаружи; номинал считает калькулятор подтяжки I²C.
GPIO, занятые на плате
Четыре вывода RP2040 не выведены на контакты, а работают на самой плате:
| GPIO | Назначение на плате |
|---|---|
| GPIO23 | режим импульсного стабилизатора RT6150 (вывод PS): 0 — экономичный PFM, 1 — PWM с меньшими пульсациями |
| GPIO24 | вход: высокий уровень, если на VBUS есть напряжение USB |
| GPIO25 | выход на светодиод на плате |
| GPIO29 | АЦП, канал 3: напряжение VSYS, делённое на 3 |
Кроме контактов, на нижней стороне есть шесть тестовых точек: TP1 — земля, TP2 и TP3 — линии USB D− и D+, TP4 — GPIO23 (вывод режима стабилизатора, использовать не нужно), TP5 — GPIO25 со светодиодом (напряжение на нём поднимается только до прямого напряжения светодиода, поэтому как вход-выход его применять не рекомендуется), TP6 — BOOTSEL. Через TP1–TP3 можно подключить USB, если плата впаяна как модуль, а замыкание TP6 на землю при включении переводит RP2040 в режим загрузки.
Питание
Питание платы построено вокруг импульсного стабилизатора RT6150 — повышающе-понижающего, поэтому он выдаёт 3,3 В при входном напряжении от 1,8 до 5,5 В (как устроены такие преобразователи — в статье об импульсных преобразователях).
- VBUS (40) — 5 В с разъёма micro-USB или 0 В, если USB не подключён. Через диод Шоттки D1 (MBR120VLSFT1G) VBUS питает VSYS, поэтому на VSYS при питании от USB — 5 В минус падение на диоде. GPIO24 следит за наличием VBUS.
- VSYS (39) — вход стабилизатора, 1,8–5,5 В. Сюда подключают батарею или внешний источник, если USB не используется. Через делитель на 3 VSYS подаётся на канал 3 АЦП (GPIO29), что позволяет грубо следить за напряжением батареи.
- 3V3(OUT) (36) — выход стабилизатора 3,3 В, от него питаются RP2040 и его выводы. Его можно нагружать внешними схемами, но даташит советует держать ток нагрузки меньше 300 мА: запас зависит от потребления RP2040 и напряжения VSYS.
- 3V3_EN (37) — вход разрешения стабилизатора, подтянут к VSYS резистором 100 кОм. Замыкание на землю выключает 3,3 В и вместе с ними RP2040.
- RUN (30) — вход сброса RP2040 с внутренней подтяжкой к 3,3 В около 50 кОм; кнопка между RUN и землёй работает как кнопка сброса.
Если USB — единственный источник, VSYS и VBUS можно соединить, чтобы убрать падение на диоде. Второй источник подключают к VSYS через свой диод Шоттки: диоды образуют схему «ИЛИ», и плата питается от того источника, напряжение которого выше. Так подойдут литий-ионный аккумулятор (3,0–4,2 В) или три элемента AA (около 3,0–4,8 В). Чтобы не терять напряжение на втором диоде, вместо него ставят P-канальный MOSFET, затвором подключённый к VBUS: при наличии USB транзистор закрыт. Даташит приводит пример — DMG2305UX с пороговым напряжением не больше 0,9 В и сопротивлением 100 мОм при напряжении затвор-исток 2,5 В. Литий-ионный элемент должен иметь защиту от переразряда, перезаряда и перегрузки по току.
В режиме USB-хоста Pico нужно питать подачей 5 В на VBUS: подключённому устройству питание идёт с этого контакта.
GPIO23 управляет выводом PS стабилизатора. При низком уровне (так по умолчанию) на малой нагрузке стабилизатор работает в экономичном режиме PFM, включая ключи лишь время от времени; высокий уровень включает постоянный режим PWM — пульсации на выходе заметно меньше, но КПД на малой нагрузке хуже. При большой нагрузке стабилизатор работает в PWM независимо от PS.
Типичный ток потребления, измеренный Raspberry Pi на трёх платах при 5 В на VBUS и 25 °C (средние значения): в режиме BOOTSEL без обмена по USB — 8,7 мА, с обменом — 9,9 мА; в режиме SLEEP — 1,3 мА; в режиме DORMANT — 0,8 мА. Это не гарантированные максимумы, а ориентиры; ток с работающими ядрами и периферией зависит от программы. Время работы от батареи по среднему току оценивает калькулятор времени работы от батареи.
Ограничения входов и выходов
Выводы GPIO на Pico питаются от 3,3 В, другого напряжения логики плата не допускает. Уровни по даташиту RP2040 (табл. 625) при питании выводов 3,3 В:
| Параметр | Значение |
|---|---|
| Входное напряжение высокого уровня | не меньше 2 В |
| Входное напряжение низкого уровня | не больше 0,8 В |
| Выходное напряжение высокого уровня | не меньше 2,62 В при выбранном токе 2, 4, 8 или 12 мА |
| Выходное напряжение низкого уровня | не больше 0,5 В при том же токе |
| Ток выхода по умолчанию | 4 мА (настраивается: 2, 4, 8 или 12 мА) |
| Подтягивающие резисторы | 50–80 кОм к питанию или к земле |
| Суммарный ток всех выводов GPIO и QSPI | не больше 50 мА от питания и 50 мА в землю |
| Предельное напряжение на выводе | от −0,5 В до напряжения питания выводов + 0,5 В |
Из последней строки следует, что 5-вольтовые сигналы напрямую подавать нельзя: нужен делитель, последовательный резистор или преобразователь уровней — варианты разобраны на странице согласования уровней. Входы GP26–GP28 (и внутренний GPIO29) имеют диод на шину 3,3 В: напряжение на них не должно превышать 3,3 В больше чем примерно на 300 мВ, а при выключенном RP2040 поданное на них напряжение через диод питает шину 3,3 В. Цифровые GP0–GP22 и выводы SWD такого ограничения не имеют: на них можно подавать напряжение и при выключенном питании RP2040 — пока оно ниже 3,63 В, ток в вывод очень мал.
Светодиод от вывода GPIO подключают через резистор: при токе вывода 4 мА по умолчанию и прямом напряжении светодиода 2 В резистор должен быть не меньше (3,3 − 2)/0,004 ≈ 330 Ом. Точнее номинал для своего светодиода подберёт калькулятор резистора для светодиода.
АЦП
АЦП RP2040 — 12-битный, последовательного приближения, до 500 тыс. выборок в секунду; эффективная разрядность по даташиту — 8,7 бита. Пять входов мультиплексора: четыре на выводах GPIO26–GPIO29 (на Pico на контакты выведены GP26–GP28 — ADC0–ADC2, а ADC3 измеряет VSYS/3) и встроенный датчик температуры. Цифровую часть вывода перед измерением отключают в регистре управления площадкой вывода.
Своего источника опорного напряжения у RP2040 нет: опорой служит питание АЦП. На Pico оно берётся с шины 3,3 В через фильтр — резисторы 200 Ом (R7) и 1 Ом (R9) и конденсатор 2,2 мкФ — и выведено на контакт ADC_VREF. Код АЦП переводится в напряжение так:
где N — код канала 0–2, N3 — код канала 3. У такой схемы три недостатка, которые даташит называет прямо: точность определяется стабилизатором 3,3 В, фильтр подавляет его пульсации не полностью, а ток потребления АЦП (около 150 мкА) создаёт на резисторе 200 Ом смещение около 30 мВ, которое меняется с температурой и во время измерений. Что с этим делать:
- перевести стабилизатор в режим PWM высоким уровнем на GPIO23 — пульсации на малой нагрузке заметно снижаются;
- соединить свободный канал АЦП с землёй и вычитать его показание как смещение;
- подключить к ADC_VREF внешний параллельный источник опорного напряжения на 3,0 В, например LM4040: диапазон измерения станет 0–3,0 В, а через резистор 200 Ом постоянно потечёт около (3,3 − 3,0)/200 ≈ 1,5 мА;
- снять R7 (резистор размера 0603, его легко выпаять) и питать АЦП от отдельного источника, например 2,5 В. Даташит оговаривает, что АЦП квалифицирован при 3,0 и 3,3 В, но должен работать примерно до 2 В.
Напряжение на входе АЦП не должно превышать напряжение питания выводов (3,3 В), даже если сам АЦП питается от другого напряжения. Более высокие напряжения делят делителем; как работает АЦП последовательного приближения и что значит эффективная разрядность — в статье об АЦП.
Прошивка и отладка
Программа хранится во внешней флеш-памяти 2 МБ, а RP2040 исполняет её прямо оттуда через кэш. Записать её можно двумя способами:
- Через USB в режиме BOOTSEL. Отключите питание, зажмите кнопку BOOTSEL и подключите USB. Плата определится как USB-накопитель; файл формата UF2, скопированный на него, запишется во флеш-память, и RP2040 перезапустится. Загрузчик находится в ПЗУ RP2040, поэтому повредить его нельзя.
- Через SWD. Три площадки внизу платы — SWCLK, GND и SWDIO — подключаются к отладчику с интерфейсом SWD. Через них можно сбросить RP2040, записать программу без нажатия кнопок и отлаживать её по шагам. Внутри RP2040 на SWDIO и SWCLK есть подтягивающие резисторы около 60 кОм. Разводка отладочных разъёмов на стороне отладчика — на странице JTAG и SWD.
USB у RP2040 встроенный: контроллер и физический уровень USB 1.1, на плате — только два последовательных резистора 27 Ом и разъём micro-USB. Этот же порт программа может использовать сама — как устройство (например, виртуальный COM-порт) или как хост. Программы пишут на C/C++ в pico-sdk или на MicroPython.
Частые вопросы
Где первый контакт у Raspberry Pi Pico?
Если положить плату разъёмом USB вверх и деталями к себе, контакт 1 (GP0) — верхний слева, у разъёма USB. Номера идут вниз по левому краю до 20 (GP15), затем снизу вверх по правому краю: 21 — GP16 внизу справа, 40 — VBUS вверху справа. Земляные контакты 3, 8, 13, 18, 23, 28, 33 и 38 имеют квадратные площадки.
Можно ли подавать 5 В на GPIO Raspberry Pi Pico?
Нет. Выводы RP2040 питаются от 3,3 В, а предельное напряжение на выводе по даташиту RP2040 — напряжение питания выводов плюс 0,5 В, то есть около 3,8 В. Сигналы 5-вольтовой логики подключают через делитель или преобразователь уровней. Входы GP26–GP28 дополнительно имеют диод на шину 3,3 В: напряжение на них не должно превышать 3,3 В больше чем примерно на 0,3 В.
Чем отличаются VBUS, VSYS и 3V3 на Pico?
VBUS — 5 В прямо с разъёма micro-USB. VSYS — вход импульсного стабилизатора RT6150 (1,8–5,5 В), на который VBUS приходит через диод Шоттки; сюда подключают батарею или внешний источник. 3V3(OUT) — выход стабилизатора 3,3 В, от которого питается RP2040; внешнюю нагрузку на нём даташит советует держать меньше 300 мА.
Как перевести Pico в режим загрузки UF2?
Отключите питание, зажмите кнопку BOOTSEL и подключите USB. Плата появится как USB-накопитель; файл .uf2, скопированный на него, запишется во флеш-память, после чего RP2040 перезапустится с новой программой. Загрузчик хранится в ПЗУ RP2040, поэтому стереть его нельзя.
На каких контактах UART, I²C и SPI у Pico?
Почти на любых: каждый GPIO может работать с одним из двух UART, I²C и SPI, и каждый интерфейс выведен на несколько групп контактов. Например, UART0 TX есть на GP0, GP12, GP16 и GP28, I²C0 SDA — на GP0, GP4, GP8, GP12, GP16, GP20 и GP28. В pico-sdk по умолчанию UART0 стоит на GP0 и GP1, I²C0 — на GP4 и GP5, SPI0 — на GP16–GP19.
Источники
- Raspberry Pi. Raspberry Pi Pico Datasheet (release 21, build d4e0f1799616, 3 июля 2026) — рис. 2–4 и 20 — распиновка, размеры, нумерация и расположение деталей; разд. 2.1 — контакты питания и тестовые точки; разд. 2.3 — условия работы; разд. 3.1 — потребление; разд. 4.1–4.8 — прошивка, GPIO, АЦП, питание, USB, отладка; лицензия CC BY-ND 4.0
- Raspberry Pi. Raspberry Pi Pico design files: RPI-PICO-R3-PUBLIC-SCHEMATIC — цепи контактов, отладочный разъём J2 (SWCLK, GND, SWDIO), R7 200 Ом в цепи ADC_VREF, кварц 12 МГц, флеш W25Q16JVUXIQ, RT6150B, MBR120VLSFT1G
- Raspberry Pi. RP2040 Datasheet (build 2025-02-20, 3184e62) — табл. 279 — функции GPIO; разд. 4.9 — АЦП; табл. 614, 622 и 625 — типы выводов, предельные режимы и уровни; лицензия CC BY-ND 4.0
- Raspberry Pi. pico-sdk 2.1.1: hardware/regs/io_bank0.h и boards/pico.h — коды выбора функций GPIO, по которым сверена таблица 279; выводы UART, I²C, SPI и светодиода по умолчанию; лицензия BSD-3-Clause
Нашли ошибку?
Смотрите также
- ПлатыArduino, ESP32-DevKitC, Raspberry Pi Pico: распиновка и питание
- ARM Cortex-MЯдра M0–M85: архитектуры, FPU, DSP, MPU, TrustZone, выбор
- JTAG и SWDARM JTAG 20, Cortex Debug 10, STDC14, ST-LINK
- Согласование уровнейПрямое соединение, делитель, диоды, MOSFET-транслятор, I²C на BSS138
- АЦПКвантование, формула кода, SAR, время выборки, погрешности, передискретизация
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек