Сообщество - Arduino & Pi
Добавить пост

Arduino & Pi

1 378 постов 20 571 подписчик

Популярные теги в сообществе:

Компьютер под Cyberpunk

Если кто-то действительно захочет повозиться со сборкой, скину скетч и объясню как сделать.

RP2040 - разбираем даташиты. Часть 1.3: Чип

Содержание:

Часть 1: Введение


RP2040 имеет два процессорных ядра M0 +, прямой доступ к памяти, внутреннюю память и периферийные блоки, подключенные через шину данных AHB / APB.

RP2040 - разбираем даташиты. Часть 1.3: Чип Спецификация, Datasheet, Raspberry pi, Перевод, Длиннопост

Код может выполняться непосредственно из внешней памяти через специальный интерфейс SPI, DSPI или QSPI. Небольшой кэш улучшает производительность для типичных приложений.

Отладка доступна через последовательный порт отладки (SWD).


Внутренняя статическая память с произвольным доступом (SRAM) может содержать код или данные. Она адресована как единая область размером 264 КБ, но физически разделена на 6 банков, чтобы обеспечить одновременный параллельный доступ для различных управляющих устройств.


Управляющие устройства шины прямого доступа к памяти (DMA) позволяют снизить нагрузку на процессоры в условиях выполнения задач, требующих частого обмена данными с памятью.


Выводы интерфейса ввода/вывода общего назначения (GPIO) могут управляться напрямую или при помощи множества специальных логических функций.


Специальное оборудование для фиксированных функций, таких как последовательный периферийный интерфейс (SPI), I2C, универсальный асинхронный приёмопередатчик (UART).


Гибко настраиваемые контроллеры программируемого ввода/вывода могут использоваться для обеспечения широкого спектра функций ввода/вывода.


Контроллер универсальной последовательной шины (USB) со встроенным PHY может использоваться для обеспечения работы в качестве высокоскоростоного / низкоскоростного хоста (Full-speed / Low-speed USB) или для подключения в качестве устройства. Режим работы определяется с помощью управляющего программного обеспечения, исполняемого в данный момент.


Четыре входа АЦП, которые используются совместно с выводами GPIO.


Две системы фазовой автоподстройки частоты для обеспечения фиксированной частоты 48 МГц для универсальной последовательной шины или аналогово-цифрового преобразователя и изменяемой системной частоты, которая может достигать 133 МГц.


Внутренний регулятор напряжения для подачи напряжения ядра, поэтому конечному продукту требуется только напряжение ввода-вывода.

Показать полностью 1

RP2040 - разбираем даташиты. Часть 1: Введение

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


RP2040 - дебютный микроконтроллер от Raspberry Pi. Он демонстрирует наши наши фирменные ценности: высокую производительность, низкую стоимость, и простоту использования в среде микроконтроллеров.


С большой встроенной памятью, симметричным двухъядерным процессором, детерминированной шиной данных и богатым набором периферийных устройств, дополненный нашей уникальной подсистемой программируемого ввода-вывода (PIO), он предоставляет профессиональным пользователям непревзойденную мощность и гибкость.


С подробной документацией, безупречной поддержкой MicroPython и загрузчиком UF2 в ПЗУ, он имеет минимально возможный порог вхождения как для начинающих пользователей, так и для  любителей.


RP2040 - это устройство без сохранения состояния с поддержкой технологии кэшированного выполнения на месте (XIP) из внешней памяти QSPI. Это архитектурное решение позволяет вам выбрать подходящую плотность энергонезависимой памяти для вашего проекта и извлечь выгоду из возможности использования дешёвой Flash-памяти.

RP2040 производится на современном 40-нм оборудовании, что обеспечивает высокую производительность и низкое тепловыделение, что в совокупности с различными режимами низкого энергопотребления позволяет добиться длительной работы от батареи или иного автономного источника питания.


Ключевые особенности:

- Два ядра ARM Cortex-M0+ @ 133МГц

- 264 КБ встроенной статической памяти с произвольным доступом в шести независимых банках

- Поддержка до 16 МБ внешней флэш-памяти через выделенную шину QSPI

- Контроллер с технологией прямого доступа к памяти

- Полносвязная коммутационная матрица AHB

- Периферийные устройства интерполяции и целочисленного деления

- Встроенный программируемый стабилизатор с низким падением напряжения для генерации напряжения ядра

- 2 встроенных петли фазовой подстройки частоты для генерации тактовой частоты USB и ядра

- 30 контактов интерфейса ввода/вывода общего назначения, 4 из которых могут использоваться как аналоговые входы

- Периферия:

- 2 универсальных асинхронных приёмопередатчика

- 2 контроллера последовательного периферийного интерфейса

