Raspberry rp2040: начало и первые шаги. Что есть поесть за $4 / Хабр
|Содержание
Плата микроконтроллера Raspberry Pi Pico
Плата Raspberry Pi Pico — это недорогая платформа для разработки на микроконтроллере RP2040. Два ядра ARM Cortex-M0+ с тактовой частотой 133 МГц обеспечат необходимую производительность для ваших устройств, роботов и других изобретений, где важен баланс производительности с низким энергопотреблением.
Микроконтроллер Pico входит в аналогичный сегмент микроконтроллеров, что и ESP32, но обладает уникальными «фишками». Уникальная возможность Pico — подсистема программируемого ввода/вывода (Programmable I/O), с помощью которой реализуется произвольный аппаратный интерфейс: например, шину SD-карты или вывод VGA.
Оптимизированные вычисления с плавающей запятой на Raspberry Pi Pico помогают справиться с комплексными задачами и проектами, где не хватило бы мощности и памяти базовых Arduino.
Платформа Pi Pico выполнена на чипе собственной разработки RP2040 от компании Raspberry Pi Foundation. При разработке RP2040 уделялось особое внимание 3 главным параметрам — высокой производительности (в частности при работе с целочисленными вычислениями), функциональности I/O портов для возможности взаимодействия с любыми внешними устройствами, и сохранению низкой цены. На чипе RP2040 также расположились часы реального времени, датчик температуры и оперативная память на 264 КБ. В итоге получился невероятно мощный и компактный чип размером всего 7×7 мм в корпусе QFN-56.
Чип RP2040
Недостатком микроконтроллера и в то же время плюсом (снижает стоимость изделия) является отсутствие встроенной памяти для записи программ. Для хранения программного кода к RP2040 потребуется подключить внешнюю флэш-память до 16 МБ через шину QSPI.
Программный код выполняется непосредственно из внешней памяти через специальный интерфейс SPI, DSPI или QSPI. Небольшой кэш повышает производительность типичных приложений. Отладка доступна через интерфейс SWD. Внутренняя память SRAM может содержать код или данные. Она адресована как единая область размером 264 КБ, но физически разделена на 6 банков, для обеспечения одновременного параллельного доступа с разных мастеров. Мастера шины DMA доступны для разгрузки повторяющихся задач передачи данных с процессоров. Контроллер USB со встроенным физическим уровнем PHY может использоваться для подключения хоста FS/LS.
Функциональная схема
Физические расположение блоков
- Микроконтроллер: RP2040
- Количество ядер: 2× ARM Cortex-M0+ (32 бита)
- Тактовая частота: 133 МГц
- Оперативная память: 264 КБ SRAM, разделенной на шесть банков
- Flash-память: 2 МБ
- Дополнительная Flash-память: до16 Mб через шину QSPI
- Контакты ввода-вывода: 26
- Контакты с АЦП: 3
- Разрядность АЦП: 12 бит
- Контакты с ШИМ: 16
- Каналы DMA: 12
- Аппаратные интерфейсы: 2× UART, 2× I²C, 2× SPI
- Программируемый интерфейс PIO: до 8 подпрограмм одновременно, до 26 контактов одновременно
- Встроенные периферийные устройства: часы реального времени (RTC), датчик температуры
- Напряжение логических уровней: 3,3 В
- Входное напряжение питания: через USB 5 В, через пин VSYS: 1,8–5,5 В
- USB: USB 1. 1 контроллер PHY, с поддержкой режимов host и device
- Потребляемый ток: до 140 мА
- Размеры: 52,7×21×3,7 мм
По бокам платы расположены 40 контактов со стандартным шагом 2,54 мм. Чтобы использовать Pico с макетными платами, понадобится припаять к контактам штыревую вилку.
Для подключения периферии отведено 26 контактов ввода-вывода общего назначения (GPIO) с дополнительными возможностями.
- 3 контакта принимают аналоговый сигнал через 12-битный АЦП.
- 16 контактов позволяют вывести аналоговое значение в виде ШИМ-сигнала.
- 12 контактов дают периферии прямой доступ к памяти (DMA) без прямого участия CPU.
Элементы платы
Для подключения модулей предусмотрены аппаратные интерфейсы UART, SPI и I²C. Программируемый ввод-вывод (PIO) обеспечит взаимодействие Pico с произвольными аппаратными интерфейсами, написав соответствующие подпрограммы для коммуникации через любые из 26 пинов GPIO.
Raspberry Pi Pico. Вид сверху.
Raspberry Pi Pico. Вид снизу.
Raspberry Pi Pico недорогая двухслойная плата с чипом RP2040. На плате присутствует чип Flash памяти W25Q16JVUXIQ на 2Mб и стабилизатор напряжения, позволяющий питать Pico от источника питания с напряжением от 1.8 до 5.5В. Плата Raspberry Pi Pico питается через разъём micro-USB или контакт VSYS.
На плате есть кнопка, которой осуществляется вход в режим USB mass-storage boot (дополнительно кнопка может выполнять определённые пользователем функции) и светодиод.
Распиновка Raspberry Pi Pico. Вариант 1.
Распиновка Raspberry Pi Pico. Вариант 2.
Обратите внимание, что к RPi Pico подходят только модули с логическим напряжением 3,3 В. Периферия с логическим напряжением 5 В может повредить устройство!
Светодиодная индикация
Пользовательский светодиод на 25 контакте микроконтроллера.
На плате Pi Pico расположена кнопка BOOTSEL, которая служит для перевода платформы в режим загрузчика.
Для создания приложений используются языки программирования Си, C++ или MicroPython. Порт MicroPython для RP2040 подготовлен совместно с автором проекта и поддерживает все возможности чипа, включая собственный интерфейс подключения расширений PIO. Для разработки для чипа RP2040 с использованием MicroPython адаптирована интегрированная среда программирования Thonny. Возможностей чипа достаточно для выполнения приложений для решения задач машинного обучения, для разработки которых подготовлен порт фреймворка TensorFlow Lite. Поддерживается запуск на чипе FreeRTOS.
Учебник по MicroPython по Raspberry Pico
Так как в архитектуре Cortex-M0+ не предусмотрен «аппаратный» модуль для операций с плавающей точкой, разработчики предлагают использовать программные функции для операций с плавающей точкой от Марка Оуэна (их лицензия позволяет использование в любых продуктах на основе чипа RP2040 и они значительно быстрее аналогов gcc), автора популярной библиотеки Qfplib.
Продавец на Aliexpress — Simple Robot Store лот Official Raspberry Pi Pico Board RP2040 Dual-Core 264KB ARM Low-Power Microcomputers High-Performance Cortex-M0+ Processort цена $3.80. Доставка в РФ службой Hongkong Post и стоит $0.77.
- Raspberry Pi Pico — Raspberry Pi Foundation
- Плата микроконтроллера Raspberry Pi Pico — Arduino на стероидах — MYSKU.club
- Pico Raspberry Pi Pico — Сообщество Пользователей RaspberryPi
- Плата Raspberry Pi Pico — Амперка
- Raspberry Pi Pico: инструкция, программирование на MicroPython / C++ и документация
- Микроконтроллер Raspberry Pi Pico / RP2040 — Evocom.UA
- Raspberry Pi Pico SDK — GitHub
Плата WeAct RP2040 в форм-факторе Raspberry Pi Pico поставляется с 16 Мб флэш-памяти и портом USB-C для питания программирования
Если платы Raspberry Pi Pico с 2 Мб QSPI флэш-памяти недостаточно для вашего проекта, и вы не очень любите использовать микро USB-порты, то сейчас на рынке появилась плата “клон”: WeAct RP2040, которая поставляется с флэш-памятью до 16 Мб и портом USB Type-C для питания и программирования.
Еще одним улучшением является добавление кнопки сброса, которая может быть удобна для прошивки через UF2-загрузчик, а распиновка в основном осталась прежней. Цена не такая низкая, как у оригинальной Raspberry Pi Pico, поскольку плата продается по цене $5.99 с 2 Мб флэш-памяти, а вариант с 16 Мб флэш-памяти стоит $8.99.
Технические характеристики WeAct RP2040:
- MCU – микроконтроллер Raspberry Pi RP2040 с двумя ядрами Cortex-M0+ @ 133 МГц (с возможностью разгона до 250+ МГц) и 264 Кб SRAM
- Хранилище – от 2 Мб до 16 Мб QSPI флэш-памяти
- USB – 1x порт USB 1.1 Type-C для питания и программирования
- Расширение
- 2x 20-контактный разъем с шагом 2,54 мм c 28 GPIO, 3x 12-битный АЦП до 500 Кбит / с, 2x UART, 2x I2C, 2x SPI, 16x PWM, 2x программируемых высокоскоростных ввода-вывода (для SD-карты, VGA и так далее…)
- Напряжение ввода/вывода 3,3 В
- Отладка – 4-контактный разъем Arm Serial Wire Debug (SWD)
- Разное – кнопка BOOTSEL, кнопка сброса NRST, пользовательский светодиод (GP25), 1x Таймер, RTC
- Питание – 5 В через порт USB Type-C или от 2 до 5 В DC через VSYS контакты
- Размеры – 53 x 21. 5 мм (размер Pico это 51 x 21 мм)
Распиновка WeAct RP2040
Плата должна оставаться совместимой с SDK Raspberry Pi Pico MicroPython и C / C++, а также с прошивками, поддерживаемыми сообществом. Но есть и некоторые другие небольшие отличия, так как нет больше зубчатых отверстий, так что если у вас была конструкция основной платы, которая использовала их, то она не будет совместима с WeAct RP2040, и теперь разъем DEBUG включается в себя контакт 3,3 В, и расположение штифтов тоже другое. Хотя распиновка левого разъема (контакты с 1 по 20) точно такая же, в правом разъеме есть некоторые изменения.
Распиновка WeAct vs Pico
Контакт “RUN” (30 контакт) и выход 3.3 В (36 контакт) просто исчезли, а плюсом является то, что они освободили место для двух дополнительных GPIO (GP24 и GP29), но, очевидно, это может быть достигнуто за счет совместимости с прошивкой или базовыми платами в зависимости от того, используются ли контакты с 30 по 36.
Плата была выпущена в конце прошлого года, и некоторые пользователи уже поделились своим опытом на форумах Raspberry Pi, а некоторые утверждают, что версия на 2 Мб даже дешевле, чем Raspberry Pi Pico, если учесть НДС и доставку. Плату можно приобрести на Aliexpress от $2.43 до $5.62, но это без учета стоимости доставки.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.
Документация по Raspberry Pi
— RP2040
Добро пожаловать в RP2040
Добро пожаловать в RP2040, микроконтроллер, разработанный здесь, в Raspberry Pi.
Независимо от того, есть ли у вас Raspberry Pi Pico или другая плата микроконтроллера на базе RP2040, здесь есть все, что вам нужно для начала работы. Вы найдете поддержку для начала работы с C/C++ или MicroPython на Raspberry Pi Pico, а также ссылки на ресурсы для других плат, использующих RP2040. Также есть ссылки на техническую документацию платы микроконтроллера Raspberry Pi Pico и нашего чипа микроконтроллера RP2040.
Технические характеристики
RP2040 — дебютный микроконтроллер от Raspberry Pi. Это приносит наши фирменные ценности высокой производительности, низкой стоимости,
и простота использования пространства микроконтроллера.
С большой встроенной памятью, симметричным двухъядерным процессорным комплексом, детерминированной матрицей шин и богатым набором периферийных устройств
дополненный нашей уникальной подсистемой программируемого ввода-вывода (PIO), он предоставляет профессиональным пользователям непревзойденную мощность
и гибкость. С подробной документацией, полированным портом MicroPython и загрузчиком UF2 в ПЗУ, он имеет
самый низкий возможный барьер для входа для начинающих и любителей.
RP2040 — это устройство без сохранения состояния с поддержкой кэшированного выполнения на месте из внешней памяти QSPI. Этот дизайн
решение позволяет выбрать подходящую плотность энергонезависимого хранилища для вашего приложения и извлечь выгоду из
низкие цены на товарные детали Flash.
RP2040 производится по современному 40-нанометровому техпроцессу, что обеспечивает высокую производительность и низкую динамическую мощность
потребление и низкая утечка, с различными режимами низкого энергопотребления для поддержки увеличенной продолжительности работы от батареи
сила
Основные характеристики:
Dual ARM Cortex-M0+ @ 133 МГц
264 КБ встроенной памяти SRAM в шести независимых банках
Поддержка до 16 МБ внешней флэш-памяти через выделенную шину QSPI
контроллер прямого доступа к памяти
Полностью соединенная поперечина AHB
Периферийные устройства интерполятора и целочисленного делителя
Встроенный программируемый LDO для генерирования напряжения ядра
2 встроенных PLL для генерации тактовых импульсов USB и ядра
30 контактов GPIO, 4 из которых могут использоваться как аналоговые входы
Периферийные устройства
Почему чип называется RP2040?
Пост-фикс на RP2040 происходит от следующего:
Количество ядер процессора (2)
Ориентировочно какой тип процессора (M0+)
этаж(log2(ram/16k))
floor(log2(энергонезависимая / 16k)) или 0, если нет встроенной энергонезависимой памяти
Файлы дизайна
Внутренний датчик температуры
Внутренний датчик температуры в корпусе RP2040 представляет собой датчик с низким разрешением, который необходимо откалибровать пользователем, чтобы обеспечить любую степень точности.
Важнейшей частью точного определения измеренной температуры является знание напряжения VREF АЦП. Формула преобразования означает, что небольшие ошибки в напряжении VREF АЦП могут привести к довольно большим расхождениям в вычисляемой температуре. RP2040 не имеет внутреннего фиксированного источника опорного напряжения, который можно использовать для определения напряжения VREF, поэтому напряжение VREF необходимо измерять вручную — с оговоркой, что оно может измениться — или необходимо обеспечить внешний фиксированный источник опорного напряжения.
Примечание | Напряжение датчика RP2040 падает по мере повышения температуры. |
Дополнительные сведения о датчике внутренней температуры см. в главе 4, раздел 4.9.5 технического описания RP2040.
Документация
Документация для Raspberry Pi Pico и других плат на базе RP2040.
Устройство RP2040
Малиновый Пи Пико
Примечание | Хотя он официально не поддерживается, существует инструмент установки Pico Setup для Windows, который автоматизирует установку C/C++ SDK в Windows 10. |
Малина Пи Пико W
Разработка программного обеспечения
Документация Doxygen уровня API для Raspberry Pi Pico C/C++ SDK также доступна в виде микросайта.
Платы на базе RP2040
Разработанная Raspberry Pi как плата для разработки и как эталонный дизайн, серия Raspberry Pi Pico представляет собой семейство плат на базе RP2040. Семейство Pico в настоящее время состоит из Raspberry Pi Pico (крайний слева), Pico H (слева), Pico W (справа) и Pico WH (крайний справа).
Файлы дизайна для Raspberry Pi Pico и Pico W доступны в открытом доступе без ограничений.
Настоящим дается разрешение на использование, копирование, изменение и/или распространение этого дизайна для любых целей за плату или бесплатно.
ПРОЕКТ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», И АВТОР ОТКАЗЫВАЕТСЯ ОТ ВСЕХ ГАРАНТИЙ В ОТНОШЕНИИ ЭТОГО ПРОЕКТА, ВКЛЮЧАЯ ВСЕ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ СПЕЦИАЛЬНЫЙ, ПРЯМОЙ, КОСВЕННЫЙ ИЛИ КОСВЕННЫЙ УЩЕРБ ИЛИ ЛЮБОЙ УЩЕРБ, ВОЗНИКШИЙ В РЕЗУЛЬТАТЕ ПОТЕРИ ПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ, БУДЬ ТО В ДЕЙСТВИИ ДОГОВОРА, НЕБРЕЖНОСТИ ИЛИ ДРУГОМ СЛУЧАЙНОМ ДЕЙСТВИИ, ВОЗНИКШЕМОМ ИЗ ИЛИ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ ИЛИ ЭКСПЛУАТАЦИЕЙ ЭТОГО ПРОЕКТА.
Другие платы
Обсуждения других сторонних плат на базе RP2040 можно найти на форумах Raspberry Pi.
RP2040 — микроконтроллер от Raspberry Pi
Совершенно новый микроконтроллер и чип, полностью поддерживающий MicroPython и C/C++. Добро пожаловать в новый мир Raspberry Pi.
См. платы RP2040
Альтернатива Arduino
Вы можете использовать RP2040 для запуска менее сложных проектов, когда вам не нужны размер и мощность полноценного Raspberry Pi, но вы не хотите разрабатывать на платформе Arduino .
Тщательно документировано
RP2040 сопровождается невероятно подробной документацией как для MicroPython SDK, так и для C/C++ SDK. Документация была создана самим Raspberry Pi Foundation.
Чип микроконтроллера RP2040, разработанный Raspberry Pi
Процессор | Вспышка | SRAM | МГц | GPIO |
---|---|---|---|---|
Два ядра ARM Cortex-M0+ | 2M встроенный QSPI | 264k | 133 | 30 |
ШИМ | АЦП | UART | I 2 С | СПИ |
---|---|---|---|---|
16 каналов | 3 доступных × 12-бит | 2 | 2 автобуса | 2 автобуса |
Дополнительные возможности | |
---|---|
Поддержка хоста и устройства USB 1. 1 | Спящий и спящий режимы с низким энергопотреблением |
Перетаскивание программирования с использованием запоминающего устройства через USB | Часы реального времени и встроенный таймер |
Ускоренные библиотеки с плавающей запятой на кристалле |
Сделано Raspberry Pi
Raspberry Pi Pico
Raspberry Pi Pico — это недорогая высокопроизводительная плата микроконтроллера с гибкими цифровыми интерфейсами. Он оснащен RP2040, который знаменует собой первый микроконтроллер Raspberry Pi, разработанный внутри компании. Pico предоставляет минимальную (но гибкую) внешнюю схему для поддержки чипа RP2040.
Большинство контактов микроконтроллера RP2040 выведены на пользовательские контакты ввода-вывода на левом и правом краях платы. Четыре RP2040 IO используются для внутренних функций — управления светодиодом, управления питанием встроенного импульсного источника питания (SMPS) и определения системных напряжений.
Buy the Raspberry Pi Pico  See pinout
Other RP2040 Boards from Raspberry Pi:
RP2040 boards from SparkFun
Pro Micro — RP2040
Utilizing the Pro Micro footprint, this board also includes a WS2812B addressable LED, boot кнопка, кнопка сброса, разъем Qwiic, USB-C и зубчатые площадки.
Узнать большеПросмотреть руководство по подключению
Thing Plus — RP2040
В дополнение к размерам Thing Plus или *Feather* эта плата также имеет слот для SD-карты, 16 МБ (128 Мбит) флэш-памяти, разъем для одноячеечной батареи JST. , адресуемый RGB-светодиод, контакты JTAG PTH, четыре монтажных отверстия (4-40 винтов) и разъем Qwiic.
Узнать большеПросмотреть руководство по подключению
Впервые в MicroPython?
С появлением плат, использующих RP2040, возможно, самое время впервые взглянуть на мир микроконтроллеров, использующих MicroPython.
С помощью этой книги вы научитесь работать с Raspberry Pi Pico и создавать программы, которые используют входные и выходные контакты платы для выполнения таких действий, как управление светодиодами, запись на светодиоды основных символов и многое другое.
Получите книгу сегодня!
MicroPython, будучи менее ресурсоемким, чем Python, отлично подходит для небольших микроконтроллеров, таких как Pico. Вот пример «Hello World», чтобы вы начали.
Шаг 1: Перетащите MicroPython на Pico:
Чтобы запустить MicroPython на Raspberry Pi Pico, нужно выполнить несколько шагов. Один из способов — загрузить готовый двоичный файл релиза с помощью кнопки ниже (самый простой вариант).
Загрузить файл UF2
Или вы создаете MicroPython firmware.uf2 из исходного кода, если хотите настроить его низкоуровневые аспекты (более продвинутые). Этот процесс начинается с клонирования репозитория MicroPython Github и установки CMake и GNU Embedded Toolchain for Arm, чтобы помочь в создании программного обеспечения.
echo "Команды терминала для установки MicroPython"; echo "Получение MicroPython"; диск ~/; мкдир пико; компакт-диск пико; git clone -b пико [email protected]:raspberrypi/micropython.git; echo "Получить дополнительные инструменты"; sudo подходящее обновление; sudo apt install cmake gcc-arm-non-eabi; echo "Создание MicroPython"; компакт-диск с микропитоном; Обновление подмодуля git --init --recursive; сделать -C mpy-крест; cd порты/rp2; делать
Оттуда установка программного обеспечения MicroPython выполняется путем программирования перетаскиванием, при котором вы перетаскиваете файл firmware.uf2 на плату в качестве USB-накопителя. Вам нужно будет удерживать нажатой кнопку BOOTSEL, чтобы перевести ее в режим запоминающего устройства USB.
Шаг 2: Код через REPL или IDE:
После того, как прошивка будет загружена на плату, вы сможете подключиться к MicroPython REPL (Read Evaluate Print Loop), который является простым способом проверки кода. и запускать команды.
Другой вариант — загрузить Thonny Python IDE для кода, и в этом случае, как только компьютер и Pico будут подключены, вы можете выбрать работу именно с Raspberry Pi Pico, выбрав его в меню «Интерпретатор» в разделе «Параметры» (см. изображение ниже).
Thonny — это Python IDE для начинающих.
Используя пример кода от Raspberry Pi, вы можете реализовать код, который использует таймер для мигания встроенного светодиода.
##кредит Фонда Raspberry Pi из машинного импорта Пин, Таймер светодиод = контакт (25, контакт OUT) Тим = Таймер() тик по умолчанию (таймер): глобальный светодиод led. toggle() tim.init (частота = 2,5, режим = Timer.PERIODIC, обратный вызов = тик)
Поскольку мы работали над совершенно секретным Pico перед его выпуском, мы хотели общаться с ним более загадочно. Итак, на основе кода «Мигни светодиодом» мы создали скрипт MicroPython, который выводит «Hello World» азбукой Морзе.
Шаг 3: Мигните «Hello World» азбукой Морзе:
Убедитесь, что вы заменили код «мигания» выше, если вы доживете до шага 3 ниже.
#--------------------------------------------------------------- --------------------------------
# Импортировать необходимые библиотеки, подключиться к встроенному светодиоду, установить частоту мигания для светодиода
#------------------------------------------------- ------------------------------
время импорта
из импорта машины Pin
led=Pin(25,Pin.OUT)#светодиод на Pico имеет контакт 25
Скорость мигания = 0,25
#------------------------------------------------- ------------------------------
# Функции длительности сигналов азбуки Морзе и самого кода
#------------------------------------------------- ------------------------------
определение тире():
светодиод. значение(1)
time.sleep(4*BlinkRate)
светодиод.значение(0)
time.sleep(BlinkRate)
определенная точка():
светодиод.значение(1)
time.sleep(BlinkRate)
светодиод.значение (0)
time.sleep(BlinkRate)деф пауза():
time.sleep(BlinkRate)code = {'A':'.-','B':'-...','C':'-.-.','D':'-..','E':'. ','F':'..-.','G':'--.',
'H':'....','I':'..','J':'.---','K':'-.-','L':'.-.. ','М':'--','Н':'-.',
'O':'---','P':'.--.','Q':'--.-','R':'.-.','S':'... ','Т':'-','У':'..-',
'V':'...-','W':'.--','X':'-..-','Y':'-.--','Z':'-- ..',
'0':'-----','1':'.----','2':'..---','3':'...--','4 ':'....-',
'5':'.....','6':'-....','7':'--...','8':'---..','9':'----.',
'.':'.-.-.-',
',':'--..--',
'?':'..--..',
'/':'--..-.',
'@':'.--.-.',
' ':' / ',}
#------------------------------------------------- ------------------------------
# Функция, которая просто возвращает предложение азбуки Морзе из английского предложения в верхнем регистре
#------------------------------------------------- ------------------------------
def convertToMorseCode (предложение):
предложение = предложение.