Teensyduino что это такое
Перейти к содержимому

Teensyduino что это такое

  • автор:

Teensy 3.5 & 3.6: две новых версии Arduino-совместимых плат

Teensy — это целое семейство небольших плат, которые совместимы с Arduino IDE. Старшие представители семейства (версии 3.х) созданы на основе высокопроизводительных ARM-процессоров с ядром Cortex-M4. Эти платы всегда производительны, оснащены большим количеством памяти и достаточным для практических любых задач набором интерфейсов.

Сейчас появились две новые модели семейства — Teensy 3.5 & 3.6. На их разработку у авторов ушло около года. Основные изменения — использование более мощных, чем в предыдущих версиях чипов. Эти платы можно использовать и для обучения, и для серьезных проектов, где требуется большой объем памяти, совместимость всего со всем и высокая общая производительность системы.

Характеристики Teensy 3.6

  • 180 MHz ARM Cortex-M4;
  • 1M Flash, 256K RAM, 4K EEPROM;
  • Microcontroller Chip MK66FX1M0VMD18 (PDF link);
  • USB High Speed (480 Mbit/sec) Port;
  • 2 CAN Bus Ports;
  • 32 General Purpose DMA Channels;
  • 11 Touch Sensing Inputs.

Характеристики Teensy 3.5

  • 120 MHz ARM Cortex-M4 with Floating Point Unit
  • 512K Flash, 192K RAM, 4K EEPROM
  • Microcontroller Chip MK64FX512VMD12 (PDF link)
  • 1 CAN Bus Port
  • 16 General Purpose DMA Channels
  • 5 Volt Tolerance On All Digital I/O Pins

Выше показаны характеристики, которые отличаются. Общее у плат следующее:

  • 62 I/O Pins (42 breadboard friendly)
  • 25 Analog Inputs to 2 ADCs with 13 bits resolution
  • 2 Analog Outputs (DACs) with 12 bit resolution
  • 20 PWM Outputs
  • USB Full Speed (12 Mbit/sec) Port
  • Ethernet mac, capable of full 100 Mbit/sec speed
  • Native (4 bit SDIO) micro SD card port
  • I2S Audio Port, 4 Channel Digital Audio Input & Output
  • 14 Hardware Timers
  • Cryptographic Acceleration Unit
  • Random Number Generator
  • CRC Computation Unit
  • 6 Serial Ports (2 with FIFO & Fast Baud Rates)
  • 3 SPI Ports (1 with FIFO)
  • 4 I2C Ports
  • Real Time Clock
Распиновка платы

У Teensy 3.6 есть второй USB порт, который способен передавать данные со скоростью 480 МБит/с. К нему можно подключать обычные периферийные устройства, вроде клавиатуры или флешки.

Для программирования платы используется Arduino IDE. Автор утверждает, что платы поддерживают практически все функции Arduino, а также используют широко распространенные библиотеки. По мнению разработчика, Teensy — отличный вариант начать работу с ARM. При знакомстве с платой пользователь начинает программировать в среде Arduino IDE, используя простейшие библиотеки. После этого можно попробовать написать код для ARM, причем в этой же среде. А после получения определенного опыта можно начать работу уж в таких средах разработки, как Keil или IAR.

Для старта, начала работы в среде Arduino IDE нужно запустить инсталятор, который добавит новую платформу.

В общем смысле платы семейства Teensy имеют все необходимое для работы. Это нечто большее, чем просто плата. На основе Teensy можно создавать самые сложные проекты, которые только можно представить.

Сейчас автор запустил кампанию по сбору средств на версии Teensy 3.5 & 3.6, причем денег собрано уже гораздо больше, чем изначально планировалось. На момент написания материала собрано $100194 вместо $5000. Ранним «вкладчикам» Teensy 3.5 обойдется всего в $23, а Teensy 3.6 — в $28.

Отгрузка первых плат начнется в октябре 2016 года.

Приглашение к тестированию даджетов

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

  • Teensy
  • платы
  • разработка электроники
  • разработчикам
  • Блог компании Даджет
  • Компьютерное железо
  • Электроника для начинающих

Teensy LC от Sparkfun

Teensy LC от Sparkfun

Мы даем гарантию на любой товар приобретенный в нашем магазине: 6 месяцев на товары, кроме батареек и аккумуляторов 14 дней на батарейки и аккумуляторы В случае наступления гарантийного случая товар бесплатно ремонтируется, меняется на аналогичный или возвращается полная сумма его стоимости Внимательно ознакомьтесь с условиями гарантии

Вы можете задавать вопросы письменно по e-mail или по контактным телефонам нашего магазина
756 грн

  • Описание
  • Отзывы (1)
  • Задать вопрос

Teensy — это удобная плата разработки с множеством функций в небольшом размере. Teensy LC (Low Cost) — это 32-разрядная плата микроконтроллера минимальной конфигурации, которая предоставляет несложную возможность начать работу с линейкой продуктов Teensy без больших финансовых затрат.

Код производителя: DEV-13305

Teensy LC поставляется с предварительно прошитым загрузчиком, поэтому Вы можете запрограммировать его с помощью встроенного USB интерфейса: внешний программатор не требуется! Вы можете программировать для Teensy в своем любимом редакторе программ с помощью языка C или можете установить дополнение Teensyduino для Arduino IDE и писать скетчи Arduino для Teensy!

Процессор на Teensy также имеет доступ к USB и может эмулировать любой вид USB-устройства, что делает его отличным инструментом для создания USB-MIDI и других проектов HID. 32-разрядный процессор также приносит несколько других функций, таких как несколько каналов прямого доступа к памяти и цифровой аудиоинтерфейс I2S! Есть также 2 отдельных интервальных таймера/ Кроме того, Teensy LC может обеспечить напряжение питания 3,3 В или 5 В для других устройств на уровне до 5-20 мА.

Вся эта функциональность встроена в плату размером 1,4 x 0,7 дюйма со всеми коннекторами на 2,54 мм сетке, так что Вы можете установить ее на макетную доску и незамедлительно приступить к работе. Итак, что отличает Teensy LC от Teensy 3.1? Во-первых, эта версия была оптимизирована, чтобы быть максимально экономически эффективной. Очевидно, что LC не разделяет большую мощность, которой обладает 3.1, но это ни в коем случае не делает LC «слабой» платой! Teensy LC оснащен 8 КБ оперативной памяти, 62 КБ флэш-памяти и 27 цифровыми контактами ввода/вывода с 13 аналоговыми входами высокого разрешения.

Заметка: Teensy LC не поставляется с USB-кабелем micro-B

