RP2040 — разбор микроконтроллера Raspberry Pi

Если вы уже окунулись в мир встроенных систем или самодельной электроники, то наверняка слышали о RP2040. Но что именно выделяет этот крошечный чип от Raspberry Pi среди множества микроконтроллеров? Выпущенный в 2021 году как «мозг» культового Raspberry Pi Pico, RP2040 незаметно стал фаворитом среди любителей, преподавателей и даже профессиональных инженеров. В этом подробном обзоре мы рассмотрим, почему это двухъядерное чудо переопределяет возможности бюджетных микроконтроллеров и как вы можете начать работать с ним уже сегодня.

Что такое RP2040?

RP2040 — это микроконтроллер (MCU), представленный Raspberry Pi Foundation. Он служит основным компонентом для Raspberry Pi Pico и других плат разработчика. Сейчас он продается на официальном сайте по цене 10 долларов.

An image showing the RP2040 microchip for sale priced at 10.00
RP2040 Microchip - Available for Purchase at $10.00

Спецификация RP2040

Чип RP2040 поставляется в корпусе QFN-56 размером 7×7 мм со следующими техническими характеристиками:

  • Двухъядерный процессор Arm Cortex-M0+ с тактовой частотой 133 МГц
  • 264 КБ встроенной SRAM и 2 МБ встроенной флэш-памяти
  • Поддержка до 16 МБ внечиповой флэш-памяти через специальную шину QSPI
  • Оснащен контроллером DMA
  • Имеет 30 выводов GPIO, 4 из которых могут использоваться в качестве аналоговых входов
  • Имеет 2 UART, 2 SPI-контроллера и 2 I2C-контроллера
  • Предлагает 16 каналов PWM
  • Обеспечивает поддержку USB 1.1 хост и устройств
  • Включает 8 программируемых состояний ввода-вывода (PIO) Raspberry Pi для поддержки пользовательских периферийных устройств
  • Поддерживает режим загрузки с USB-накопителя с поддержкой UF2 для программирования методом перетаскивания
A dimension diagram of the RP2040 chip, showing various measurements in millimeters.
RP2040 Chip Dimension Diagram (in mm)

Объяснение наименования RP2040

Название RP2040 отражает его основные характеристики:

  • RP: означает Raspberry Pi, разработчика.
  • 2: обозначает двухъядерные процессоры Arm Cortex — M0+.
  • 0: обозначает тип ядра (в данном случае M0+).
  • 4: рассчитывается как floor(log2(SRAM/16k)), где 264 КБ SRAM → ~4.
  • 0: Получено из floor(log2(non - volatile/16k)), с 2 МБ флэш-памяти → ~7, но упрощено до 0 в наименовании.
An illustration explaining the naming convention of the RP2040 microchip with arrows and descriptions for each part of the name
RP2040 Microchip Naming Convention Explanation

Распиновка RP2040

RP2040 оснащен 30 контактами GPIO, которые могут использоваться для различных целей. Они могут считывать цифровые входы с таких устройств, как кнопки и датчики, а также обеспечивать цифровые выходы для управления светодиодами и реле.

Примечательно, что его подсистема программируемого ввода/вывода (PIO) имеет две машины состояний. Это позволяет создавать пользовательские протоколы связи, такие как простое управление светодиодными лентами WS2812 или создание пользовательского интерфейса VGA, что снижает нагрузку на ЦП.
A top view pinout diagram of the RP2040 microchip labeling various pins such as GPIO power and communication pins
RP2040 Microchip Pinout Diagram (Top View)

Блок-схема RP2040

Особенности чипа RP2040:

  • 2 UART: последовательные коммуникации для устройств/модулей/компьютеров.
  • 2 SPI: высокоскоростная передача данных по принципу «ведущий-ведомый» (например, флэш-карты/карты SD).
  • 2 I2C: многоустройственная шина для датчиков/EEPROM через линии SDA/SCL.
  • 16 PWM: управление скоростью двигателя/яркостью светодиодов посредством модуляции рабочего цикла.
Block diagram of the RP2040 microchips internal architecture showing components like processors peripherals and memory
RP2040 Microchip Internal Architecture Block Diagram

Поддержка разработки для RP2040

Официальная плата для разработки — Raspberry Pi Pico

Raspberry Pi Pico служит официальной платой разработчика для RP2040 и является отличным стартовым пунктом для разработчиков. Эта компактная плата размером всего 65 мм x 17 мм невероятно доступна по цене — всего 4 доллара, что делает ее доступной для широкого круга пользователей, от любителей с ограниченным бюджетом до студентов, изучающих мир микроконтроллеров.

Images of four Raspberry Pi Pico series development boards (Pi Pico, Pi Pico H, Pi Pico W, Pi Pico WH) based on the RP2040 microcontroller, showcasing their board layouts and component differences.
Линейка плат серии Raspberry Pi Pico на базе микроконтроллера RP2040

Одним из больших преимуществ Raspberry Pi Pico является простота использования. Он имеет простую форму с рядом контактов GPIO с обеих сторон, четко обозначенных для легкой идентификации. Такая компоновка упрощает подключение внешних компонентов, таких как датчики, исполнительные механизмы или дисплеи. Например, подключение датчика температуры, такого как DHT11, к Pico так же просто, как подключение контакта данных датчика к одному из контактов GPIO на Pico, а также подключение питания и заземления.

Pico также имеет встроенный USB-разъем, который используется как для питания платы, так и для ее программирования. При подключении к компьютеру он отображается как устройство хранения данных, что позволяет легко программировать с помощью «перетаскивания». Например, если вы написали скрипт MicroPython или скомпилировали двоичный файл C/C++, вы можете просто скопировать файл на виртуальный диск Pico, и он начнет выполнять программу.

В дополнение к основным аппаратным функциям, Raspberry Pi Pico поставляется с обширной официальной документацией и примерами кода. Официальный веб-сайт Raspberry Pi предоставляет подробные руководства по всему, от начала работы с платой до расширенного использования ее функций. Эти ресурсы чрезвычайно полезны для начинающих, которые только начинают изучать программирование микроконтроллеров, и для опытных разработчиков, которые хотят быстро освоить возможности RP2040.

Языки программирования и фреймворки

RP2040 поддерживает несколько языков программирования и фреймворков, предоставляя разработчикам гибкость в выборе наиболее подходящего варианта для своих проектов.

MicroPython: MicroPython — отличный выбор, особенно для начинающих или тех, кто хочет быстро создать прототип своих идей. Это компактная и эффективная реализация языка программирования Python 3, разработанная специально для микроконтроллеров. С MicroPython вы можете писать код на высокоуровневом, легко понятном синтаксисе. Например, управление светодиодом, подключенным к выводу GPIO на RP2040, можно реализовать всего несколькими строками кода:
				
					from machine import Pin
import time

led = Pin(25, Pin.OUT)
while True:
    led.value(1)
    time.sleep(1)
    led.value(0)
    time.sleep(1)

				
			
Эта простота позволяет разработчикам сосредоточиться на функциональности своего проекта, а не увязать в низкоуровневых деталях программирования. MicroPython также имеет богатый набор библиотек, которые можно использовать для взаимодействия с различными аппаратными компонентами, такими как датчики, коммуникационные модули и дисплеи.

C/C++: Для тех, кому требуется больший контроль над аппаратным обеспечением и более высокая производительность, C/C++ является отличным выбором. RP2040 имеет официальный SDK (набор средств разработки программного обеспечения) C/C++, который предоставляет полный набор библиотек и инструментов для разработки приложений. SDK включает драйверы для всех периферийных устройств RP2040, таких как интерфейсы GPIO, PIO, UART, SPI и I2C. С помощью C/C++ разработчики могут писать высокооптимизированный код, который позволяет в полной мере использовать преимущества двухъядерной архитектуры RP2040. Например, при реализации высокоскоростной системы сбора данных C/C++ можно использовать для написания кода, который эффективно считывает данные с нескольких датчиков, подключенных к контактам GPIO RP2040, и обрабатывает их в режиме реального времени.

Инструменты и IDE

Существует несколько инструментов и интегрированных сред разработки (IDE) для разработки приложений для RP2040.

Тонни

