Текст: smart_alex

В последнее время я вижу много упоминаний контроллера Teensy и самых интересных и мощных проектов, созданных с его помощью. Некоторое время я не обращал на это внимания, но потом эта тема меня заинтересовала, и чем больше я ее исследовал, тем большее впечатление я получал.
Оказывается, последняя версия Teensy 4 основана на Cortex M7, работающем на частоте 600 МГц, и его ядро очень продвинутое, что позволяет выполнять две инструкции за такт, использовать предсказание ветвлений и аппаратную обработку 64-битных чисел с плавающей запятой, а также многое другое, включая большой объем оперативной памяти, флэш-памяти и памяти PSRAM на борту и т д
В целом этот контроллер очень продвинут и позволяет создавать проекты в области обработки звука, управления светодиодными матрицами, вывода видео на светодиодные экраны, создания музыкальных синтезаторов и т д.
В итоге я пришел к выводу, что стоит разобраться в этом вопросе получше, и заказал на Ali комплект Teensy 4.1 с аудио и Ethernet-расширением, а затем получил огромное удовольствие, экспериментируя с этим оборудованием. Ну а теперь я предоставлю отчет о проведенных экспериментах, а также поделюсь своими впечатлениями о Teensy 4.1.
❯ Teensy 4
Серия Teensy 4 включает две модели: Teensy 4.0 (облегченная версия) и Teensy 4.1 (полная версия). «Уменьшение» Teensy 4.0 касается не функциональности (ядро то же самое), а форм-фактора — новая модель имеет меньшую печатную плату с меньшим количеством контактов, поэтому для устройства чтения карт и чипа Ethernet просто нет физического места.

Кроме того, экосистема Teensy включает в себя такие дополнения, как звуковая плата, внешний разъем Ethernet, разъем USB-хоста и многое другое. Это сделано для того, чтобы пользователи могли выбрать необходимую им конфигурацию для своего проекта, не переплачивая за ненужные детали.
❯ Ядро Cortex M7
Teensy 4 основан на микроконтроллере i.MX RT1060 от NXP Semiconductors, который использует ядро Cortex M7. Ядро работает на нормальной частоте 600 МГц и потребляет около 100 мА. Частоту ядра можно либо понизить для экономии энергии, либо, наоборот, разогнать до 1 ГГц, если этого требует поставленная задача.
Как я уже упоминал выше, ядру разрешено выполнять две инструкции за такт, используя предсказание ветвлений и аппаратную обработку 64-битных чисел с плавающей запятой. Кроме того, ядро поддерживает инструкции DSP для ускоренной обработки сигналов и имеет генератор случайных чисел, криптографические ускорители и многие другие функции.
Результаты теста CoreMark дают хорошее представление о том, с чем мы имеем дело.

Teensy 4 в 330 раз быстрее ATmega2560 (более мощного), в 24 раза быстрее Arduino Due и может выполнять вычисления в 6,5 раз быстрее ESP32. Кроме того, необходимо помнить, что в отличие от ESP32, Teensy 4 поставляется с полным набором контактов и многими другими функциями.
❯ Память
Teensy 4.1 в стандартной комплектации оснащен 8 МБ флэш-памяти и 1 МБ оперативной памяти. Это очень много для контроллера, и я с трудом представляю себе задачу, которая потребовала бы столько памяти. Единственное, что приходит на ум, — это хранение данных и вычисления в аудио-, видео-, научных приложениях и приложениях управления светодиодными матрицами.
Но даже этого оказалось недостаточно создателю Teensy 4 (Полу Стоффрегену), который предусмотрел возможность добавления на плату еще 8/16 МБ PSRAM и/или Flash-памяти.
В целом Teensy 4.1 может иметь следующие конфигурации памяти:
8 МБ Flash + 1 МБ RAM + 8 МБ PSRAM + еще 8 МБ Flash
или
8 МБ флэш-памяти + 1 МБ ОЗУ + 16 МБ PSRAM
Внутренняя память объемом 1 МБ разделена на два пула по 512 КБ, первый пул (RAM1) имеет быструю 64/32-битную шину связи с процессором, второй пул (RAM2) оптимизирован для доступа к прямому доступу (32 канала).