Характеристики:

  • Процессор: 32-разрядный ARM Cortex-M0+ 48 МГц
  • Память: 62 КБ флэш-памяти, 8 КБ ОЗУ, 1/8(emu)кБ EEPROM
  • Аналоговые входы: 13 входов высокого разрешения
  • Цыфровые входы/выходы: 27 (НЕ устойчивых к 5 В)
  • ШИМ выходы: 10
  • Таймеры: 7 таймеров для интервалов/задержек, независимых от ШИМ
  • Последовательные интерфейсы:
    • 3 UART (последовательные порты)
    • SPI, I2C и I2S
    • I2S (для высококачественного аудиоинтерфейса)

    Ссылки:

    • Даташит (KL26P64M48SF5)
    • Руководство (KL26P64M48SF5)
    • Teensy быстрый старт
    • Teensyduino ПО
    • Таблица размещения выводов:
      • Фронтальные
      • Обратная сторона

      Отзывы покупателей про Teensy LC от Sparkfun

      Гуцалюк Сергій (07.08.2022)

      Крута і дуже маленька плата:) Зібрав на її базі MIDI Footswitch.

      Написать отзыв:

      Есть вопросы по «Teensy LC от Sparkfun» ?

      Teensyduino что это такое

      Платка Teensy® 4.0 [1] основана на довольно мощном процессоре MIMXRT1062DVL6A [2] (ARM Cortex-M7 600 МГц) в корпусе LFBGA196, и её можно программировать в среде Arduino (на момент перевода документации это Arduino 1.8.16 при установленном патче Teensyduino, Version 1.55).

      Teensy40 front view fig01

      Рис. 1. Общий вид на верхнюю сторону платы Teensy 4.0.

      Основные параметры и возможности Teensy 4.0:

      • ARM Cortex-M7, частота тактов 600 МГц.
      • Блок арифметики с плавающей запятой 64 и 32 бита.
      • 1984K Flash, 1024K RAM (512K с повышенным быстродействием), 1K EEPROM (эмулируется с помощью FLASH).
      • Устройство USB High Speed 480 мегабит/сек и поддержка хоста USB 480 мегабит/сек.
      • 40 цифровых портов ввода/вывода, 31 выводов портов PWM (ШИМ).
      • 14 аналоговых ножек ввода (ADC).
      • 7 последовательных портов, 3 порта SPI, 3 порта I2C.
      • Цифровые порты звука: 2 порта I2S/TDM и 1 S/PDIF.
      • 3 порта шины CAN (1 с поддержкой CAN FD).
      • 32 канала DMA общего назначения.
      • Аппаратный блок криптографии (Cryptographic Acceleration) и аппаратный генератор случайных чисел (Random Number Generator).
      • Часы (RTC) с отсчетом даты и времени.
      • Программируемая система ввода/вывода (FlexIO).
      • Конвейер обработки графики (Pixel Processing Pipeline).
      • Peripheral cross triggering.
      • Управление питанием (Power On/Off management).

      Функция Teensy 4.1 Teensy 4.0
      Ethernet 10/100 Mbit DP83825 PHY (6 ножек) нет
      USB Host 5 ножек с функцией управления питанием/горячего подключения устройств USB 2 ножки с контактами SMT (1)
      SDIO (4-разрядная шина данных) Micro SD Socket 8 ножек SMT (1)
      Ножки PWM 35 31
      Аналоговые входы 18 14
      Последовательные порты 8 7
      Память FLASH 8 мегабайт 2 мегабайта
      Память QSPI 2 чипа + память программ память программ
      Штыревые контакты для подключения к плате макетирования (breadboard I/O) 42 24
      Выводы SMT (1) 7 16
      Сигналы карты SD 6 0
      Всего ножек ввода/вывода 55 40

      Примечание (1): контактные площадки меди на обратной стороне платы.

      [Программное обеспечение для разработки]

      Arduino IDE + Teensyduino. Популярная среда разработки Arduino вместе с установленным плагином Teensyduino это основной инструмент программирования для Teensy. На Windows, Linux и старых Mac сначала устанавливается Arduino, затем запускается инсталлятор Teensyduino, который добавляет поддержку Teensy для Arduino IDE. On newer Macs, an all-in-one download is provided. Teensyduino includes a large collection of libraries which are tested and optimized for Teensy. Other libraries may be installed manually or by Arduino’s library manager.

      Примечание: на момент написания статьи должна устанавливаться версия Arduino 1.8.16 и Teensyduino версии 1.55 [3]. Внимание: инсталлятор Teensyduino 1.55 не поддерживает установку на более новые версии Arduino. Для подробной информации о совместимости версий обращайтесь на страничку загрузки Teensyduino [3].

      Visual Micro. Это программная надстройка, которая дает возможность использовать Microsoft Visual Studio для программирования Arduino-совместимых плат, включая Teensy. Поддерживается только на операционная система Windows. Visual Micro коммерческий, платный продукт.

      PlatformIO. Это кроссплатформенная IDE с многими продвинутыми функциями. Поддерживаются Windows, Linux и Macintosh.

      CircuitPython. Эта система предоставляет HEX-файл, который Вы программируете в Teensy 4.0 с помощью загрузчика Teensy Loader (см. описание далее). Затем Teensy представляется на компьютере как флешка (USB-диск), куда копируется или сохраняется Ваш код на языке Python. CircuitPython не полностью поддерживает всю доступную аппаратуру Teensy 4.0.

      Командная строка + Makefile. Это не графическая среда программирования, предоставляемая инсталлятором Teensyduino.

      Teensy 4.x: /hardware/teensy/avr/cores/teensy4/Makefile
      Teensy LC & 3.x: /hardware/teensy/avr/cores/teensy3/Makefile

      [Процессор Teensy 4.0]

      Плата Teensy 4.0 построена на основе процессора MIMXRT1062DVL6A компании NXP [2].

      Производительность. ARM Cortex-M7 предоставляет очень мощное ядро CPU микроконтроллера для встраиваемых систем реального времени. Производительность CPU в несколько раз больше, чем у обычных 32-битных микроконтроллеров.

      Teensy40 coremark barchart fig02

      Рис. 2. Сравнение производительности процессоров плат Arduino на тесте CoreMark Benchmark.

      Двойная суперскалярная архитектура. Cortex-M7 представляет собой двойной суперскалярный процессор. Это означает, что M7 может выполнить 2 инструкции за один период тактовой частоты 600 МГц! Конечно, одновременное выполнение 2 инструкций зависит от обработки инструкций и регистров компилятором. Простые бенчмарки показывают, что код C++, скомпилированный Arduino показывает тенденцию выполнения 2 инструкций за такт с вероятностью от 40% до 50% при выполнении интенсивных вычислений с использованием целых чисел и указателей.

      Floating Point Unit. Блок поддержки чисел с плавающей запятой (Floating Point Unit, FPU) аппаратно выполняет арифметические операции над 32-битными числами float и 64-битными числами double. Скорость математической обработки 32-разрядных чисел float приблизительно такая же, как скорость обработки целых чисел. Обработка 64-битных чисел double происходит в 2 раза медленнее, чем обработка 32-битных чисел float.

      Tightly Coupled Memory. Это специальная аппаратная возможность, позволяющая Cortex-M7 ускорить доступ к памяти до 1 такта на обращение с помощью пары 64-разрядных шин. Шина ITCM предоставляет 64-разрядный маршрут для выборки инструкций. Шина DTCM в реальности это пара 32-битных маршрутов, позволяющая M7 выполнить 2 раздельных доступа к памяти за 1 период тактов. Эти экстремально скоростные шины отделены от основной шины M7 AXI, через которую происходит доступ к другой (не TCM) памяти и периферийным устройствам.

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

      Предсказание ветвлений. Cortex-M7 это первый микроконтроллер ARM, использующий технику предсказания условных переходов в исполнении кода (branch prediction). На платформах Cortex-M4 и более ранних выполнение циклов и другого кода с условными переходами требовали на выполнение ветвлений 3 такта. На M7 после того, как цикл выполнится несколько раз, предсказание ветвления устраняет дополнительные расходы процессорного времени, в результате чего на ветвление тратится только один такт вместо трех.

      Цифровая обработка сигналов. DSP-инструкции ускоряют обработку сигналов, реализацию цифровых фильтров и преобразований Фурье. Библиотека Audio автоматически использует эти DSP-инструкции.

      [Внешние выводы портов]

      У Teensy 4.0 всего 40 ножек для ввода и вывода сигналов. К 24 из них получить доступ проще всего, потому что они разведены на обычные штыревые выводы. Остальные выводы разведены на контактные площадки меди с обратной стороны платы.

      Teensy40 card10 rev2 pinout top fig03

      Рис. 3. Вид на контактные площадки с верхней стороны платы.

      Teensy40 card10 rev2 pinout bottom fig04

      Рис. 4. Вид на контактные площадки с нижней стороны платы.

      [Цифровые порты]

      Цифровой ввод. Порты могут использоваться для ввода логических уровней 0 или 1. По умолчанию ножки портов Teensy 4.0 работают на ввод (входы INPUT), большинство с keeper-резистором. Выводы Teensy 4.0 могут работать с уровнями напряжений от 0V до 3.3V, они не обладают функцией совместимости с уровнями 5V (not 5V tolerant). Поэтому не подавайте на ножки напряжения свыше 3.3V.

      Резисторы Pullup/Pulldown/Keeper. Все цифровые выводы обладают опциональной возможностью подключать внутренние подтягивающие резисторы типа pullup, pulldown или keeper. Они используются для подтяжки логического уровня к лог. 1 (HIGH), или к лог. 0 (LOW), или к одному и тому же уровню, если вход не управляется внешним цифровым сигналом. Обычно эти резисторы используются для подключения внешних кнопок и перемычек. Для настройки встроенных резисторов подтяжки должна использоваться функция pinMode с параметром INPUT_PULLUP или INPUT_PULLDOWN.

      Прерывания по изменению уровня. Все цифровые выводы могут детектировать изменение логического уровня. Используйте attachInterrupt для автоматического запуска функции по событию детектирования изменения уровня. Прерывания должны использоваться для только для чистых сигналов, которые не переключаются слишком часто. Для детектирования событий от кнопок, переключателей и других сигналов на которых возможны помехи от дребезга механических контактов, рекомендуется использовать библиотеку Bounce .

      Цифровой вывод. Все цифровые порты могут также работать как выход. Для этого должна использоваться функция pinMode с параметром OUTPUT (выход с двухтактным буфером) или OUTPUT_OPENDRAIN (выход с открытым стоком). Функции digitalWrite и digitalToggle используются для управления ножкой выхода. Уровень лог. 1 (HIGH) имеет напряжение 3.3V. Рекомендуемый максимальный выходной ток 4 мА.

      ШИМ. 31 цифровых порта поддерживают функцию широтно-импульсной модуляции (Pulse Width Modulation, PWM). Это может использоваться для управления скоростью вращения мотора, яркостью лампочек или светодиодов (LED) или других целей, где необходимо управлять средней выходной мощностью с помощью ШИМ (PWM). Также PWM может использоваться для синтеза звуковых сигналов. PWM управляется функцией analogWrite. 19 групп PWM могут работать на разных частотах модуляции, которыми управляет функция analogWriteFrequency.

      Ограничение скорости переключения. Существует специальная возможность активации более медленных переключений уровня (Slew Rate Limiting), что значительно уменьшает высокочастотные помехи, когда к цифровым выходам подключены длинные провода. С этой функцией снижается скорость изменения уровня на выходе. Дополнительное время переключения составляет всего несколько наносекунд, что достаточно для снижения генерации нежелательных высокочастотных помех, которые могут вызывать проблемы при использовании длинных сигнальных соединений.

      Настраиваемая нагрузочная способность. Выходное сопротивление каждого выхода может управляться выбором одного из 7 значений от 150 Ом (самый маломощный выход) до 21 Ом (самый мощный выход).

      Настраиваемая полоса пропускания. Полоса пропускания выхода также программируется, 4 вариантами: 50, 100, 150 и 200 МГц.

      Ножка LED. Вывод порта 13 традиционно в системе программирования Arduino подключен к светодиоду (LED). Для зажигания светодиода этот порт должен быть настроен как выход. Если же порт 13 используется как вход, то внешний сигнал должен быть достаточно мощным, чтобы подать на порт 13 уровень лог. 1, поскольку светодиод создает дополнительную нагрузку. Для порта 13 функция pinMode не должна использоваться с параметром INPUT_PULLUP (это вызовет слабое свечение LED и смещение уровня на входе порядка 2V).

      [Аналоговые порты]

      Аналоговые входы. 14 ножек портов могут использоваться как аналоговые входы (АЦП), используемые для оцифровки сигналов датчиков, измерения уровня напряжения или обработки других аналоговых сигналов. Базовый аналоговый ввод осуществляется функцией analogRead. Разрешающая способность по умолчанию составляет 10 бит (диапазон кодирования сигнала на входе от 0 до 1023), но это можно настроить функцией analogReadResolution. Аппаратура позволяет реализовать разрешающую способность до 12 бит, но на практике из-за шума более удобнее использовать 10 бит. Более продвинутые возможности доступны при использовании библиотеки ADC .

      Диапазон для аналогового ввода фиксирован, и составляет от 0V до 3.3V. На плате Teensy 4.0 функция analogReference() не работает. Аналоговые выводы не допускают работу с уровнями 5V (not 5V tolerant). Не подавайте на аналоговые выводы уровни, превышающие по напряжению 3.3V.

      Компараторы. Аналоговые компараторы могут преобразовать внешний аналоговый сигнал в цифровой, с точно определенным порогом напряжения, по которому сигнал квалифицируется как 0 или 1 (одноразрядный АЦП).

      [Интерфейсы коммуникации]

      Устройство USB. Основной метод обмена данными с внешним миром для Teensy — интерфейс USB, который работает в режиме устройства / периферии USB со скоростью 480 мегабит/сек (High Speed USB). Программное обеспечение Teensyduino поддерживает многие типы коммуникаций USB с компьютером PC или Mac, которые выбираются через меню Tools -> USB Type. Некоторые из этих типов устройств могут использоваться одновременно (композитное устройство USB).

      Teensy40 Arduino USB Type menu fig05

      Рис. 5. Меню Tools -> USB Type конфигурирует тип устройства USB, который будет реализован Teensy.

      Serial. Такой тип устройства виден на компьютере как COM-порт (Windows) или последовательное устройство serial (Mac, Linux). Serial используется по умолчанию, и это наиболее часто используемый тип коммуникаций. В частности режим Serial используется утилитой монитора среды Arduino (Arduino Serial Monitor) для вывода отладочных сообщений. Байты передаются в обоих направлениях на максимальной скорости USB (настройка baud rate COM-порта игнорируется).

      Библиотека Teensyduino содержит оптимизированный код для поддержки высокой скорости последовательной передачи данных через USB. При обычном использовании с Arduino Serial Monitor режим USB Serial Mode платы Teensy совместим с обычным программным обеспечением, разработанным для последовательных портов, например CoolTerm (будут работать и другие утилиты последовательного терминала, такие как Putty, TerraTerm, SecureCRT и т. п.). В среде Arduino последовательное устройство доступно для Teensy как устройство Serial. В режимах двойного и тройного устройства добавляются SerialUSB1 и SerialUSB2.

      Emulated Serial. Настройка типа USB, в котором отсутствует последовательный интерфейс, и для его эмуляции используется класс интерфейса HID. В этих режимах PC или Mac не будут определять устройство как COM-порт или как serial-устройство, но Вы все еще сможете использовать вызовы Serial.print() для передачи текста в Arduino Serial Monitor.

      MIDI — Musical Instrument Device. MIDI часто используется для ручек управления интерфейса пользователя, слайдеров и кнопок для музыкального программного обеспечения и устройств акустики и музыкального сопровождения. Сообщения MIDI могут отправляться в обоих направлениях. Teensyduino MIDI обеспечивает совместимость этого класса устройства с Macintosh, Linux и Windows при использовании только их встроенных драйверов. Режимы MIDIx4 & MIDIx16 предоставляют 4 или 16 виртуальных порта / кабеля MIDI. Имя устройства MID, которое видит компьютер, можно настроить.

      Audio. Это устройство предназначено для двунаправленной передачи стереофонической звуковой информации. Устройство USB Audio компьютер видит как звуковую карту USB. С помощью свойств звука компьютера можно проигрывать звуковые потоки через Teensy, и программы, которые записывают или обрабатывают звук, могут получать аудиоданные от Teensy как если бы это был USB-микрофон. USB Audio подразумевает совместное использование библиотеки Teensy Audio , что позволяет интегрировать звук Вашего компьютера с любой системой обработки звука, которую Вы разработаете на Teensy.

      Keyboard — стандартная USB-клавиатура на 104 клавиши. Можно передавать нажатия клавиш в компьютер, позволяя управлять почти любым программным обеспечением. Также могут использоваться клавиши управления Media-устройством (play, pause, volume, и т. п.). Поддерживаются многие раскладки клавиатур, отличающиеся от раскладки US, что настраивается через меню Tools -> Keyboard Layout.

      Mouse — эмуляция специальной мыши USB. На компьютер можно отправить как относительное перемещение, как у обычной мыши, так и абсолютную позицию на экране, как с цифровым пером/планшетом. Поддерживаются также кнопки мыши и колесико прокрутки.

      Joystick. Это игровой контроллер с поддержкой 6 осей (X, Y, Z, Zr, Slider1, Slider2), 32 кнопок и 1 верхней hat-кнопкой. Тип Joystick полезен для управления играми или других программных интерфейсов, отвечающих на перемещения джойстика.

      Touchscreen — эмулирует тачскрин с возможностью обнаружения до 10 позиций пальцев.

      MTP Disk — Media Transfer, на компьютере такое устройство видится как телефон или камера с общими файлами.

      Flight Sim — позволяет интеграцию с программным обеспечением X-Plane flight simulator. Переменные и органы управления в симуляторе привязаны к переменным в коде, работающем на Teensy.

      Raw HID — позволяет обмениваться 64-байтными сообщениями с пользовательским ПО, работающим на компьютере.

      Хост USB. Второй порт USB работает в режиме хоста, позволяя подключать к нему устройства USB. Для этого на Teensy 4.0 используются две маленькие контактные площадки SMT на обратной стороне платы (см. рис. 4).

      Этот порт работает полностью независимо от основного порта устройства USB платы Teensy 4.0, так что можно одновременно работать с устройствами USB, подключенными к порту USB хоста, и обмениваться данными с компьютером через порт USB устройства. Порт хоста USB работает на скорости 480 (High Speed USB), 12 (Full Speed USB) или 1.5 (Low Speed USB) мегабит/сек, в зависимости от скорости устройства USB, которое подключено. Для подключения нескольких устройств могут использоваться хабы USB. Для порта хоста USB используется библиотека USBHost_t36 . Кабель от порта хоста USB обычно подключается или к хабу, или к устройству USB.

      Serial. 7 последовательных портов позволяют подключать UART-устройства наподобие MIDI, приемников GPS, устройства управления освещением DMX, беспроводные модули ESP, и т. д. Все эти 7 последовательных портов полностью независимы друг от друга, и могут передавать и принимать данные одновременно. Эти порты не используются вместе с USB (что имеет место на некоторых платах Arduino). На всех 7 портах есть стеки FIFO для повышения производительности работы на высоких скоростях передачи.

      I2C. Есть 3 порта для I2C (сигналы SDA и SCL), позволяющие подключать широкий спектр микросхем с таким интерфейсом. Для I2C используется библиотека Wire . Все порты I2C поддерживают стандартные скорости 100, 400 и 1000 килобит/сек.

      SPI. Есть 3 порта для SPI (с сигналами MOSI, MISO, SCK), позволяющие подключить высокоскоростные чипы, SD-карты, дисплеи. Для этого используется библиотека SPI . Первый порт SPI снабжен FIFO для повышения устойчивости высокоскоростных передач. Каждый чип, подключенный к шине SPI, требует сигнала выборки (chip select, CS). Большинство библиотек, использующих SPI, могут использовать для этой цели любой цифровой вывод порта. Также порты SPI предоставляют возможность аппаратной выборки CS, которые используются в специальным образом оптимизированных библиотеках для повышения производительности.

      CAN. 3 порта для шины CAN позволяют подключаться к автомобильному и индустриальному оборудованию. Для поддержки шины CAN должна быть добавлена специальная микросхема трансивера, согласующая физическую линию CAN с электрическими сигналами шины CAN платы Teensy.

      FlexIO. Очень гибко конфигурируемое периферийное устройство с собственным набором ножек портов, регистров сдвига, таймеров, логики и машины состояний. На основе FlexIO можно реализовать UART (serial), I2C, SPI, I2S audio, PWM. Также можно строить интерфейсы с уникальными свойствами, такими как реализованные в библиотеке TriantaduoWS2811 .

      [Дисплеи]

      ILI9341 320×240 Color TFT. Эти дисплеи лучше всего поддерживаются Teensy 4.0, для них есть несколько высокопроизводительных библиотек, обеспечивающих высокую скорость обновления изображения. ILI9341 обычно самый лучший выбор дисплея из-за отличной программной поддержки.

      Teensy40 ILI9341 Color TFT Display fig06

      Рис. 6. Экран ILI9341 320×240 Color TFT.

      ST7735 Color TFT. Эти дисплеи немного меньше и у них меньше разрешение картинки, чем у ILI9341. Существуют оптимизированные библиотеки для ST7735 и ST7789, которые работают также очень хорошо.

      SSD1306 Monochrome OLED. Эти маленькие дисплеи очень популярны и хорошо поддерживаются.

      Pixel Pipeline. Специальная графическая подсистема, которая может выполнять преобразования цветового пространства, делать затемнение (alpha blending) и цветовую коррекцию (chroma keying), билинейное масштабирование (bilinear resize) и другие операции над буферами кадра (frame buffers). Программная поддержка этой функции весьма экспериментальна.

      Почти все дисплеи, работающие с библиотеками Arduino, также работают и на Teensy 4.0.

      [Audio]

      Teensy40 Audio Design Tool fig07

      Рис. 7. Программа Audio Design Tool упрощает создание системы обработки звуковых потоков.

      I2S/TDM. 2 цифровых звуковых порта, наиболее часто используемые с audio-шилдом. Эти порты могут одновременно передавать и принимать до 8 аудиоканалов при использовании протокола I2S, или до 16 каналов при использовании TDM.

      I2SI — 1 ножка stereo-выхода, 1 ножка stereo-входа, 3 stereo-входа или ножки выходов.
      I2S2 — 1 ножка stereo-выхода, 1 ножка stereo-входа.

      Teensy40 Audio Shield fig08

      Рис. 8. Audio Shield преобразует I2S Digital Audio в аналоговые stereo входы и выходы.

      Альтернативно может использоваться специальный формат для недорогого DAC-чипа PT8211 DAC.

      Teensy40 PT8211 DAC fig09

      Рис. 9. PT8211, недорогой DAC с хорошим качеством выходного сигнала stereo.

      [Управление освещением, светодиоды]

      WS2812B/NeoPixel. Две высокопроизводительные, не блокирующие выполнение основного кода библиотеки используют светодиоды (Light-Emitting Diodes, LED) WS2812B.

      Библиотека OctoWS2811 передает любое количество выходов параллельно, позволяя обновлять свечение почти любого количества LED с частотой до 30 Гц, что уже подходит для воспроизведения видеосигнала. На Teensy 4.0 библиотека OctoWS2811 поддерживает любое количество цифровых выводов, не ограничиваясь только 8 выводами, как было на Teensy 3.x.

      Teensy40 OctoWS2811 Library controlling 1920 WS2812B RGB LEDs 30Hz fig10

      Рис. 10. Библиотека OctoWS2811 управляет 1920 шт. WS2812B RGB LED с частотой кадров 30 Гц.

      Библиотека WS2812Serial передает данные на один выход, однако можно использовать до 8 экземпляров класса этой библиотеки. Не блокирующая передача использует DMA для автоматического вывода данных, в то время как основной код продолжает работать. Это позволяет реализовать более сложные анимации или более эффективную коммуникацию и выполнение других задач по сравнению с традиционной реализацией протокола WS2812B с блокированием.

      Шилды SmartMatrix и SmartLED для LED-панелей HUB75 RGB. Шилд SmartLED (версии 5) позволяет Teensy 4.0 управлять высококачественной графикой на большом массиве панелей HUB75 RGB LED (от 32×16 до 128×64 точек). Библиотека SmartMatrix упрощает рисование базовых графических изображений, выводит статический текст и делать его скроллинг, рисовать красивые картинки с помощью FastLED и проигрывать анимированные GIF на панели. SmartMatrix использует специальные функции Teensy 4.0, чтобы посылать данные графики с минимальными затратами вычислительного времени CPU, так что можно параллельно загрузить CPU другими задачами, такими как коммуникации через SPI, декодирование файла, или формирование графики сложных изображений.

      DMX Lighting Control. Любой из 7 последовательных портов может эффективно использоваться для обмена данными с DMX-контроллерами управления освещением.

      RGB LED. Обычные LED могут управляться с применением PWM (ШИМ) для формирования различной яркости свечения. Этот функционал доступен с применением библиотек SoftPWM и ShiftPWM .

      Teensy40 ShiftPWM controlling 16 RGB LEDs 74HCT595 fig11

      Рис. 11. ShiftPWM управляет 16 шт. RGB LED через 6 микросхем 74HCT595.

      [Тактирование, RTC, таймеры]

      Кварцы и генерация тактов. Предоставляется 2 кварцевых резонатора для точного формирования тактовых частот и интервалов времени. Кварц на 24 МГц используется для формирования базовой тактовой частоты системы и большинства периферийных устройств. Система синтеза тактов с фазовой подстройкой частоты (phase locked loop, PLL) повышает частоту тактов 24 МГц до нужного значения.

      Teensy40 Arduino CPU speed menu fig12

      Рис. 12. Меню выбора основной тактовой частоты.

      Отдельный кварц на 32.768 кГц используется для часов реального времени (Real Time Clock, RTC). Если подключить к VBAT дисковую батарейку на 3V, то генератор 32.768 кГц продолжит работу, позволяя RTC отсчитывать секунды, минуты, часы, и дату даже когда основной источник питания выключен и программа не работает.

      Teensy40 CR2032 Coin Cell VBAT fig13

      Рис. 13. Батарейка CR2032, подключенная к VBAT, позволяет Teensy 4.0 продолжать отсчитывать дату/время, когда общее питание выключено.

      Формирование интервалов времени. 4 таймера выделены для точного формирования интервалов времени. Они конфигурируются с помощью класса IntervalTimer.

      Таймеры ШИМ (PWM). 32 таймера управляют ножками PWM, или могут использоваться для других функций, связанных с интервалами времени и генерацией тактов. Обычно к этим таймерам осуществляется доступ через функцию analogWrite или библиотеки, однако эти таймеры обладают весьма продвинутым функционалом, к которому можно получить доступ путем прямого управления их регистрами.

      FlexPWM1 Module0 — управляет ножками PWM 1, 36, 37.
      FlexPWM1 Module1 — управляет ножками PWM 0, 34, 35.
      FlexPWM1 Module2 — управляет ножками PWM 24, 38, 39.
      FlexPWM1 Module3 — управляет ножками PWM 7, 8, 25.
      FlexPWM2 Module0 — управляет ножками PWM 4, 33.
      FlexPWM2 Module1 — управляет ножкой PWM 5.
      FlexPWM2 Module2 — управляет ножками PWM 6, 9.
      FlexPWM2 Module3 — нет управления ножами.
      FlexPWM3 Module0 — нет управления ножами.
      FlexPWM3 Module1 — управляет ножками PWM 28, 29.
      FlexPWM3 Module2 — нет управления ножами.
      FlexPWM3 Module3 — нет управления ножами.
      FlexPWM4 Module0 — управляет ножкой PWM 22.
      FlexPWM4 Module1 — управляет ножкой PWM 23.
      FlexPWM4 Module2 — управляет ножками PWM 2, 3.
      FlexPWM4 Module3 — нет управления ножами.
      QuadTimer1 Module0 — управляет ножкой PWM 10.
      QuadTimer1 Module1 — управляет ножкой PWM 12.
      QuadTimer1 Module2 — управляет ножкой PWM 11.
      QuadTimer1 Module3 — нет управления ножами.
      QuadTimer2 Module0 — управляет ножкой PWM 13.
      QuadTimer2 Module1 — нет управления ножами.
      QuadTimer2 Module2 — нет управления ножами.
      QuadTimer2 Module3 — нет управления ножами.
      QuadTimer3 Module0 — управляет ножкой PWM 19.
      QuadTimer3 Module1 — управляет ножкой PWM 18.
      QuadTimer3 Module2 — управляет ножкой PWM 14.
      QuadTimer3 Module3 — управляет ножкой PWM15.
      QuadTimer4 Module0 — нет управления ножами. Используется библиотекой OctoWS2811 и библиотекой ADC.
      QuadTimer4 Module1 — нет управления ножами. Используется библиотекой OctoWS2811.
      QuadTimer4 Module2 — нет управления ножами. Используется библиотекой OctoWS2811.
      QuadTimer4 Module3 — нет управления ножами. Используется библиотекой Audio для тайминга ADC и библиотекой ADC.

      Watchdog Timer. 3 отдельных сторожевых таймера (watchdog timer, WDT) могут перезагрузить Teensy, если программное обеспечение потерпело сбой или зависло. Если сторожевой таймер запущен, то он должен периодически сбрасываться программным обеспечением Teensy. Если программа не сбрасывала сторожевой таймер слишком долго, то Teensy автоматически перезагрузится.

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

      GPT1, GPT2 — обычные 32-битные таймеры (Generic Periodic Timer).
      Quadrature Encoders — 4 специальных таймера предназначены для декодирования квадратурных сигналов.

      Cycle Counter. 32-битный счетчик, который инкрементируется с каждым тактом CPU (частота инкрементирования 600 МГц). Программа может прочитать ARM_DWT_CYCCNT, чтобы точно измерить короткие интервалы времени.

      SysTick. Этот системный таймер генерирует прерывание каждую миллисекунду. Большинство библиотек используют этот таймер для отсчета интервалов времени. Также его могут использовать операционные системы реального времени (такие как FreeRTOS) для работы своего планировщика.

      Software Timing. Программные функции для реализации задержек:

      delay() , delayMicroseconds() , delayNanoseconds() . Эти функции формируют задержку в единицах миллисекунд, микросекунд и наносекунд соответственно.

      elapsedMillis , elapsedMicros — эти классы C++ работают как переменная, которая автоматически инкрементируется с каждой миллисекундой и микросекундой соответственно. Эти классы могут использоваться как есть, либо модифицированы, что значительно упрощает реализацию повторяющихся действий в программе, измерения прошедших интервалов времени, отслеживания таймаутов, и т. д. Количество таких переменных ограничено только доступной памятью.

      millis() , micros() — стандартные функции Arduino для отслеживания системного времени в миллисекундах и микросекундах.

      Real Time Clock — Date & Time. RTC может отсчитывать дату и время (date/time). Библиотека Time обычно используется вместе с RTC. Teensy Loader автоматически инициализирует RTC временем хоста разработки PC, когда загружает код firmware (uploading) в память Teensy. Если при этом дисковая батарейка 3V подключена к VBAT, то RTC продолжит отсчет времени, когда основное питание будет отключено (см. рис. 13).

      [Питание]

      USB. Часто платка Teensy используется вместе с компьютером, и тогда она получает питание через кабель USB (порт устройства USB). Напряжение питания USB поступает на вывод VUSB, который соединен с VIN и подает питание на всю плату.

      Вывод VIN. Когда питание от USB не используется, может быть подано питание 5V на вывод VIN. Поскольку VIN и VUSB соединены, нельзя подавать внешнее питание на VIN, когда подключен кабель USB, чтобы не допускать попадания внешнего питания на порт USB компьютера (или надо предпринимать специальные меры, например использование последовательного включения защитного диода Шоттки). Альтернативно можно перерезать перемычку на обратной стороне платы, чтобы разделить цепи VUSB и VIN, что позволит безопасно подключать кабель USB для программирования Teensy 4.0.

      3.3V. На плате Teensy 4.0 установлен регулятор напряжения LDO, который уменьшает напряжение 5V от VUSB/VIN до напряжения 3.3V, которое непосредственно запитывает основной процессор и все другие элементы аппаратуры. От вывода 3.3V могут быть запитаны внешние схемы, однако максимальный потребляемый ими ток не должен превышать 250 mA. Teensy 4.0 не предназначена получать питание от вывода 3.3V, но это может быть реализовано путем специальной модификации схемы платы.

      USB Host. Плата Teensy 4.0 не снабжена схемой управления питанием для подключенных к хосту USB внешних устройств (эти схемы на Teensy 4.1 реализованы). Порт хоста USB выводит только сигналы данных (D+ и D-). Когда Teensy 4.0 получает питание от кабеля USB, или ограничена источником питания 5V, для подключаемых устройств USB к порту хоста не поддерживается функция горячего подключения.

      MIMXRT1062DVL6A. При работе на частоте 600 МГц плата Teensy 4.0 потребляет приблизительно 100 mA. Уменьшение частоты CPU до 528 МГц или ниже снижает потребление тока.

      Функции пониженного энергопотребления. Библиотека Snooze [].

      Управление напряжением питания CPU. DC-DC buck-преобразователь понижает напряжение питания, которое необходимо для ядра CPU. Программное обеспечение может управлять этим напряжением с шагом уровней 50 mV. На частоте 600 МГц CPU работает от 1.25V. Для частоты 528 МГц и ниже используется 1.15V. На частоте 24 МГц для CPU достаточно уровня 0.95V. При повышении частоты сверх номинала (overclocking) автоматически используются более высокие напряжения.

      VBAT. Как уже упоминалось, к выводу VBAT может быть подключено резервное питание для поддержания работы RTC (отсчет даты и времени, когда основное питание отключено). Рекомендуется для этой цели использовать дисковую батарейку CR2032, хотя могут использоваться и другие батарейки на 3V.

      Вывод On/Off и управление питанием. Есть специальное состояние пониженного энергопотребления, в котором выключается питание 3.3V. Это может управляться выводом On/Off платы, если подключить кнопку между этим выводом и шиной GND. Во время работы программы удержание этой кнопки на время больше 4 секунд выключает питание. Если питание выключено, то нажатие этой кнопки на 0.5 секунд снова включит питание 3.3V, и процессор перезагрузится. Если к VBAT подключена батарейка 3V, то состояние питания (было оно включено или выключено выводом On/Off) сохранится, когда основное питание отключено. Без VBAT состояние питания 3.3V при отключении внешнего питания всегда будет возвращаться к состоянию включено, даже когда кнопка On/Off использовалась для выключения 3.3V перед тем, как было отключено основное питание VIN/VUSB.

      [Память]

      Teensy40 memory fig14

      Рис. 14. Три региона памяти Teensy 4.0.

      Program/Flash. У Teensy 4.0 есть 2 мегабайта памяти flash, предназначенной для хранения программы (код firmware). Также память flash может использоваться для хранения переменных только для чтения и массивов (объектов, определенных через PROGMEM и F()). Часть памяти flash с помощью библиотеки LittleFS может использоваться как файловое хранилище. Верхняя область 64K этой памяти зарезервирована для эмуляции EEPROM (энергонезависимых данных) и программы LED blink restore.

      RAM. Оперативная память 1024K доступна для переменных и данных. Половина этой памяти (RAM1) обладает повышенным быстродействием (tightly coupled memory). Другая половина (RAM2) оптимизирована для доступа DMA. Обычно большие массивы и буферы данных размещаются в RAM2 для экономии RAM1, которая выделяется для обычных переменных.

      EEPROM. Поддерживается 1080 байт эмулируемой памяти EEPROM. Запись в эту память временно приостанавливает выполнение кода из flash. Для доступа к памяти эмулируемой памяти EEPROM обычно используется библиотека EEPROM , также могут использоваться функции AVR libc.

      Ключевые слова для статического распределения памяти. Когда компилятор выполняет сборку кода программы, все глобальные переменные, переменные static и компилируемый код — все эти данные размещаются в выделенных областях памяти. Это называется статическим выделением памяти (static allocation), потому что адреса памяти объектов (переменных, функций) фиксируются в момент компиляции. По умолчанию компилятор пытается выделить память для переменных и данных с использованием сверхбыстрой (ultra-fast) памяти DTCM и ITCM. Следующие ключевые слова позволяют управлять размещением объектов, чтобы компилятор размещал переменные и код в нужных областях памяти.

      DMAMEM — переменные, определенные через DMAMEM будут размещаться в начале RAM2. Обычно сюда помещаются буферы и большие массивы. Эти переменные не могут быть инициализированы автоматически, Ваша программа сама должна записать туда начальные значения, если это было необходимо.

      PROGMEM и F() — переменные, определенные через PROGMEM, и строки, заключенные в F(), будут размещаться только в памяти flash. К ним можно обращаться как обычно, не требуется использование специальных функций, которые использовались для 8-битных плат Arduino при чтении переменных PROGMEM.

      FASTRUN — функции, определенные через FASTRUN, размещаются в начале RAM1. Их копия также находится в flash, откуда кодом запуска (код startup) они копируются в RAM1 и уже оттуда будут работать. К этим функциям при выполнении программы осуществляется доступ через шину Cortex-M7 ITCM, с максимально возможным быстродействием. По умолчанию функции без какого-либо указания типа памяти будут обрабатываться как FASTRUN. Маленькая область памяти обычно остается не использованной, потому что доступ через шину ITCM должен осуществляться через области памяти, размер которых нацело делится на 32K.

      FLASHMEM — функции, определенные через FLASHMEM, выполняются непосредственно из flash. Если кэш Cortex-M7 пока не содержит копию этой функции, происходит некоторая задержка в выборках инструкций, пока код не скопируется в кэш M7. Ключевое слово FLASHMEM должно использоваться для кода startup и других функций, скорость работы которых не важна.

      Динамическое выделение памяти. Существует возможность выделения (и освобождения) областей памяти во время работы программы — тех областей, которые не были задействованы статическим распределением памяти. Из-за специфичного определения адресов для каждой переменной, вычисляемого во время работы программы, такое выделение памяти называется динамическим (dynamic memory allocation). К динамическому выделению относятся:

      Локальные переменные . Это переменные, которые используются в параметрах функции, и которые определены внутри функции, а также для возвращаемого значения из функции. Эти переменные обычно размещаются в стеке программы или в регистрах процессора. Также в стеке сохраняется текущее состояние программы и состояние обработчиков прерываний (Interrupt Service Routine, ISR). Стек начинается со старших адресов RAM1, и при выделении памяти растет вниз, в сторону уменьшения адреса. Область памяти для локальных переменных это область RAM1, не используемая кодом FASTRUN, а также инициализированными или обнуляемыми при старте глобальными переменными.

      Heap (куча) . Это области памяти, выделяемые библиотечными функциями malloc() языка C, оператором new языка C++, String-переменными Arduino. Куча размещается в RAM2, начинаясь сразу после переменных DMAMEM.

      RTC RAM. 16 байт памяти связаны с RTC. Батарейка 3V, подключенная к VBAT, сохраняет содержимое этой памяти, когда основное питание выключено. К этой памяти происходит обращение через 32-битные регистры LPGPR0 .. LPGPR3.

      SD Card. Встроенный слот карты SD позволит Вам хранить большие объемы данных. Для доступа к этой карте используется библиотека Arduino SD , для этого сделайте вызов SD.begin(BUILTIN_SDCARD). Слот карты SD использует быстрый 4-разрядный интерфейс SDIO для доступа к данным карты. Карты SD также могут подключаться через ножки SPI, это делается вызовом SD.begin(cspin), при этом используется более медленный доступ через одноразрядный протокол SPI.

      SPI Flash. Чипы памяти Flash могут быть подключены через ножки SPI. Это поддерживается библиотеками SerialFlash и LittleFS .

      [Программирование]

      Teensy Loader. Непосредственное программирование памяти flash производится с помощью загрузчика и утилиты Teensy Loader. Среда разработки Arduino IDE (или другое программное обеспечение для разработки) используется для сборки исходного кода, после чего Arduino IDE автоматически запускает Teensy Loader, когда это необходимо (при выборе в меню Скетч -> Загрузка, или при нажатии горячих клавиш Ctrl+U). Если Ваш скомпилированный код сохранен в HEX-формате файла, то Teensy Loader может также использоваться отдельно, чтобы записать HEX-файл в память flash платки Teensy.

      Teensy40 Teensy Loader Application fig15

      Рис. 15. Основное окно утилиты Teensy Loader.

      Автоматический вход в режим программирования. При разработке для Teensy после компиляции программы обычно происходит автоматическая загрузка. Утилита «teensy_reboot» ищет Teensy на всех портах USB, и отправляет запрос (serial baud rate или HID feature report) для автоматического перехода в режим программирования.

      Program Pushbutton. Если код, который ранее был записан в Teensy, не прослушивает коммуникации USB, автоматический вход в режим программирования невозможен. Для этого случая на плате установлена кнопка, нажатие на которую переводит Teensy в режим программирования, что позволяет восстановиться из состояния активности плохого кода. Удержание этой кнопки переводит Teensy в режим программирования. Это не «кнопка сброса», которая перезапустит Вашу программу. Эта кнопка специально выделена для восстановления из плохого кода. Ножка для функции Program Pushbutton также позволяет внешней аппаратуре принудительно перевести плату в режим программирования.

      Red LED. Красный светодиод выделен для отображения состояния загрузчика (Bootloader Active). Когда загрузчик активен и ждет обмена данными с компьютером, красный светодиод поддерживает не яркое свечение. Когда происходит запись загрузчиком в память flash, свечение становится ярким.

      Teensy40 Red LED bootloader status fig16

      Рис. 16. LED, отображающий состояние загрузчика.

      Reset. На плате Teensy 4.0 нет аппаратного сигнала сброса. Сброс может быть осуществлен программно, с использованием сторожевых таймеров, или с помощью регистра SCB_AIRCR.

      Memory Wipe & LED Blink Restore. Если кнопка программирования удерживается в течение 13 .. 17 секунд, плата Teensy 4.0 полностью сотрет энергонезависимую память и восстановит в памяти flash простейшую программу, мигающую светодиодом (simple LED blink). В начале этого интервала времени удержания кнопки red LED будет недолго мигать. Когда память flash стирается, red LED ярко светится. По завершении Teensy 4.0 автоматически перезагрузится и запустит программу simple LED blink, светодиод LED будет медленно мигать.

      Bootloader Chip. Загрузчик Teensy 4.0 хранится в отдельной микросхеме памяти. Вся основная память чипа доступна для Вашей программы. При включении питания Ваша программа запустится немедленно. Загрузчик не запускается автоматически в момент старта (startup), как это происходит в большинстве Arduino-совместимых плат. Выделенный физически чип позволяет защитить загрузчик Teensy от доступа со стороны программы, что не позволяет программированию flash повредить или стереть загрузчик.

      Code Security. Teensy 4.0 в настоящее время не поддерживает защиту кода (code security), шифрование и аутентификацию. Поддержка этих функций планируется в реализации для будущих плат.

      [Специальные функции]

      Nested Interrupt Controller. Возможность вложенности вызовов прерываний в соответствии с настроенными приоритетами позволяет добиться низкой латентности запуска обработчиков прерываний (ISR), скорость и своевременность обработки которых критически важна. Библиотеки Teensyduino используют вложенность вызовов прерываний (interrupt nesting) с уровнями приоритетов по умолчанию, которые позволяют библиотекам многих типов хорошо работать друг с другом.

      Direct Memory Access (DMA). У процессора Teensy 4.0 есть 32-канальный контроллер прямого доступа к памяти (DMA) общего назначения. Эти каналы DMA используют оптимизированные библиотеки Audio, LED и для вывода на экран. Предоставлен заголовочный файл DMAChannel.h, описывающий уровень абстракции для DMA. Блоки периферии USB device, USB host, SD card и Ethernet также имеют встроенную поддержку для совместной работы с DMA.

      Random Number Generator. Генератор случайных чисел это аппаратное устройство, генерирующее случайные данные с определенной скоростью. Для доступа к генератору случайных числе используется библиотека Entropy .

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

      Temperature Sensor. Встроенный датчик температуры может измерить температуру внутри основного чипа. Для доступа к этому датчику может использоваться библиотека InternalTemperature .

      [Техническая информация]

      i.MX RT1060 Processor Reference Manual site:pjrc.com — вся полезная информация по программированию процессора.
      i.MX RT1060 Crossover Processors for Consumer Products site:pjrc.com — даташит, где приведены только электрические спецификации.
      W25Q16JV-DTR site:pjrc.com — даташит на чип памяти Flash.
      Arm Cortex-M7 Processor Technical Reference Manual site:pjrc.com — техническое руководство по процессору.
      Arm v7-M Architecture Reference Manual site:pjrc.com — руководство по архитектуре процессора, детально описывающее его внутреннее устройство.

      [Габаритные размеры]

      Teensy40 dimensions fig17

      Рис. 17. Вид на габариты с верхней стороны платы.

      Teensy40 dimensions fig18

      Рис. 18. Размеры платы.

      Teensy40 dimensions fig19

      Рис. 19. Вид на габариты с нижней стороны платы.

      [Принципиальная схема]

      Teensy40 schematic fig20

      Рис. 20. Принципиальная схема Teensy4.0.

      [Размещение компонентов на плате]

      Teensy40 component locations top fig21

      Рис. 21. Размещение компонентов на верхней стороне платы Teensy4.0.

      Teensy40 component locations bottom fig22

      Рис. 22. Размещение компонентов на нижней стороне платы Teensy4.0.

      [Ссылки]

      1. Teensy 4.0 Development Board site:pjrc.com.
      2. MIMXRT1062DVL6A site:nxp.com.
      3. Download Teensyduino site:pjrc.com.
      4. Teensy 4.0 site:aliexpress.com.

      Teensy 3.5: подключение, настройка и начало работы

      Teensy 3.5 — компактная платформа для разработки на базе микроконтроллера MK64FX512VMD12 с вычислительным ядром ARM Cortex® M4.

      Teensy 3.5 превосходит типичные платы на базе 8-битных микроконтроллеров. Наиболее существенные отличия заключаются в следующем:

      Тактовая частота: 120 МГц
      Объем Flash-памяти: 512 КБ
      Объем RAM-памяти: 192 КБ

      DMA-контроллер, который позволяет разгрузить центральный процессор, выполняя ресурсоёмкие операции с памятью.

      В итоге на Teensy 3.5 можно разрабатывать сложные и ресурсоёмкие программы, например: обработка звука, управление многосуставными роботами или распознавание образов.

      Видеообзор

      Шаг 1

      Подключите плату к компьютеру по USB. Для коммуникации используйте кабель micro-USB.

      Шаг 2

      Скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.

      Шаг 3

      По умолчанию среда программирования настроена только на платы семейства Arduino. Для работы с платформой Teensy 3.5 — установите дополнительный патч Teensyduino.

      Пример работы

      В качестве примера повторим первый эксперимент «Маячок» из набора Матрёшка. На плате уже есть встроенный пользовательский светодиод, подключенный к 13 пину микроконтроллера.

      void setup() { // initialize digital pin LED_BUILTIN as an output pinMode(LED_BUILTIN, OUTPUT); } void loop() { // turn the LED on (HIGH is the voltage level) digitalWrite(LED_BUILTIN, HIGH); // wait for a 100 ms delay(100); // turn the LED off by making the voltage LOW digitalWrite(LED_BUILTIN, LOW); // wait for a 100 ms delay(100); }

      После загрузки встроенный светодиод LED начнёт мигать 10 раз в секунду.

      Это значит всё получилось и можно смело переходить к другим экспериментам на Teensy.

      Элементы платы

      Микроконтроллер MK64FX512VMD12

      Сердцем платформы Teensy 3.5 является 32-битный микроконтроллер фирмы NXP — MK64FX512VMD12 с вычислительном ядром ARM Cortex-M4 с тактовой частотой 120 МГц. Контроллер обладает блоком памяти на 512 КБ Flash для хранения прошивки и 192 КБ RAM для хранения глобальных и статических переменных.

      Микроконтроллер MKL02Z32VFG4

      Что бы не занимать ни одного байта памяти основного процессора MK64FX512VMD12, для хранения и записи загрузчика используется дополнительный сопроцессор MKL02Z32VFG4.

      Разъём micro-USB

      Порт micro-USB предназначен для прошивки и питания платформы Teensy. Для подключения к ПК понадобиться кабель micro-USB.

      Светодиодная индикация

      Пользовательский светодиод на 13 пине микроконтроллера. Используйте определение LED_BUILTIN в Arduino IDE для работы со светодиодом. При задании значения высокого уровня светодиод загорается, при низком — гаснет.

      Кнопка PROG

      Клик по кнопке приводит к остановке выполнения пользовательской программы из Flash-памяти основного контроллера и переводит плату в режим программирования.

      При подачи питания на плату, основной процессор загружает данные из Flash-памяти и исполняет записанные инструкции. При прошивки Teensy по USB, нажатии на кнопку PROG или подачи низкого сигнала на пин Prog , сопроцессор MKL02Z32VFG4 загружает код загрузчика в RAM-память основного процессора MK64FX512VMD12 и запускает его. Загрузчик стирает всю Flash-память основного процессора, считывает новые данные по USB и записывает во Flash-память. Далее плата перезагружается и основной процессор уже исполняет новые инструкции из Flash-памяти.

      Понижающий регулятор

      Понижающий линейный преобразователь LP38691 обеспечивает питание микроконтроллера и другой логики платы при подключении питания через USB-порт или пин Vin. Диапазон входного напряжения от 3,6 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 250 мА.

      По документации на регулятор LP38691, максимальный выходной ток составляет 500 мА. Но в силу защиты платы от перегрева, в схеме используется ограничения до 250 мА.

      Распиновка

      Пины питания

      VIN Входной пин для подключения внешнего источника напряжения в диапазоне от 3,5 до 5 вольт.
      3V3 Выходной пин от стабилизатора напряжения с выходом 3,3 вольта и максимальных током 250 мА.
      GND Выводы земли.

      AGND Вывод аналоговой земли. Добавление аналоговой земли позволяет развязать между собой аналоговые и цифровые части микросхемы, уменьшить импульсные помехи, повысить инструментальную точность каналов АЦП и ЦАП.

      Порты ввода/вывода

      В отличии от большинства плат Arduino, родным напряжением Teensy является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать 3,3 В. Но есть дополнительный бонус, все GPIO пины 0 – 57 толерантны к 5 вольтам, так что смело можете подключать свои любимые датчики к этой платформе.

      Цифровые входы/выходы: 58 пинов: 0 – 57
      Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 25 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.

      АЦП: 27 пинов: A0 – A26
      Позволяет представить аналоговое напряжение в виде цифровом виде. По умолчанию разрядность АЦП установлена в 10 бит. Используйте функцию analogReadResolution() для смены разрядности АЦП. Диапазон входного напряжения от 0 до 3,3 В. При подаче большего напряжения микроконтроллер может выйти из строя.

      ЦАП: 2 пина: A21 и A22
      Позволяет выводить аналоговое напряжение из цифровых значений. Разрядность ЦАП не меняется и установлена в 12 бит.

      ШИМ: 20 пинов: 2 – 10 , 14 , 20 – 23 , 29 – 30 и 35 – 38
      Позволяет выводить аналоговое напряжение в виде ШИМ-сигнала из цифровых значений. По умолчанию разрядность ШИМ установлена в 8 бит. Используйте функцию analogWriteResolution() для смены разрядности ШИМ.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *