====== Teensy 3.2: подключение, настройка и начало работы ====== [[amp>product/teensy-32?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|Teensy 3.2]] — компактная платформа для разработки на базе микроконтроллера NXP MK20DX256VLH7 с вычислительным ядром ARM Cortex® M4. {{ :products:teensy-32:teensy-32.1.jpg?nolink |}} Teensy 4.0 превосходит типичные платы на базе 8-битных микроконтроллеров. Наиболее существенные отличия заключаются в следующем: * Тактовая частота: 72 МГц * Объем Flash-памяти: 256 КБ * Объем RAM-памяти: 64 КБ * DMA-контроллер, который позволяет разгрузить центральный процессор, выполняя ресурсоёмкие операции с памятью. В итоге на Teensy 3.2 можно разрабатывать сложные и ресурсоёмкие программы, например: обработка звука, управление многосуставными роботами или распознавание образов. ===== Подключение и настройка ===== ==== Шаг 1 ==== Подключите плату к компьютеру по USB. Для коммуникации используйте [[amp>product/usb-cable-micro?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|кабель micro-USB]].{{ :products:teensy-32:teensy-32-install.1.png?nolink |}} ==== Шаг 2 ==== [[articles:arduino-ide-install|Скачайте и установите]] на компьютер интегрированную среду разработки Arduino IDE. ==== Шаг 3 ==== По умолчанию среда программирования настроена только на платы семейства Arduino. Для работы с платформой Teensy 4.0 — [[:articles:teensy-install|установите дополнительный патч Teensyduino]]. ===== Пример работы ===== В качестве примера повторим первый эксперимент [[:конспект-arduino:светильник-с-управляемой-яркостью|«Маячок»]] из набора [[amp>product/matryoshka-z?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|Матрёшка]]. На плате уже есть встроенный пользовательский светодиод, подключенный к ''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 раз в секунду. {{ :products:teensy-32:teensy-32-blink.gif?nolink |}} Это значит всё получилось и можно смело переходить к другим экспериментам на Teensy. ===== Элементы платы ===== {{ :products:teensy-32:teensy-32-annotation.png?nolink |}} ==== Микроконтроллер MK20DX256VLH7 ==== Сердцем платформы Teensy 3.2 является 32-битный микроконтроллер фирмы NXP — {{ :products:teensy-32:mk20dx256vlh7-datasheet.pdf |MK20DX256VLH7}} с вычислительном ядром ARM Cortex-M4 с тактовой частотой 72 МГц. Контроллер обладает блоком памяти на 256 КБ Flash для хранения прошивки и 64 КБ RAM для хранения глобальных и статических переменных. ==== Микроконтроллер MKL02Z32VFG4 ==== Что бы не занимать ни одного байта памяти основного процессора [[#микроконтроллер_mk20dx256vlh7|MK20DX256VLH7]], для хранения и записи загрузчика используется дополнительный сопроцессор {{ :products:teensy-32:mkl02z32vfg4-datasheet.pdf |MKL02Z32VFG4}}. ==== Разъём micro-USB ==== Порт micro-USB предназначен для прошивки и питания платформы Teensy. Для подключения к ПК понадобиться [[amp>product/usb-cable-micro?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|кабель micro-USB]]. ==== Светодиодная индикация ==== Пользовательский светодиод на ''13'' пине микроконтроллера. Используйте определение ''LED_BUILTIN'' в Arduino IDE для работы со светодиодом. При задании значения высокого уровня светодиод загорается, при низком — гаснет. ==== Кнопка PROG ==== Клик по кнопке приводит к остановке выполнения пользовательской программы из Flash-памяти основного контроллера и переводит плату в режим программирования. При подачи питания на плату, основной процессор загружает данные из Flash-памяти и исполняет записанные инструкции. При прошивки Teensy по USB, нажатии на кнопку PROG или подачи низкого сигнала на пин ''Prog'', сопроцессор [[#микроконтроллер_mkl02z32vfg4|MKL02Z32VFG4]] загружает код загрузчика в RAM-память основного процессора [[#микроконтроллер_mk20dx256vlh7|MK20DX256VLH7]] и запускает его. Загрузчик стирает всю Flash-память основного процессора, считывает новые данные по USB и записывает во Flash-память. Далее плата перезагружается и основной процессор уже исполняет новые инструкции из Flash-памяти. ==== Понижающий регулятор ==== Понижающий линейный преобразователь {{ :products:teensy-32:lp38691-datasheet.pdf |LP38691}} обеспечивает питание микроконтроллера и другой логики платы при подключении питания через USB-порт или пин Vin. Диапазон входного напряжения от 3,6 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 250 мА. По документации на регулятор {{ :products:teensy-32:lp38691-datasheet.pdf |LP38691}}, максимальный выходной ток составляет 500 мА. Но в силу защиты платы от перегрева, в схеме используется ограничения до 250 мА. ===== Распиновка ===== [[this>_media/products:teensy-32:teensy-32-pinout.pdf|{{:products:teensy-32:teensy-32-pinout.png}}]] ==== Пины питания ==== * **VIN** Входной пин для подключения внешнего источника напряжения в диапазоне от 3,5 до 5 вольт. * **3V3** Выходной пин от [[#понижающий_регулятор|стабилизатора напряжения]] с выходом 3,3 вольта и максимальных током 250 мА. * **GND** Выводы земли. * **AGND** Вывод аналоговой земли. Добавление аналоговой земли позволяет развязать между собой аналоговые и цифровые части микросхемы, уменьшить импульсные помехи, повысить инструментальную точность каналов АЦП и ЦАП. ==== Пины ввода-вывода ==== * **Цифровые входы/выходы:** 34 пинов: ''0''–''33''\\ Логический уровень единицы — 3,3 В, нуля — 0 В. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно. * **АЦП:** 21 пин: ''A0''–''A20''\\ Позволяет представить аналоговое напряжение в виде цифровом виде. По умолчанию разрядность АЦП установлена в 10 бит. Используйте функцию [[https://www.arduino.cc/reference/en/language/functions/zero-due-mkr-family/analogreadresolution/|analogReadResolution()]] для смены разрядности АЦП. Диапазон входного напряжения от 0 до 3,3 В. При подаче большего напряжения микроконтроллер может выйти из строя. * **ЦАП:** 1 пин: ''A14''\\ Позволяет выводить аналоговое напряжение из цифровых значений. Разрядность ЦАП не меняется и установлена в 12 бит. * **ШИМ:** 12 пинов: ''3''–''6'', ''9''–''10'', ''20''–''24'' и ''32''\\ Позволяет выводить аналоговое напряжение в виде ШИМ-сигнала из цифровых значений. По умолчанию разрядность ШИМ установлена в 8 бит. Используйте функцию [[https://www.arduino.cc/reference/en/language/functions/zero-due-mkr-family/analogwriteresolution/|analogWriteResolution()]] для смены разрядности ШИМ. * **I²C** Для общения Teensy c [[amp>collection/boards?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|платами расширения]] и [[amp>collection/sensors?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|сенсорами]] по интерфейсу I²C. * **I²C0**: пины ''SDA0/18'' и ''SCL0/19'' * **I²C1**: пины ''SDA1/17'' и ''SCL1/16'' * **SPI** Для общения Teensy c [[amp>collection/boards?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|платами расширения]] и [[amp>collection/sensors?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|сенсорами]] по интерфейсу SPI. * **SPI**: пины ''MOSI/7'', ''MISO/8'' и ''SCK/13'' * **SPI2**: пины ''MOSI2/35'', ''MISO2/34'' и ''SCK2/37'' * **Serial/UART** Для общения Teensy c [[amp>collection/boards?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|платами расширения]] и [[amp>collection/sensors?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|сенсорами]] по интерфейсу UART. * **Serial1**: пины ''TX1/1/5'' и ''RX1/0/21'' * **Serial2**: пины ''TX2/10/31'' и ''RX2/9/26'' * **Serial3**: пины ''TX3/8'' и ''RX3/7'' * **CAN** Для общения Teensy c модулями по интерфейсу CAN. * **CAN1**: пины ''CTX/3'' и ''CRX/4'' ===== Принципиальная схема ===== {{ :products:teensy-32:teensy-32-schematic.png?nolink |}} ===== Габаритный чертёж ===== [[this>_media/products:teensy-32:teensy-32-dimensions.pdf|{{:products:teensy-32:teensy-32-dimensions.png}}]] ===== Характеристики ===== * Микроконтроллер: NXP MK20DX256VLH7 * Ядро: ARM Cortex-M4 (32 бита) * Тактовая частота: 72 МГц * Flash-память: 256 КБ * RAM-память: 64 КБ * EEPROM-память: 2 КБ * Пинов ввода-вывода: 34 (толерантны к 5 В) * Пины с прерыванием: 34 * Пины с АЦП: 21 * Разрядность АЦП: 8/10/12 бит (по умолчанию 10 бит) * Пины с ЦАП: 1 * Разрядность ЦАП: 12 бит * Пины с ШИМ: 12 * Разрядность ШИМ: 8/10/12/16 бит (по умолчанию 8 бит) * Каналы DMA: 16 * Аппаратные интерфейсы: 3× UART, 2× I²C, 1× SPI, 1× CAN * Входное напряжение питания: * через USB: 5 В * через пин Vin: 3,3–5 В * Напряжение логических уровней: 3,3 В * Максимальный выходной ток пина 3V3: 250 мА * Габариты: 35×18×4 мм ===== Ресурсы ===== * [[articles:arduino-ide-install|Установка и настройка Arduino IDE]] * [[:articles:teensy-install|Установка патча Teensyduino для Arduino IDE]] * [[amp>product/teensy-32?utm_source=man&utm_campaign=teensy-32&utm_medium=wiki|Teensy 3.2]] в магазине * [[https://github.com/amperka/hardware-drawings/blob/master/teensy-32.svg|Векторное изображение Teensy 3.2]] * [[https://grabcad.com/library/teensy-3-2-2|3D-модель Teensy 3.2]]