Также имеются два кэша по 32 КБ для ускорения работы с памятью, отличной от TCM.
Имеется 4284 байта памяти в виде EEPROM, эмулируемой во Flash.
❯ GPIO
Teensy 4.1 имеет 55 GPIO, 35 из которых поддерживают функции ШИМ и 18 аналоговых входов (10/12 бит).
Все GPIO поддерживают прерывания и могут быть сконфигурированы как вход или выход с помощью подтягивающих резисторов INPUT_PULLUP, INPUT_PULLDOWN, OUTPUT_OPENDRAIN и т д. GPIO на Teensy 4.1 также поддерживает расширенные функции, такие как настраиваемая нагрузка и регулируемая полоса пропускания.
Лучший способ понять количество и назначение GPIO в Teensy 4.1 — это рассмотреть распиновку платы контроллера.

Кроме того, Teensy 4.1 содержит огромное количество функций и возможностей, и в мою задачу не входит перечислять их все здесь — всю эту информацию можно найти в официальной документации производителя.
Здесь я приведу лишь краткий список основных возможностей этого контроллера:
-
ARM Cortex M7 600 МГц
-
Модуль с плавающей точкой, 32- и 64-битный
-
32 канала прямого доступа к памяти
-
7936 КБ Flash, 1024 КБ RAM (2x512 КБ), 4 КБ EEPROM (эмуляция)
-
Дополнительное расширение памяти QSPI, два чипа PSRAM/Flash
-
55 GPIO (35 ШИМ)
-
18 аналоговых входов
-
8 последовательных, 3 SPI, 3 I2C порта
-
2 цифровых аудиопорта I2S/TDM и S/PDIF
-
3 интерфейса CAN (один с CAN FD)
-
Встроенный порт SDIO (4-бит) для SD-карты
-
10/100 Ethernet (DP83825 PHY)
-
USB-устройство 480 Мбит/с и USB-хост 480 Мбит/с
-
Ускорение криптографических функций и генераторов случайных чисел
-
Часы реального времени (RTC)
-
Конвейер обработки графики
-
Управление питанием (низкое энергопотребление и включение/выключение питания)
-
Другие особенности
❯ Внешний вид
Упаковка Teensy 4.1 очень простая. На самом деле должна быть и инструкция с распиновкой, а протокол упаковки должен быть другим. Судя по всему, это не оригинальный контроллер, а китайская копия (и что интересно, она дороже оригинала).

Весь комплект выглядит так: контроллер Teensy 4.1, звуковая плата, разъем Ethernet с кабелем и кабель с USB-входом.

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

Если посмотреть на распиновку выше, то станет ясно, что плата Teensy 4.1 представляет собой расширенную и совместимую по выводам копию Teensy 4.0. В каком-то смысле это даже хорошо — такая совместимость позволяет использовать аксессуары (например, звуковую плату) с обоими типами контроллеров.

Припаять контакты тоже не так-то просто: нельзя просто так взять и припаять Teensy 4.1 (смайлик). Пайка многочисленных разъемов на плате будет весьма затруднительной, если сначала отпаять контакты сбоку. Поэтому сначала необходимо припаять контакты разъема, а затем боковые контакты.
Также здесь есть еще один нюанс - если вы запаяете все боковые выводы сразу, то в дальнейшем, если они вам понадобятся, у вас возникнут проблемы с пайкой дополнительных микросхем памяти.

Не могу сказать, что мне действительно нужно добавлять дополнительную память в Teensy, но я не хочу лишать себя возможности припаять дополнительные чипы в будущем. Поэтому я просто оставил несколько боковых контактов нераспаянными. В будущем их всегда можно будет припаять, и если понадобится дополнительная память, добавить ее не составит труда.
❯ Audio плата
Я не совсем понимаю, какими принципами руководствовались разработчики при создании этой платы. Как ни посмотри, она кажется немного неловкой. Ряд штифтов для крепления Teensy находится прямо посередине платы, в то время как остальные компоненты приклеены по бокам без какой-либо системы.

При объединении в обычный сэндвич получается странная конструкция, которая ни на что не похожа и выглядит очень нелепо. Это особенно актуально в сочетании с длиной Teensy 4.1.
Я долго думал, как все это правильно и максимально практично спаять, и в итоге остановился на проходном разъеме с длинными штырьками, чтобы можно было подключить звуковую плату к макетной плате (или другой плате) и одновременно подключить к ней Teensy 4.1.