- 2 контроллера I2C

- 16 каналов с широтно-импульсной модуляцией

- контроллер USB 1.1 с PHY, поддерживающий режимы как хоста, так и устройства

-  8 конечных автоматов подсистемы программируемого ввода-вывода


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


1.1. Почему чип был назван RP2040?


Цифры в названии обозначают следующее (Рис. 1):

1. Количество ядер процессора (2)

2. Тип используемого процессора (M0+)

3. floor(log2(ram / 16k)) (целая часть от логарифма по основанию 2 частного объёма оперативной памяти и 16 000)

4. floor(log2(nonvolatile / 16k)) (целая часть от логарифма по основанию 2 частного объёма энергонезависимой памяти и 16 000 или 0, если нет встроенной энергонезависимой памяти)

RP2040 - разбираем даташиты. Часть 1: Введение Спецификация, Datasheet, Перевод, Raspberry pi, Длиннопост

1.2. Основные сведения


RP2040 - это недорогой высокопроизводительный микроконтроллер с гибкими цифровыми интерфейсами. Ключевые особенности:


- Два ядра процессора Cortex M0 +, до 133 МГц

- 264 КБ встроенной статической памяти с произвольным доступом в 6 банках

- 30 линий интерфейса ввода/вывода общего назначения

- 6 выделенных линий ввода/вывода SPI Flash (с поддержкой выполнения на месте)

- Специальное оборудование для часто используемых периферийных устройств

- Программируемый ввод/вывод для расширения поддерживаемых периферийных устройств

- 4-канальный аналогово-цифровой преобразователь с встроенным датчиком температуры, 500 000 выборок в секунду с разрешением 12-бит

- USB 1.1 в режиме хоста или устройства


(Это была первая часть планируемой серии об этом чипе. В дальнейшем, мы разберём его архитектуру, строение, распиновку, варианты применения, внутренние функции и многое-многое другое. Оставайтесь на связи!)

Показать полностью 1

Автоматическая кормушка для домашних животных

Всем привет! У меня тут к сезону отпусков есть две версии автоматических кормушек для котанов и прочей домашней живности. Обе версии на базе Ардуино, сантеха и шнекового типа подачи сухого корма из бункера. Вторая версия прошла боевые испытания и кормила котов больше двух месяцев: не стал выключать после отпуска, потому что коты к ней привыкли.

Скоро планирую сделать третью версию с весами и управлением через Web!

Автоматическая кормушка для домашних животных Arduino, Электроника, Самоделки, Своими руками, Alexgyver, Видео, Длиннопост
Автоматическая кормушка для домашних животных Arduino, Электроника, Самоделки, Своими руками, Alexgyver, Видео, Длиннопост
Автоматическая кормушка для домашних животных Arduino, Электроника, Самоделки, Своими руками, Alexgyver, Видео, Длиннопост

Вот схемы обеих версий, а вся информация по сборке как обычно в видео, страницы проектов на гитхаб соответственно версия 1 и версия 2.

Автоматическая кормушка для домашних животных Arduino, Электроника, Самоделки, Своими руками, Alexgyver, Видео, Длиннопост
Автоматическая кормушка для домашних животных Arduino, Электроника, Самоделки, Своими руками, Alexgyver, Видео, Длиннопост
Показать полностью 5 1

Уроки Ардуино. Управление переменным током

В этом уроке разберём управление нагрузкой переменного тока при помощи Ардуино. Как релейное, так и плавное при помощи симистора и твердотельного реле при помощи различных алгоритмов и костылей =)

RP2040 - разбираем даташиты

RP2040 - разбираем даташиты Спецификация, Datasheet, Перевод, Raspberry pi

Эта статья - вводная в цикле переводов даташита на чип RP2040, которые будут появляться здесь. Надеюсь, это будет интересно и познавательно для Вас, и Вы сможете узнать для себя что-то новое.


Raspberry Pi Foundation всегда знает чем порадовать или удивить нас, а так же как подталкивать других производителей на интересные шаги и решения для хорошей конкуренции.

В четверг (рыбный день, кстати) 21-ого января 2021 года был анонсирован выпуск нового микроконтроллера RP2040.


Честно говоря, я прочитал эту новость и не планировал ничего делать по этому поводу. Но потом случайно заметил несколько особенностей этого микроконтроллера, что разбудило любопытство во мне. Очень привлекло наличие PIO блоков и множество PWM. Справедливости ради, PWM можно как-то решить, а вот с PIO есть смысл поиграться.


Приведу часть технических характеристик:

Два ядра 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 для загрузки и отладки

Поддержка спящих режимов и пониженной частоты для снижения потребления


