Arduino:Продукты/Продукты Arduino/Плата Arduino Due

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



Arduino Due[1]

Arduino Due – это микроконтроллерная плата на базе процессора Atmel SAM3X8E ARM Cortex-M3. Это первая плата Arduino на базе микроконтроллера с 32-битным ядром ARM. У нее 54 цифровых I/O контакта (из которых 12 можно использовать для выдачи ШИМ), 12 аналоговых контактов, 4 аппаратных последовательных порта (UART), частота 84 МГц, поддержка OSB OTG, 2 ЦАП (цифро-аналоговых преобразователя), 2 TWI, разъем для питания, SPI-гребешок, JTAG-гребешок, кнопка сброса и кнопка очистки flash-памяти.

Внимание!

В отличие от большинства плат Arduino, Due работает на 3,3 вольтах. Максимальное напряжение, к которому терпимы I/O контакты – 3,3 вольта. Если подать на них более высокое напряжение, это может повредить плату.

Плата оснащена всем необходимым для микроконтроллера; просто подключите ее к компьютеру через кабель micro-USB либо запитайте через батарею или адаптер, конвертирующий переменный ток в постоянный. Модель Due совместима со всеми «шилдами» Arduino, которые работают на 3,3 вольтах.

Кроме того, Due совместима с распиновкой 1.0:

  • Интерфейс TWI: контакты SDA и SCL расположены рядом с контактом AREF
  • Контакт IOREF: позволяет правильно настроенному «шилду», подключенному к плате, адаптировать напряжение, даваемое платой. Благодаря этому «шилды» совместимы с 3,3-вольтовыми платами вроде Due и 5-вольтовыми платами на базе AVR
  • Бездействующий, ни к чему не подключенный контакт: зарезервирован для использования в будущем

О гарантии на плату можно почитать тут.

С чего начать

Здесь можно почитать о том, как настроить плату, использовать IDE Arduino и т.д.

Если нужна помощь, то ее можно найти на официальных форумах и сайте Arduino:

  • Здесь можно почитать о ПО
  • Здесь – о проектах
  • Здесь – попросить клиентской поддержки

Идеи для вдохновения

В этом руководстве рассказывается, как использовать Arduino Due и «шилд» Arduino Motor Shield, в этом – как при помощи Arduino Due и ее ЦАП-функций сделать простой генератор тактовых импульсов, а в этом – как сделать простой аудиоплеер. Больше проектов ищите на Arduino Project Hub – образовательной платформе официального сайта Arduino. Вот некоторые из них:

Технические характеристики

  • Микроконтроллер – AT91SAM3X8E
  • Рабочее напряжение – 3,3 вольта
  • Входное напряжение (рекомендуемое) – 7-12 вольт
  • Входное напряжение (лимит) – 6-16 вольт
  • Цифровые I/O контакты – 54 шт. (из которых 12 шт. можно использовать для выдачи ШИМ)
  • Входные аналоговые контакты – 12 шт.
  • Выходные аналоговые контакты – 2 шт. (ЦАП)
  • Суммарная сила постоянного тока на всех I/O линиях – 130 миллиампер
  • Максимальная сила тока на контакт 3.3V – 800 миллиампер
  • Максимальная сила тока на контакт 5V – 800 миллиампер
  • Flash-память – 512 Кб (весь объем памяти доступен для использования в проектах пользователя)
  • SRAM – 96 Кб (два банка памяти: 64 Кб и 32 Кб)
  • Тактовая частота- 84 МГц
  • Длина- 101,52 мм.
  • Ширина- 53,3 мм.
  • Вес- 36 грамм

Преимущества ядра ARM:

  • 32-битное ядро позволяет выполнять операции с 4-байтными данными в рамках одного такта процессора (более подробно читайте в статье о типе данных int).
  • Тактовая частота – 84 МГц
  • 96 Кб SRAM-памяти
  • 512 Кб flash-памяти для кода
  • DMA-контроллер, который освобождает процессор от выполнения особо трудоемких задач

Питание

Плату Arduino Due можно запитать от USB-коннектора или от внешнего источника питания. Источник питания выбирается автоматически.

Внешнее (не USB) питание может идти либо от батареи, либо от адаптера, конвертирующего переменный ток в постоянный. Адаптер можно подключить, подсоединив 2,1-миллиметровый коннектор с центральным положительным контактом к разъему питания на плате. Провода от батареи можно подключить к контактам GND и VIN на коннекторе POWER.