Но у меня нет никаких претензий к реальной функциональности звуковой платы. Он основан на чипе SGTL5000 и оснащен двумя портами I2S/TDM и одним портом S/PDIF, входом для микрофона, кардридером для карт памяти microSD и аудиовыходом.
Люди творят чудеса с Teensy на этой плате и этом комплекте (подробнее о программировании и обработке звука ниже).
❯ Ethernet
Вы, возможно, заметили, что Teensy (в отличие от ESP32) не поддерживает сетевой интерфейс «из коробки». Это, конечно, самая важная часть любой микроконтроллерной системы: одиночный контроллер — это одно, а контроллер с сетевым управлением — это совсем другое.
Плата Teensy 4.1 имеет физический чип Ethernet DP83825, для подключения к локальной сети вам также потребуется добавить разъем RJ45 со специальным кабелем.

Разработчики в очередной раз столкнулись с проблемой отсутствия свободного места на микроплате разъема, а также отсутствия отверстий и каких-либо крепежных элементов. Так как же следует защитить всю конструкцию? Особенно если учесть, что при переключении перемычки он подвергается значительной механической нагрузке.

❯ программное обеспечение
Теперь нам нужно кратко представить программное обеспечение всей этой экосистемы. Каким бы хорошим ни был контроллер, без программного обеспечения это всего лишь печатная плата с деталями на ней. Но программное обеспечение для Teensy отличное поддерживать:
-
Arduino IDE + Teensyduino
-
Визуализация микросервисов (Microsoft Visual Studio)
-
Платформа ввода-вывода
-
CircuitPython
-
Командная строка с Makefile
Другими словами, независимо от вашей квалификации, независимо от того, каким программистом вы себя считаете, у вас не возникнет проблем с реализацией ваших идей на Teensy в плане программного обеспечения.
Главное, чтобы сама идея существовала (улыбается).
❯ Arduino
Далее я кратко расскажу об установке этой системы и принципах ее использования в среде Arduino. Здесь также есть несколько нестандартных и неочевидных моментов.
Во-первых, на вашем компьютере должна быть установлена среда разработки Arduino IDE. Более того, не имеет значения, какую версию вы устанавливаете — интеграция как с обычной, так и с «портативной» версиями Arduino поддерживается одинаково хорошо.
Обратите внимание: Где найти аккумулятор с увеличенной емкостью для телефона Самсунг.
В моем случае я использовал портативную версию Arduino 1.8.5.Чтобы загрузить Teensyduino с этой страницы и установить его в Arduino IDE, потребуется всего несколько щелчков мыши.

После этого привычная среда Arduino будет поддерживать все семейство контроллеров Teensy с совместимыми библиотеками и примерами использования новых контроллеров. Все прошло очень гладко, без каких-либо проблем. Все старые настройки остаются без изменений.
Хочу выделить очень приятную особенность поддержки ПО Teensy. Удивительно, но все работало гладко, без каких-либо сбоев и проблем. Это совершенно необычно для Arduino — я привык к постоянным проблемам, но с Teensy такого не происходит — все работает как часы.
В базовом пакете Teensyduino я насчитал 92 (!) совместимых библиотек. Более того, все библиотеки, которые я пробовал, также работали отлично — никаких сбоев, никаких ошибок компиляции, вообще ничего подобного — все работало именно так, как и должно (что, как я уже отметил, даже необычно).
❯ Компиляция и загрузка
Поскольку в Teensy 4 в дополнение к основному M7 используется вспомогательный микроконтроллер NXP MKL02Z32 (M0), с помощью которого программа загружается в память основного контроллера, то и процедура загрузки скетча несколько отличается от стандартной.
После установки Teensyduino, во время первой компиляции вам нужно будет нажать кнопку на контроллере.

После этого ваша плата Teensy будет распознана, и вы сможете использовать среду Arduino IDE как обычно. Система координирует свои действия с контроллером для выполнения всех операций, которые являются независимыми и прозрачными для пользователя.
❯ Audio
Часть Teensy 4.1 «заточена» на обработку аудиопотока и генерацию звука. Это сама по себе большая тема, и я отмечу здесь лишь основные моменты.

Teensy используют для создания синтезаторов и других звуковых устройств. Прелесть всей этой системы в том, что готовый синтезатор может стоить тысячи долларов, в то время как точно такой же синтезатор на Teensy можно купить всего за пару сотен долларов. В Интернете существует множество проектов по этой теме, в том числе и открытых.
Среда Teensyduino имеет специальные функции для программирования звука, которые можно использовать как любую другую функцию в среде Arduino. Кроме того, имеется специальный визуальный редактор.