PIO блоки дают возможность создавать свои интерфейсы. Например, можно запрограммировать интерфейс WS2812, добавить I2S, SDIO или VGA и т.п.


Ещё одна интересная штука: ядро Cortex-M0+ не содержит в себе блока вычислений с плавающей запятой. Обычно это эмулируется библиотеками GCC, но тут Raspberry Pi использует более быстрое оптимизированное решение от автора Qfplib, которое лицензировано для использования на RP2040.

Показать полностью

Ответ на пост «20 способов помигать светодиодом на Arduino»

Я считаю, что мигание светодиода с плавным увеличением и уменьшением яркости - обязательно нужно включить в уроки программирования.

Регулировать будем без использования библиотеке и модулей – максимально понятными командами.


Немного теории о ШИМ-регулировании.

Ответ на пост «20 способов помигать светодиодом на Arduino» Arduino, Электроника, Программирование, Alexgyver, Видеоблог, Pwm, Шим, Видео, Ответ на пост, Длиннопост

1. Если часто мигать светодиодом, то глаз человека не сможет заметить мерцания, картинка станет непрерывной, как кино с плёнки. У гомо сапиенс этот предел равен 24 картинки в секунду. Опытным путем я установил, что при существующей инерции кристалла светодиода и скорости Ардуины, если мигать светодиодом с паузой 23 мс, то уже мерцания не видно.

2. Изменять яркость светодиода можно зажигая его не НЕНАДОЛГО. Например, если быстро-быстро включать и выключать светодиод с равными паузами, то в него «вольётся» половина мощности (по сравнению с постоянно включенным), а за счет быстрой-быстрой смены состояний глаз не заметит мерцания, но увидит уменьшение яркости.

3. Изменяя длину паузы в выключенном состоянии и длину паузы во включенном можно менять и вкачиваемую мощность, например, 1 «тик» светодиод включен и 99 «тиков» выключено итого вкачается 1% мощности. Кстати, соотношение паузы «ОТКЛ» к паузе «ВКЛ» характеризуется скважностью импульсов.

4. Регулировать мощность (не только светодиодов) можно аналоговым способом (например, меняя уровень напряжения на выходе) или цифровым – быстро-быстро подавая в нагрузку либо полный ток, либо полное отсутствие тока. Второй метод намного экономичнее – так как на закрытом транзисторе не теряется мощность, а на открытом теряется минимально.

5. Наконец, простые методы изменения скважности (то есть, цифровой регулировки мощности) бывают со строгой частотой (это ШИМ) и с плавающей (это ЧМ). Широтно-импульсная модуляция отличается от частотной только тем, что в первой изменяется одновременно и длина паузы «ВКЛ» и длина паузы «ОТКЛ» причем так, чтобы их сумма составляла некую константу - тогда частоты периода будет всегда одинакова (нам это важно, чтобы глазу не было видно мерцания, а в электронике это удешевляет настройку фильтров); во второй же – меняется пауза только одного состояния.

Ответ на пост «20 способов помигать светодиодом на Arduino» Arduino, Электроника, Программирование, Alexgyver, Видеоблог, Pwm, Шим, Видео, Ответ на пост, Длиннопост

Теперь, описание скетча.

Первая строка «#define ledPin 13» - лишняя, номер пина можно указывать прямо в коде, но он там встречается 6 раз, что при переназначении неудобно (см. видеоролик).

В блоке «setup» мы просто задаём режим работы пина – как выход.

Наконец, в блоке «loop» сначала запускаем цикл, где от меняем паузу включения от 0 до 22 мс, одновременно рассчитываем паузу включения от 23 до 1 мс – суммарно каждый период составляет всегда 23 мс. На последнем шаге этого цикла светодиод мы зажигаем на 22 мс, а гасим на 1 мс – то есть максимальная ШИМ-яркость.


Для удобства группирования участков кода в этом «уроке» я позволил себе разместить по два оператора в строке.

Ответ на пост «20 способов помигать светодиодом на Arduino» Arduino, Электроника, Программирование, Alexgyver, Видеоблог, Pwm, Шим, Видео, Ответ на пост, Длиннопост

После завершения первого цикла светодиод погаснет на 1 мс и уже не включится, так как цикл закончился, поэтому зажигаем его принудительно и оставляем в таком состоянии на 200 мс (подобрано опытным путём – это приятная пауза на пике максимальной яркости).

Затем запускаем аналогичный цикл, но уже, наоборот, с уменьшением времени зажигания – это будет видно, как плавное выключение.

Показать полностью 3

20 способов помигать светодиодом на Arduino

Шуточный первоапрельский урок про различные способы мигания светодиодом на Arduino: от стандартных примеров до костылей с перезагрузкой и ассемблером!

Отличная работа, все прочитано!