Плата может работать на внешнем источнике питания, дающем 6-20 вольт. Однако, если подать на плату меньше 7 вольт, то контакт 5V может получить меньше 5 вольт, в результате чего плата может стать нестабильной. Кроме того, если подать на плату более 12 вольт, регулятор напряжения может перегреться и повредить плату. Поэтому рекомендуемый диапазон – 7-12 вольт.

Контакты для питания на плате Arduino Due:

  • VIN – входное напряжение для паты Arduino Due при использовании внешнего источника питания (в отличие от 5 вольт, идущих от USB-соединения или другого отрегулированного источника питания). Вы можете подавать питание на этот контакт или, наоборот, брать его оттуда, если напряжение подается на разъем для питания.
  • 5V – выдача отрегулированных 5 вольт от регулятора напряжения, имеющегося на плате. Плату можно питать либо от разъема постоянного тока (7-12 вольт), либо от USB-коннектора (5 вольт), либо от контакта VIN (7-12 вольт). Подача напряжения через контакты 5V и 3.3V идет в обход регулятора напряжения, поэтому может повредить плату. Делать этого не рекомендуется.
  • 3V3 – выдача 3,3 вольт от регулятора напряжения, имеющегося на плате. Максимальная сила тока – 800 миллиампер. Этот регулятор также питает микроконтроллер SAM3X.
  • GND – контакты для «земли».
  • IOREF – эталонное напряжение, на котором работает микроконтроллер. Правильно настроенный «шилд» может прочитать напряжение на контакте IOREF и выбрать правильный источник питания или переключиться на нужную логику – 3,3-вольтовую или 5-вольтовую.

Память

Чип SAM3X имеет 512 Кб (2 блока по 256 Кб) flash-памяти для хранения кода. Загрузчик записан предварительно компанией Atmel и хранится в отдельной ROM-памяти. Также доступны 96 Кб SRAM-памяти (в двух прилегающих блоках – 64 Кб и 32 Кб). Доступ ко всем видам памяти (flash, RAM и ROM) осуществляется непосредственно – через прямую адресацию.

Кроме того, flash-память на SAM3X можно стереть при помощи специальной кнопки, имеющейся на плате. Это сотрет скетч, который в данный момент загружен на микроконтроллер. Чтобы стереть flash-память, удерживайте в течение нескольких секунд кнопку Erase (плата при этом должна находиться во включенном состоянии).