Он позволяет вам создать необходимую вам обработку аудиосигнала, просто подключив входы и выходы стандартных блоков. После нажатия кнопки «Экспорт» визуальный дизайн будет преобразован в обычный код Arduino.
❯ Тестирование
Это все здорово, но мне хотелось протестировать Teensy 4 на чем-то более сложном, чем простые примеры из библиотеки. В качестве более серьезного теста мы попытаемся перенести систему AMS на новую платформу Teensy 4.1 (Cortex M7).
Это более серьезный тест, включающий работу вычислительного ядра микроконтроллера, его взаимодействие с физическим чипом Ethernet DP83825, работу реальной сети, а также одновременное взаимодействие с картой памяти microSD и другими системными ресурсами. И этот комплект может работать правильно только в том случае, если все задействованное оборудование работает правильно, а все управляющее программное обеспечение адекватно взаимодействует с этим оборудованием.
Примечания. Это тестирование проводилось на внутренней тестовой сборке AMS, ориентированной на Teensy 4.1. В настоящее время выпуск этой версии не планируется, но она может быть выпущена позже с соответствующими изменениями.
Лично я был приятно удивлен тем, что Teensy и сетевой чип работали одинаково хорошо, да и работа самого контроллера в целом была отличной — сетевое соединение тоже было в порядке. Никаких сбоев и проблем.

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

Еще один небольшой комментарий, вероятно, просто из любопытства. Ниже представлено визуальное сравнение объемов оперативной памяти Arduino Mega и Teensy 4.1. Здесь у нас в 125 раз больше оперативной памяти (улыбается).

Как говорится, почувствуйте разницу. Здесь вы можете создать свой собственный мини-Linux, если у вас есть соответствующая квалификация и вы не хотите себе ни в чем отказывать.
❯ Примеры проектов
На Teensy 4 реализовано множество проектов — роботы, квадрокоптеры, синтезаторы, системы светодиодного освещения, вывод видео на светодиодные матрицы и другие типы дисплеев, анализаторы и визуализаторы сигналов и многое другое.
В качестве наглядного примера одного из таких (удивительных) проектов вы можете посмотреть это видео о работе светодиодного куба 16x16x16 на светодиодах WS2812 с индивидуальной адресацией. Вся эта феерия из 4096 светодиодов управляется контроллером Teensy 4.
Помимо Teensy, различные компании и отдельные любители выпускают «платы» для различных областей применения — от одинаковых плат синтезаторов до целых комплексов, разработанных на Teensy.

❯ О чём не удалось рассказать
О многом. Очень, очень многом. Teensy 4.1 — очень обширная тема, и охватить все ее аспекты в одной статье невозможно. Далее следует описание криптографических возможностей Teensy, работы в качестве периферийного устройства или USB-хоста, работы часов реального времени (RTC), управления питанием и режимов работы контроллера, работы с использованием каналов доступа к памяти DMA, работы с использованием таймеров и многого другого.
❯ Проблемы
я не обнаружил никаких проблем, но единственное, что мне не понравилось, — это долгое время компиляции проекта. Ни на одной другой платформе компиляция кода не занимает столько времени. На i5 работать не очень комфортно, рекомендуется использовать более мощное железо.
Единственное интересное, что я заметил, это то, что на плате управления нет кнопки «сброс». Как автору столь грандиозного замысла пришла в голову эта идея, совершенно непонятно. В руководстве рекомендуется перезапустить контроллер программным способом. Я даже не знаю, что тут сказать.
❯ Заключение
Прекрасная платформа с великолепными функциями и качественной поддержкой программного обеспечения. За весь период тестирования у меня не возникло никаких сбоев — все работало как часы.
Ну а для гиков это отличная игрушка, платформа для обучения и реализации самых смелых творческих проектов.
Я также храню все свои проекты на облачном провайдере — Timeweb Cloud. Вот почему я беззастенчиво рекомендую то, чем пользуюсь сам - пожалуйста :)
Если вы хотите стать писателем (или уже являетесь им) и у вас есть интересный контент, которым вы хотели бы поделиться в нашем блоге, пожалуйста, напишите об этом здесь.
[My] IT Electronic Time Network Technology Длинная статья ArduinoDIY Умный дом Видео YouTube 112Больше интересных статей здесь: Гаджеты.
Источник статьи: Teensy 4: Arduino на скорости 600 МГц (почувствуй себя властелином вселенной).