Введение:
Raspberry Pi Pico является платой с микроконтроллером RP2040.
Надо помнить, что это не компьютер, на котором запущена взрослая ОС типа Linux, а именно микроконтроллер и поэтому цели применения у Pico отличаются от той же Raspberry Pi Zero и других старших продуктов семейства Raspberry Pi.
Приведу часть технических характеристик:
- Два ядра Arm Cortex-M0+ @ 133 МГц
- 264 КБ памяти (284 КБ если отключить XIP кеширование и использовать память USB)
- 2 МБ флеш-память с XIP кешированием. В RP2040 нет встроенной флеш-памяти, поэтому чип распаян на плате. У RP2040 есть поддержка до 16 МБ внешней флеш-памяти
- DMA контроллер
- 4 x 12-разрядных аналоговых входа (на Pico доступно для пользователя 3 из них)
- 2 × UART
- 2 × SPI
- 2 × I2C
- 16 × PWM каналов
- Встроенный сенсор температуры
- Всего 30 GPIO пинов (3,3 вольта)
- MicroUSB B порт с USB 1.1 контроллером и поддержкой хоста
- 2 × PIO блока для своих собственных интерфейсов
- 2 x PLL (один для USB, второй для остального)
- Поддержка UF2 для загрузки бинарников
- Поддержка SWD для загрузки и отладки
- Поддержка спящих режимов и пониженной частоты для снижения потребления
RP2040 декодируется как:
RP: Raspberry Pi
2: два ядра
0: ядра M0+
4: минимум 256 КБ памяти
0: нет встроенной флеш-памяти
PIO блоки дают возможность создавать свои интерфейсы. Например, можно запрограммировать интерфейс WS2812, добавить I2S, SDIO или VGA и т.п.
Ещё одна интересная штука: ядро Cortex-M0+ не содержит в себе блока вычислений с плавающей запятой. Обычно это эмулируется библиотеками GCC, но тут Raspberry Pi использует более быстрое оптимизированное решение от автора Qfplib, которое лицензировано для использования на RP2040.
Плата:
Немного о самой плате Raspberry Pi Pico.
Плата имеет удобный размер 21мм x 51мм. Есть даже отверстия для монтирования, чем может похвастаться не каждая похожая плата.
Можно припаять пины для использования с макеткой или запаять весь модуль поверхностным монтажом на другую плату.
На Pico стоит понижающий преобразователь на 3,3 Вольта. И это не просто линейный преобразователь, которые часто встречаются на недорогих аналогичных платах, а buck-boost SMPS на Richtek RT6150B. Благодаря этому входное питание платы может быть в пределах 1,8 — 5,5 Вольт.
Флеш-память W25Q16JV, хоть, и стоит внешняя, но перепаивать её будет не такой уж и тривиальной задачей, так как чип в корпусе USON-8 (мне лично точно не под силу).
Есть кнопка BOOTSEL и светодиод на GPIO25. Так же выведен SWD для отладки.
Кстати, можно использовать вторую плату Pico как отладчик по SWD.
Распиновка:
На Raspberry Pi Pico выведено почти все входные-выходные пины (26 из 30). Официальная распиновка платы:
Некоторые пины задействованы для внутреннего применения:
GPIO23: выход для контроля энергосбережения SMPS. Можно регулировать пульсации за счёт изменения КПД преобразователя
GPIO24: вход для VBUS sense (1 если VBUS по MicroUSB подключен)
GPIO25: выход на светодиод, расположенный на плате
GPIO29: аналоговый вход для измерения VSYS/3
Сам USB порт дополнительно выведен на точки TP1, TP2 и TP3 внизу платы.