Входные и выходные контакты

  • Цифровые I/O контакты: с 0-го по 53-ий. Каждый из 54-ех цифровых контактов Due можно использовать и в качестве входного, и в качестве выходного контакта – при помощи функций pinMode(), digitalWrite() и digitalRead(). Они работают на 3,3 вольтах. Кроме того, каждый из этих контактов может дать 3 или 15 миллиампер (в зависимости от контакта) или принять 6 или 9 миллиампер (в зависимости от контакта). Они также оснащены подтягивающим резистором (по умолчанию отключен) номиналом 100 кОм. Кроме того, некоторые контакты имеют специальные функции.
  • Последовательная передача данных: 1-ый канал (Serial): 0-ой (RX) и 1-ый (TX) контакты; 2-ой канал (Serial 1): 19-ый (RX) и 18-ый (TX) контакты; 3-ий канал (Serial 2): 17-ый (RX) и 16-ый (TX) контакты; 4-ый канал (Serial 3): 15-ый (RX) и 14-ый (TX) контакты. Эти контакты используются для получения (RX) и отправки (TX) последовательных TTL-данных (на 3,3-вольтовой логике). 0-ой и 1-ый контакты подключены к соответствующим контактам на чипе ATmega16U2, конвертирующем USB в TTL.
  • ШИМ: Контакты со 2-го по 13-ый. Обеспечивают выдачу 8-битной ШИМ при помощи функции analogWrite(). Разрешение ШИМ можно поменять при помощи функции analogWriteResolution().
  • Интерфейс SPI: SPI-гребешок (на других платах ArduinoICSP-гребешок). Эти контакты обеспечивают SPI-коммуникацию при помощи библиотеки SPI. Контакты интерфейса SPI выведены на 6-контактный гребешок, который физически совместим с Uno, Leonardo и Mega 2560. SPI-гребешок можно использовать только для коммуникации с другими SPI-устройствами, но не для программирования SAM3X при помощи ICSP. Кроме того, интерфейс SPI на Due имеет продвинутый функционал, который можно использовать при помощи расширенных функций SPI для Due.
  • Интерфейс CAN: CANRX и CANTX. Эти контакты поддерживают коммуникационный протокол CAN, но API Arduino его пока не поддерживает.
  • Встроенный светодиод: 13-ый цифровой контакт. Если подать на этот контакт значение HIGH, то светодиод включится, а если LOW, то выключится. Кроме того, есть возможность постепенно снижать/увеличивать яркость этого светодиода, т.к. 13-ый цифровой контакт тоже поддерживает ШИМ.
  • Интерфейс TWI: первый – 20-ый (SDA) и 21-ый (SDL) контакты; второй – SDA1 и SCL1. Поддерживает TWI-коммуникацию при помощи библиотеки Wire. Контакты SDA1 и SCL1 управляются при помощи класса Wire1, который есть в библиотеке Wire. У контактов SDA и SCL есть подтягивающие резисторы, а у SDA1 и SCL1 – нет. Таким образом, чтобы использовать класс Wire1, контактам SDA1 и SCL1 требуются подтягивающие резисторы.
  • Аналоговые контакты: с A0 по A11. Плата Arduino Due имеет 12 аналоговых контактов, каждый из который поддерживает 12-битное разрешение (т.е. допускает использование 4096 разных значений). По умолчанию при считывании разрешение выставлено на 10 бит – для совместимости с другими платами Arduino, но его можно поменять при помощи функции analogReadResolution(). Вольтовый диапазон на входных аналоговых контактах Due измеряется от «земли» до 3,3 вольт. Если подать на эти контакты Due больше 3,3 вольт, это может повредить чип SAM3X. Кроме того, Due игнорирует функцию analogReference().
  • AREF: эталонное напряжение. Используется вместе с функцией analogReference(). Этот контакт через резисторный мост подключен к контакту эталонного напряжения SAM3X. Чтобы использовать контакт AREF, с платы нужно выпаять резистор BR1.
  • Цифро-аналоговое преобразование: DAC1 и DAC2. Эти контакты выводят аналоговые данные с 12-битным разрешением (4096 уровней) при помощи функции analogWrite(). Их можно использовать, чтобы сгенерировать выдачу звуковой информации при помощи библиотеки Audio. Обратите внимание, что диапазон выходных ЦАП-данных составляет только от 0,55 до 2,75 вольт.
  • Reset: если подать на эту линию LOW, это сбросит микроконтроллер. Как правило, используется, если к Due подключен «шилд», т.к. он блокирует кнопку сброса, расположенную на самой плате.

Смотрите также распиновку между контактами Arduino и портами SAM3X.

Коммуникация

Плата Arduino Due оснащена множеством средств для коммуникации с компьютером, другими Arduino и микроконтроллерами, а также с устройствами вроде телефонов, планшетов, камер и т.д. Чип SAM3X оснащен одним аппаратным UART и тремя аппаратными USART для последовательной TTL (3,3-вольтовой) коммуникации.

USB-порт для программирования подключен к чипу ATmega16U2, который отображается на ПО компьютера, к которому подключена Due, как виртуальный COM-порт (чтобы распознать это устройство, машинам на Windows нужен файл *.inf, однако машины на OSX и Linux распознают плату как COM-порт автоматически). Чип 16U2 также подключен к аппаратному UART на SAM3X. Контакты TX0 и RX0 обеспечивают коммуникацию типа Serial-USB для программирования платы при помощи микроконтроллера ATmega16U2. В IDE Arduino есть монитор порта, который позволяет осуществлять передачу простых текстовых данных – и на плату, и обратно. При передаче данных через чип ATmega16U2 и USB-соединение с компьютером (но не при последовательной коммуникации через 1-ый и 0-ой контакты) на плате будут загораться светодиоды RX и TX. Штатный USB-порт подключен к чипу SAM3X. Это позволяет выполнять последовательную (CDC) коммуникацию через USB. Последовательное соединение осуществляется через монитор порта в IDE Arduino или другую программу на вашем компьютере. Это также позволяет Due эмулировать на подключенном компьютере USB-мышь или USB-клавиатуру.

Чтобы использовать эти функции, смотрите библиотеки Mouse и Keyboard.

Штатный USB-порт также может выступать USB-хостом для периферийных устройств вроде мыши, клавиатуры и смартфонов. Чтобы использовать эти функции, смотрите библиотеку USBHost.

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

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