Thonny — популярный выбор, особенно для разработки на MicroPython. Он имеет удобный интерфейс, который легко освоить даже новичкам. Thonny предоставляет встроенную оболочку Python, которая позволяет разработчикам интерактивно тестировать свой код. Вы можете вводить команды Python и сразу же видеть результаты, что делает его отличным инструментом для отладки и изучения возможностей RP2040. Чтобы использовать Thonny с RP2040, сначала необходимо подключить Pico к компьютеру через USB. Затем в Thonny можно выбрать соответствующий интерпретатор Python (MicroPython для RP2040). После настройки вы можете писать, запускать и отлаживать свой код MicroPython прямо в Thonny.

VS Code

Visual Studio Code — это мощный кроссплатформенный редактор кода, который приобрел значительную популярность среди разработчиков. Он имеет широкий спектр доступных расширений, что делает его подходящим для разработки RP2040. Для разработки на C/C++ расширение «C/C++» от Microsoft предоставляет такие функции, как подсветка кода, IntelliSense (автозаполнение кода) и поддержка отладки. Для MicroPython расширение «MicroPython» предлагает аналогичные функции. Чтобы настроить VS Code для разработки RP2040, необходимо установить соответствующие расширения и настроить параметры сборки и отладки в соответствии с требованиями вашего проекта. Например, если вы работаете над проектом C/C++, вам необходимо настроить путь Pico SDK и настроить отладчик для работы с RP2040.

Чипы RP2040 и RP2350

RP2040 и RP2350 — это микроконтроллеры, разработанные компанией Raspberry Pi. RP2040 был одной из первых моделей, а RP2350 — более совершенная последующая модель с расширенными функциями. Ниже приведено сравнение этих двух моделей:

A side by side comparison image of RP2040 and RP2350 microchips labeled with their respective names
RP2040 and RP2350 Microchips Comparison
ХарактеристикаRP2040RP2350
Архитектура ядерДва ядра Arm Cortex-M0+Два ядра Arm Cortex-M33 или два ядра RISC-V Hazard3
Тактовая частота133MHz150MHz
Встроенная SRAM264KB520KB
Функции безопасностиБазовые функции безопасностиArm TrustZone, загрузка с проверкой подписи, SHA-256, аппаратный генератор случайных чисел и средства обнаружения сбоев
Периферийные интерфейсы2×UART, 2×SPI, 2×I2C, ADC, PWM, USB 1.1Расширенная периферия, дополнительные автоматы PIO, больше выводов GPIO и более высокая энергоэффективность
Варианты корпусаОдин вариант: QFN56 размером 7 × 7 ммQFN60 размером 7 × 7 мм (RP2350A), 30 GPIO, или QFN80 размером 10 × 10 мм (RP2350B), 48 GPIO. Отдельные варианты RP2354A и RP2354B включают 2 МБ флеш-памяти в корпусе.

RP2040 Board Selection and Debug Checklist

При изучении характеристик RP2040 или вопроса является ли Raspberry Pi микроконтроллеромважно отличать RP2040 от полноценного одноплатного компьютера Raspberry Pi. RP2040 — микроконтроллер, используемый на Raspberry Pi Pico; при проверке платы нужно учитывать внешнюю память QSPI, загрузку через USB, допустимые напряжения GPIO и доступ к отладке.

Проверка платы

  • RP2040 подходит для детерминированного управления, двухъядерной прошивки и гибкой периферии PIO, но не является прикладным процессором для запуска Linux.
  • До окончательного утверждения распиновки проверьте объём внешней флеш-памяти, запас стабилизатора 3,3 В и защиту цепи питания USB.
  • Предусмотрите удобный доступ к RUN, SWDIO, SWCLK, USB D+/D- и основным линиям питания, чтобы при запуске платы не приходилось припаивать временные провода.

Контрольный список

  • Если ADC, PWM, UART и PIO используют общие ресурсы, проверьте источник тактирования, способ восстановления загрузки и процедуру программирования флеш-памяти.
  • Зафиксируйте необходимость согласования уровней с периферией на 5 В: выражение микроконтроллер в Raspberry Pi может создавать неверное представление о допустимых напряжениях на входах и выходах.
  • Перед выпуском в производство сравните измеренный ток, обнаружение USB и работу GPIO под нагрузкой с опубликованными характеристиками RP2040.

Заключение

В заключение, RP2040 — это замечательный микроконтроллер, который оказал значительное влияние на мир встраиваемых систем и разработку электроники. Приглашаем вас поделиться своим мнением или опытом!

Поделиться:

Прокрутить вверх

Instant Quote

Мгновенный расчет