Плата Arduino Due программируется при помощи IDE Arduino. О языке разработки Arduino читайте тут, а руководства смотрите тут.

Загрузка скетчей на SAM3X отличается от того, как это происходит на микроконтроллерах AVR, которыми оснащаются, как правило, другие платы Arduino. Перед новым программированием на Due нужно стереть flash-память. Загрузка чипа управляется ROM-памятью на SAM3X, которая запускается только тогда, когда flash-память чипа пуста.

Для программирования платы можно использовать оба USB-порта, но лучше отдать предпочтение USB-порту для программирования – из-за того, каким образом осуществляется стирание памяти на чипе:

  • USB-порт для программирования. Чтобы использовать этот порт, зайдите в IDE Arduino и выберите пункт Инструменты > Плата > Arduino Due (Programming Port). Затем подключите USB-порт для программирования (он находится ближе к разъему для питания) к компьютеру. В качестве чипа, конвертирующего USB-данные в последовательные данные, USB-порт для программирования использует чип ATmega16U2, и он подключен к первому UART на SAM3X (контакты RX0 и TX0). Два контакта Atmega16U2 подключены к контактам Erase и Reset на SAM3X. Открытие и закрытие USB-порта для программирования на скорости 12000 бит/сек запускает на чипе SAM3X процесс «аппаратной очистки», который активирует на SAM3X контакты Erase и Reset перед коммуникацией с UART. Для программирования Due рекомендуется использовать именно этот порт. Он более надежен, т.к. работает, как правило, даже если неисправен главный микроконтроллер.
  • Штатный USB-порт. Чтобы использовать этот порт, зайдите в IDE Arduino и выберите пункт Инструменты > Плата > Arduino Due (Native USB Port). Штатный USB-порт подключен напрямую к чипу SAM3X. Теперь подключите штатный USB-порт (он находится рядом с кнопкой сброса) к компьютеру. Открытие и закрытие штатного USB-порта на скорости 1200 бит/сек запускает процедуру «мягкой очистки»: стирается flash-память, а затем перезапускается плата. Если главный микроконтроллер по какой-то причине неисправен, то «мягкая очистка» может не сработать, поскольку эта процедура полностью выполняется на программном уровне в SAM3X. Открытие и закрытие штатного USB-порта на другой скорости не сбросит SAM3X.

В отличие от других плат Arduino, на которых используется avrdude, плата Due использует bossa.

Исходный код прошивки ATmega16U2 можно скачать на GitHub-репозитории Arduino. Для программирования через внешний программатор (это перезапишет загрузчик DFU) можно воспользоваться ISP-гребешком. Более подробно читайте в этом руководстве.

Защита USB-портов от перегрузок

Плата Arduino Due оснащена восстанавливаемым предохранителем, который защищает USB-порты вашего компьютера от перегрузок. Хотя у большинства компьютеров есть собственная защита от подобных неприятностей, предохранитель добавляет к ней еще один слой. Если на USB-порт будет подано более 500 миллиампер, этот предохранитель автоматически прервет соединение, пока короткое замыкание или перегрузка не будут устранены.

Физические характеристики и совместимость с «шилдами»

Максимальные длина и ширина печатной платы Arduino Due составляют 10,16 и 5,33 см соответственно, однако USB-коннекторы и разъем для питания могут немного выходить за эти пределы. Кроме того, на плате имеются три отверстия, которые позволяют прикрепить ее к какой-либо поверхности или корпусу. Обратите внимание, что расстояние между 7-ым и 8-ым контактами составляет 0,406 см, а между остальными контактами – 0,254 см.

Плата Arduino Due совместима с большинством «шилдов», разработанных для плат Uno, Diecimila и Duemilanove. Цифровые контракты с 0-го по 13-ый (и прилегающие к ним контакты AREF и GND), аналоговые контакты с 0-го по 5-ый, гребешок для питания и ICSP-гребешок (для SPI) находятся на тех же местах. Более того, на тех же контактах (т.е. на 0-ом и 1-ом) находится и UART (последовательный порт). Обратите внимание, что интерфейс I2C расположен на 20-ом и 21-ом контактах, тогда как у Duemilanove и Diecimila она находится на 4-ом и 5-ом контактах.

Документация

Плата Arduino Due – это оборудование, распространяемое по принципу «open-source». Вы можете создать на ее основе собственную плату, используя следующие файлы:

См.также

Внешние ссылки