Примеры программ для arduino due. Arduino Due: распиновка, схема подключения и программирование. USB-порты на Due

Доброго времени суток!
Уже довольно давно на досуге я занимаюсь всяческими электронными безделушками. Начинал с программирования тинек и мег в IARе, пока не понял что c Arduino дела обстоят намного проще. И вот совсем недавно обнаружил на просторах китайских магазинов копию Arduino DUE по цене чуть дороже небезызвестной Mega2560.

Для тех, кто не знает что это и с чем его едят

Arduino - это электронный конструктор и удобная платформа быстрой разработки электронных устройств для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Устройство программируется через USB без использования программаторов.

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

Микроконтроллер на плате программируется при помощи языка Arduino (основан на языке Wiring) и среды разработки Arduino (основана на среде Processing). Проекты устройств, основанные на Arduino, могут работать самостоятельно, либо же взаимодействовать с программным обеспечением на компьютере (напр.: Flash, Processing, MaxMSP). Платы могут быть собраны пользователем самостоятельно или куплены в сборе. Программное обеспечение доступно для бесплатного скачивания. Исходные чертежи схем (файлы CAD) являются общедоступными, пользователи могут применять их по своему усмотрению.
© arduino.ru


Начинал свое знакомство с arduino я с покупки китайского аналога Mega2560. По началу игрался, подключал дисплеи, датчики, сервомоторы, пока как то раз не понадобилось по работе сделать девайс, считывающий напряжения с токового шунта и терморезистора, преобразующий все это дело в нормальный вид и выводящий на дисплей. Вот тут то и пригодилась ардуина, за 5 минут был написан скетч, подключен дисплей и плата переехала на работу. Конечно получилось из пушки по воробьям, но на тот момент это было самое быстрое решение. Потом я заказал с десяток ProMini по 100 рублей и хотел перенести на одну из них скетч, но как известно, нет ничего более постоянного чем временное и моя лень так и не дала мне этого сделать. Дома же пришлось довольствоваться сторублевыми платами, благо кроме количества выводов, памяти, и отсутствия USB-UART преобразователя они ничем особо от меги и не отличались.

Но выводов стало нехватать и однажды бродя по просторам банггуда я наткнулся на Arduino DUE. Цена ее была чуть выше чем на Mega2560 и я незамедлительно ее купил. Основным отличием ее от других ардуин является то, что внутри у нее 32-х битный ARM микроконтроллер архитектуры Cortex-M3 работающий на частоте 84 МГц.

Посылка добралась за 27 дней, плата была завернута в несколько слоев пупырки и упакована в типичный желтый китайский пакет.

Вид спереди:


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

Вид сзади:

Технические характеристики платы (взято с офф. сайта):
Микроконтроллер: AT91SAM3X8E
Рабочее напряжение: 3,3 В
Входное напряжение (рекомендуемое): 7-12 В
Входное напряжение (предельное): 6-20 В
Цифровые Входы/Выходы: 54 (на 12 из которых реализуется выход ШИМ)
Аналоговые входы: 12
Аналоговые выходы: 2 (ЦАП)
Общий выходной постоянный ток на всех входах/выходах: 50 мА
Постоянный ток через вывод 3,3 В: 800 мА
Постоянный ток через вывод 5 В: 800 мА
Флеш-память: 512 КБ доступно всего для пользовательских приложений
ОЗУ: 96 КБ (два банка: 64 КБ и 32 КБ)
Тактовая частота: 84 МГц

Все стандартные интерфейсы, такие как SPI, 1Wire, UART присутствуют.
Более подробно можно почитать

А вот и сам МК покрупнее:

За его программирование отвечает 16-я мега с кварцем на 16 МГц:

А тактируется он внешним кварцем:


Как подсказал комрад Angrim, 84 МГц получаются умножением на 7 исходных 12-ти.

Важной особенностью является то, что в отличие от других плат Arduino, Arduino Due работает от 3,3 В. Максимальное напряжение, которое выдерживают вход/выходы составляет 3,3 В.
В принципе большинство датчиков могут работать от 3,3 вольт, но некоторые шилды работать не будут.
В прочем всегда можно докупить вот такие штуки: благо 5V на плате имеется.

Для написания скетчей и их заливки нужно скачать Arduino 1.5.8 BETA, с поддержкой DUE. Однако стоит отметить что не все библиотеки написанные под другие версии ардуино нормально работают с DUE. У меня библиотека работы с датчиком BMP180 нормально работавшая с мегой, выдавала нереальные данные, пришлось качать библиотеку от Adafruit. Также заметил что не всегда после подачи питания МК начинает исполнение программы, иногда нужно жать reset. Чей это глюк, бета версии IDE или китайской платы я не знаю.

Тесты

Сначала для проверки я залил скетч, опрашивающий датчик BMP180 и записывающий данные с него (давление и температуру) на флешку.


Все заработало, правда, как я писал выше, пришлось использовать библиотеку Adafruit.

Результат

Ну и конечно, как же не воспользоваться встроенным ЦАПом!
Для этого заливаем пример SimpleAudioPlayer, подключаем флешку с залитым waw файлом test.waw, а вывод DAC0 вместе с землей подключаем к усилителю. В моем случае в роли усилителя был портативный динамик, полученный по акции от Pringles. Выводы просто примотал к джеку двумя резисторами по 10 кОм т.к. на прямую динамик жестко перегружался.

Радуемся музыке из колонки!


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

Ну и в качестве итога рассмотрим плюсы и минусы данной ардуины
Плюсы:
- Низкая стоимость
- 32 битный контроллер и частота 84 МГц.
- Наличие ЦАП 12 бит 1Msps
- 12 битные АЦП
- Собственный USB

Минусы:
- 3.3V рабочее напряжение (несовместимость с некоторыми шилдами/устройствами)
- Несовместимость с некоторыми библиотеками.
- Иногда после подачи питания нужно нажать reset чтобы программа запустилась

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

Всем спасибо за внимание!

Планирую купить +60 Добавить в избранное Обзор понравился +51 +107 Ещё одно готовое устройство от Arduino для конструкторов электронных игрушек, оригинальных и полезных конструкций, малых систем автоматизации. Примечательна установленным 32-битным микроконтроллером SAM3X8E ARM Cortex-M3. Оценим её возможности и возможные сферы применения.
Вид платы сверху


Разъёмы и выводы
  • 0-52. Расположены сверху и справа. Каждый из выводов может быть запрограммирован в качестве дискретного входа или выхода. Уровень напряжения выводов 3,3 В, ток в выходных цепях 3-15 мА, а во входных 6-9 мА.
  • Выводы (communication) 0, 19, 17, 15 (Rx) и 1, 18, 16, 14 (Tx) могут быть запрограммированы для обмена данными по последовательному интерфейсу с уровнем напряжения TTL (3,3 В) (RX – приём, TX – передача). На плате установлен преобразователь USB-UART, выполненный на микросхеме ATMega16U2, выводы которой подключены к выводам 0 и 1 платы. Интерфейс является USB-портом для программирования.
  • Выводы (PWM) со 2 по 13 можно сконфигурировать как аналоговые выходы с невысоким 8-битным разрешением. Вид выходного сигнала – ШИМ, а значит для подключения исполнительных устройств потребуется дополнительная согласующая схема.
  • Штыревой разъём SPI справа от микроконтроллера. Особенность этого интерфейса в том, что его нельзя использовать для внутрисхемного программирования, а исключительно для связи с другими устройствами.
  • Выводы CANRX, CANTX в самом низу, справа. Линии обмена данными по протоколу CAN. Протокол широко используется в бортовых сетях автомобилей, промышленной электронике.
  • Интерфейс связи TWI/I 2 C может быть подключен к выводам 20 (SDA), 21(SCL). Отметим, что к выводам на плате подключены подтягивающие резисторы 100 кОм, по умолчанию отключенные. Необходимо подключать резисторы при организации сетевого обмена.
  • Выводы А0–А11 внизу – аналоговые входы. Обрабатывающий сигналы с этих входов АЦП 12-битный, а значит входы могут использоваться в достаточно серьёзных приложениях. Стоит отметить, что конфигурация по умолчанию 10 бит, смена разрешения выполняется программным способом. Ещё одно замечание – для использования вывода AREF следует удалить из схемы резистор BR1.
  • На плате всего 2 полноценных 12-битных аналоговых выхода DAC1 и DAC2.
  • Вывод RESET при подаче низкого уровня инициирует перезагрузку контроллера.
  • Вверху, слева от вывода 13, расположен вывод AREF – опорное напряжение АЦП и выводы SDA1, SCL1 для интерфейса TWI1/I 2 C1.
В выводы могут устанавливаться платы расширения (шилды). Подключать можно весь спектр устройств Arduino: дисплеи, Ethernet-модули, клавиатуры и т.д. Создавая плату, компания обеспечила совместимость с устройствами расширения для других серий. Правда есть одно НО. Уровень напряжения на выводах не должен превышать 3,3 В. Информацию о рабочем уровне напряжения для плат расширения выдаёт выход IOREF, а подключаемая плата должна задействовать встроенный преобразователь уровня. Обращайте на это внимание при выборе шилда, если уровень 3,3 В не поддерживается, то подключать к Arduino Due устройство не рекомендуется.
Раз уж затронули тему уровней напряжения, то давайте разберёмся с питанием платы. Во-первых, внешнее питание на плату может быть подано либо от внешнего источника, либо от USB. Напряжение питание должно лежать в диапазоне 6-20 В, оптимальное – 7-12 В.
Выводы питающих напряжений находятся внизу, чуть левее микроконтроллера.
  • VIN – линия «+» внешнего источника питания.
  • 5V – напряжение +5 В, выдаваемое стабилизатором напряжения, максимальный ток Iмакс = 800 мА.
  • 3.3V - напряжение +3,3 В от того же стабилизатора, максимальный ток Iмакс = 800 мА.
  • GND – земля.
На плате установлены 2 USB-порта, предназначенные для обмена данными с компьютером или подключения поддерживающих интерфейс USB периферийных устройств.
Память
На плате размещены микросхемы оперативной памяти (SRAM) объёмом 96 кб, и флэш-памяти программ 512 кб. Адресное пространство единое для всей памяти. Стоит учесть, что есть возможность подключить внешнюю SD-карту, используя интерфейс TWI1/I 2 C1 и картридер.
Органы управления
На плате установлена кнопка Reset для стирания программы, записанной в ПЗУ.
Габаритные размеры
Плата имеет размеры 10,2х5,4 см, три крепёжных отверстия.

Сфера применения

Применение такого устройства будет оправдано:
  • Для обучения работе с микроконтроллерами школьников и студентов.
  • Для построения разнообразных роботов, квадрокоптеров или иных умных устройств конструкторами-любителями.
  • Для создания систем «Умного дома». Возможность создания локального пульта управления (на сенсорном дисплее или обычном и клавиатуре), достаточное количество входов-выходов для подключения датчиков и исполнительных устройств, возможность организации удалённого управления через Интернет – всё есть для реализации такого решения. В пользу его говорят и завышенные цены на готовые системы «умного дома». Можем посоветовать тем, кто решит использовать Arduino Due в этих целях, обратить внимание на бесплатную систему контроля и мониторинга Tesla Scada для ПК и мобильных устройств. Использование в качестве концентратора датчиков и интеллектуального устройства в системе интернета вещей (IoT). Готовые решения для Arduino есть у IBM. Это и библиотеки для Arduino IDE – Arduino Client for MQQT , и брокер для тестирования Mosquitto , и платформа IBM Internet of Things Foundtation .
Однако, стоит рассмотреть и ядро платы – 32-битный микроконтроллер, ведь именно он является главной «изюминкой» Arduino Due.

Как уже упоминалось выше, работа с платой возможна из-под Atmel IDE, но есть и собственная среда разработки IDE . Кроме того, необходимо разобраться как подключиться и отлаживать устройство.
Первый нюанс заключается в том, что для заливки новой прошивки требуется стереть старую во флэш-памяти.
Второй в используемом для загрузки USB-порте. На приведённом в начале статьи рисунке, слева можно увидеть 2 порта. Для программирования следует использовать нижний.
В остальном процесс создания проекта и отладки стандартен для устройств Arduino. Необходимыми предпосылками для успешной работы с устройством будет:
  • Формулировка задачи. Требуется определить какое устройство будет получено на выходе, какими функциями оно будет обладать.
  • Определение необходимых плат расширения. Для расширения функциональности и повышения удобства работы с готовым устройством могут потребоваться специальные шилды – дисплеи, внешняя память, модули связи и т.п. Помните про совместимость по уровню напряжения!
  • Состав оборудования определён, теперь необходимо всё увязать в единое устройство. Для этого, возможно, потребуется изготовить электронные платы сопряжения, подготовить шлейфы для связи, изготовить или купить конструкцию для размещения электронной начинки.
  • Подбор датчиков и исполнительных устройств, разработка подвижной конструкции. Для случаев летающих, ездящих, шагающих или плавающих устройств задача может быть очень нетривиальной.
  • Написание программы, загрузка её в плату, тестирование, отладка и удовлетворение от качественно проделанной работы.

    Arduino Due - представляет более серьезное решение, по сравнению с . Это первая плата Arduino на основе 32-разрядного ядра.

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

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

    Подключение

    Для подключения к компьютеру понадобится .

    Питание

    Arduino Due может быть запитан от USB, через , либо от внешнего источника питания: , , штекер которого (Ø 2,1 мм, центральный вывод - положительный) необходимо подключить к силовому разъему питания. Если внешним источником питания служит аккумуляторная батарея, то её нужно подключить к выводам Vin и GND. Тип источника питания выбирается автоматически.

    Подробнее о плате

    Arduino Due построена на базе 32-разрядного микроконтроллера Atmel SAM3X8E ARM Cortex-M3 с тактовой частотой 84МГц. В отличии от большинства плат Arduino, Arduino Due работает от 3,3 В, имеет 2 порта I2C, порт CAN, 2 аналоговых выхода (ЦАП), 2 порта microUSB с поддержкой USB OTG - возможность подключения других USB-устройств к USB порту. Наличие контроллера DMA позволяет освободить процессор от ресурсоемких задач. Помимо кнопки Reset имеется кнопка Erase (бортового стирания) удержание которой в течении нескольких секунд, при наличии питания, приведет к аппаратному стиранию данных из Flash-памяти. Загрузчик прошивается на заводе изготовителе в специально для него выделенную область памяти. Следует учесть, что наличие напряжения больше 3,3В на любом входе, может повредить плату.

    Программное обеспечение

    Скачать (загрузить) программу Arduino IDE для создания, редактирования и загрузки скетчей в Arduino или Genuino, Вы можете с

    Общие сведения

    Arduino Due - это устройство на основе микропроцессора Atmel SAM3X8E ARM Cortex-M3 (datasheet). Это первая плата Ардуино на базе 32-разрядного микроконтроллера ARM. В ее состав входят 54 цифровых вывода (из которых 12 могут работать в качестве ШИМ-выходов), 12 аналоговых входов, 4 UART (аппаратных приемопередатчика, осуществляющих последовательную передачу данных), генератор тактовой частоты на 84 МГц, USB с поддержкой технологии OTG, 2 ЦАП (цифро-аналоговых преобразователя), 2 TWI, разъем питания, разъем SPI, разъем JTAG, кнопка сброса и кнопка очистки памяти.

    Внимание: в отличие от других плат Ардуино, рабочее напряжение Arduino Due составляет 3.3В. Соответственно, максимальное напряжение, которое могут выдержать его выводы, равно 3.3В. Подача на вывод большего напряжения (например, 5В) может привести к выходу платы из строя.

    В состав устройства входит все необходимое для обеспечения работы микроконтроллера; для начала работы достаточно просто подать питание от AC/DC-адаптера или батарейки, либо подключить его к компьютеру посредством USB-кабеля. Arduino Due совместим со всеми платами расширения, работающими от 3.3В, и соответствует требованиям распиновки 1.0:

    • Выводы SDA и SCL (TWI) расположены возле вывода AREF.
    • Присутствует вывод IOREF, позволяющий платам расширения подстраиваться под рабочее напряжение Ардуино. Благодаря этому, платы расширения могут быть совместимы как с 3.3В-Ардуино (подобными Due), так и с 5В-Ардуино на основе микроконтроллеров AVR.
    • Предусмотрен свободный вывод, зарезервированный для будущих целей.

    Преимущества использования ядра ARM

    Благодаря использованию 32-разрядного ядра ARM, Arduino Due во многом превосходит типичные платы на базе 8-разрядных микроконтроллеров. Наиболее существенные отличия заключаются в следующем:

    • 32-битное ядро позволяет обрабатывать 4х-байтовые данные всего за один такт. (Для получения более подробной информации см. описание типа int).
    • Тактовая частота - 84 МГц.
    • Объем оперативной памяти SRAM составляет 96 КБайт.
    • Объем флеш-памяти программ - 512 КБ.
    • Наличие DMA-контроллера, позволяющего разгрузить центральный процессор от выполнения ресурсоемких операций с памятью.

    Схема, исходный проект и расположение выводов

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

    Микроконтроллер AT91SAM3X8E
    Рабочее напряжение 3.3В
    Напряжение питания (рекомендуемое) 7-12В
    Напряжение питания (предельное) 6-16В
    Цифровые выводы 54 (из них 12 могут работать как ШИМ-выходы)
    Аналоговые входы 12
    Аналоговые выходы 2 (ЦАП)
    Суммарный выходной ток всех выводов (максимальный) 130 мА
    Максимальный выходной ток вывода 3.3V 800 мА
    Максимальный выходной ток вывода 5V 800 мА
    Flash-память 512 КБ в полном объеме доступна пользовательским программам
    SRAM 96 КБ (два банка памяти: 64 КБ и 32 КБ)
    Тактовая частота 84 МГц

    Питание

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

    В качестве внешнего источника питания (не USB) может использоваться сетевой AC/DC-адаптер или аккумулятор/батарея. Штекер адаптера (диаметр - 2.1мм, центральный контакт - положительный) необходимо вставить в соответствующий разъем питания на плате. В случае питания от аккумулятора/батареи, ее провода необходимо подсоединить к выводам Gnd и Vin разъема POWER.

    Напряжение внешнего источника питания может быть в пределах от 6 до 20 В. Однако, уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. С учетом этого, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.

    Ниже перечислены выводы питания, расположенные на плате:

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

    Память

    Объем флеш-памяти программ микроконтроллера SAM3X составляет 512 КБ (2 блока по 256 КБ). Устройство выпускается с прошитим загрузчиком, расположенном в отдельной памяти ПЗУ. Объем доступной оперативной памяти SRAM составляет 96 КБ, представляющих собой два смежных банка памяти по 64 КБ и 32 КБ соответственно. Вся доступная память (Flash, ОЗУ и ПЗУ) имеет общее линейное адресное пространство.

    Кнопка удаления, расположенная на плате, позволяет очистить Flash-память микроконтроллера SAM3X и стереть текущую загруженную программу. Для этого необходимо нажать и удерживать ее в течение нескольких секунд.

    Входы и выходы

    • Цифровые входы/выходы: выводы 0 - 53
    • Интерфейс SPI: выводы SPI (на платах Ардуино разъем ICSP)
    • Интерфейс CAN: выводы CANRX и CANTX

    Данные выводы поддерживают протокол связи CAN, однако на данный момент его реализация в Arduino API пока отсутствует.

    • "L" светодиод: вывод 13

    Встроенный светодиод, подсоединенный к выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW - выключается. Помимо этого, яркость свечения светодиода можно регулировать, поскольку вывод 13 может работать как ШИМ-выход.

    • Интерфейс TWI 1: выводы 20 (SDA) и 21 (SCL)
    • Интерфейс TWI 2: выводы SDA1 и SCL1

    Другие выводы на плате:

    • AREF

    Опорное напряжение АЦП. Используется функцией analogReference() .

    • Reset

    Формирование низкого уровня (LOW) на этом выводе приведет к перезагрузке микроконтроллера. Обычно этот вывод служит для функционирования кнопки сброса на платах расширения.

    Связь

    Arduino Due предоставляет ряд возможностей для осуществления связи с компьютером, еще одним Ардуино или другими микроконтроллерами, а также с различными устройствами, такими, как телефоны, планшеты, камеры и т.д. В микроконтроллере SAM3X есть один аппаратный UART и три аппаратных USART для реализации последовательных интерфейсов с TTL-уровнем напряжения 3.3В.

    USB-порт для программирования на плате взаимодействует с микросхемой ATmega16U2, выполняющую роль USB-UART преобразователя, который при подключении к компьютеру определяется как виртуальный COM-порт. (Для корректной идентификации на Windows-системах потребуется.inf-файл, на системах с OSX и LINUX плата распознается автоматически). Микросхема 16U2 соединена с аппаратным приемопередатчиком UART микроконтроллера SAM3X. Для программирования микроконтроллера через микросхему ATmega16U2 используются выводы RX0 и TX0. В пакет программного обеспечения Ардуино входит специальная программа, позволяющая считывать и отправлять на Ардуино простые текстовые данные. При передаче данных через микросхему-преобразователь USB-UART во время USB-соединения с компьютером, на плате будут мигать светодиоды RX и TX. (При последовательной передаче данных посредством выводов 0 и 1, без использования USB-преобразователя, данные светодиоды не задействуются).

    В микроконтроллере SAM3X также реализована поддержка последовательных интерфейсов TWI и SPI. В программное обеспечение Ардуино входит библиотека Wire, позволяющая упростить работу с шиной I2C; для получения более подробной информации см. документацию. Для работы с интерфейсом SPI используйте библиотеку SPI.

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

    Процесс загрузки программ в микроконтроллер SAM3X отличается от процесса прошивки AVR-микроконтроллеров, используемых в других платах Ардуино. Особенность SAM3X заключается в том, что для его перепрошивки требуется предварительно очищать Flash-память контроллера. Такая необходимость обусловлена тем, что процесс загрузки программы контролируется загрузчиком в ПЗУ SAM3X, который запускается только при условии отсутствия программы во Flash-памяти микроконтроллера.

    Таким образом, любой из USB-портов может использоваться для прошивки платы. Тем не менее, рекомендуется использовать USB-порт для программирования ("Programming Port" на рисунке) в силу некоторых особенностей процесса очистки памяти микроконтроллера:

    • Порт для программирования: Для использования этого порта в среде разработки Arduino IDE в качестве рабочей платы выберите "Arduino Due (Programming Port)". Подсоедините Due к компьютеру, соединив USB-кабель c разъемом для программирования (расположенным ближе к разъему питания). Порт для программирования взаимодействует с микросхемой 16U2, выполняющей роль преобразователя USB-UART. Микросхема 16U2 в свою очередь соединена с первым UART микроконтроллера SAM3X (выводы RX0 и TX0), а также управляет его выводами Reset и Erase. При открытии и закрытии порта на скорости 1200 бод, на выводах Erase и Reset формируется активный уровень, что приводит к очистке памяти микроконтроллера. Таким образом, срабатывает так называемая процедура "аппаратной очистки" перед взаимодействием с UART SAM3X. Этот способ более надежен, чем "программная очистка" при использовании штатного USB-порта, и работает даже в случае зависания процессора. Именно поэтому для прошивки Arduino Due рекомендуется использовать порт для программирования.
    • Штатный USB-порт: Для использование этого порта в среде разработки Arduino IDE в качестве рабочей платы выберите "Arduino Due (Naive USB Port)". Штатный USB-порт соединен непосредственно с микроконтроллером SAM3X. Подсоедините Due к компьютеру, соединив USB-кабель со штатным USB-разъемом (расположенным ближе к кнопке сброса). Открытие и закрытие порта на скорости 1200 бод приведет к срабатыванию процедуры "программной очистки", во время которой очищается flash-память, перезагружается микроконтроллер и стартует загрузчик. Поскольку эта процедура выполняется исключительно программой самого микроконтроллера SAM3X, то в случае зависания последнего процесс очистки может не произойти. При этом открытие/закрытие штатного порта на различных скоростях не поможет перезагрузить микроконтроллер.

    В отличие от других плат Ардуино, для программирования которых используется avrdude, процесс прошивки Arduino Due осуществляется с помощью программы .

    Исходный код прошивки микроконтроллера ATmega16U2 доступен в репозитории Ардуино . Прошить микроконтроллер можно через разъем для внутрисхемного программирования ISP с помощью внешнего программатора (в этом случае затрется DFU-загрузчик).

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

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

    Физические характеристики и совместимость с платами расширения

    Максимальная длина и ширина печатной платы Arduino Due составляет 10.2 см и 5.4 см соответственно, с учетом USB-разъемов и разъема питания, выступающих за пределы платы. Три крепежных отверстия позволяют прикреплять плату к поверхности или корпусу. Обратите внимание, что расстояние между цифровыми выводами 7 и 8 не кратно традиционным 2.54 мм и составляет 4 мм.

    Arduino Due спроектирован таким образом, чтобы обеспечивать совместимость с большинством плат расширения для Uno, Diecimila или Duemilanove. Расположение основных выводов платы полностью эквивалентно: цифровые выводы 0 - 13 (а также смежные выводы AREF и GND), аналоговые входы 0 - 5, разъем POWER и разъем "ICSP" (SPI) - все выводы расположены на одинаковых расстояниях друг относительно друга. Кроме того, линии основного приемопередатчика UART соединены с одними и теми же выводами (0 и 1). Пожалуйста, обратите внимание, что номера выводов I2C на Arduino Due (20 и 21) отличаются от выводов Duemilanove / Diecimila (аналоговые входы 4 и 5).

    Подробная инструкция по работе с Arduino Due (на англ.)

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

    Внимание : в отличие от других плат Arduino, плата Arduino Due работает с напряжением 3,3В. Максимальное напряжение, которое можно подавать на входные/выходные выводы, составляет 3,3В. Подача на входные/выходные выводы напряжений выше 3,3В может привести к выходу платы из строя.

    Плата содержит всё необходимое для работы с микроконтроллером; для того, чтобы начать работу с ней, просто подключите ее к компьютеру с помощью microUSB кабеля или подайте питание от блока питания AC/DC или от батареи. Arduino Due совместима со всеми платами расширения Arduino, которые работают с 3,3В, и совместима с распиновкой Arduino версии 1.0.

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

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

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

    Схемы, разводка платы, размеры

    Arduino Due является открытой аппаратной платформой. Вы можете изготовить собственную плату, используя следующие файлы:

    Преимущества архитектуры ARM

    • 32-битное ядро, что позволяет выполнять операции с 4-байтными данными за один такт CPU;
    • тактовая частота CPU составляет 84 МГц;
    • 96 килобайт SRAM;
    • 512 килобайт флеш-памяти для кода программ;
    • DMA контроллер, что может освободить CPU от выполнения задач по интенсивной работе с памятью.

    Питание

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

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

    Плата может работать от внешнего питания от 6 до 20 вольт. Если подается питание меньше, чем 7 вольт, то на выводе 5V питание может составлять менее пяти вольт, и плата может начать работать нестабильно. Если используется питание более 12В, регулятор напряжения может перегреться и повредить плату. Рекомендуется использовать напряжение питания в диапазоне от 7 до 12 вольт.

    Выводы питания:

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

    Память

    SAM3X обладает 512 килобайтами (2 блока по 256 Кб) флэш-памяти для хранения кода программы. Загрузчик заранее прошит на заводе Atmel и хранится в выделенной для этого ROM памяти. Доступная SRAM память расположена в двух смежных банках 64 Кб и 32 Кб. Вся доступная память (Flash, RAM и ROM) может быть доступна напрямую через плоское адресное пространство.

    Также возможно стирание флеш-памяти SAM3X с помощью кнопки стирания, расположенной на плате. Это удалит из MCU загруженный код программы. Чтобы стереть код, нажмите и удерживайте кнопку Erase несколько секунд при поданном на плату питании.

    Входы и выходы

    Каждый из 54 цифровых выводов Arduino Due может быть использован и как вход, и как выход, с помощью функций pinMode() , digitalWrite() и digitalRead . Они работают с напряжением 3,3 вольта. Каждый вывод может обеспечить ток (в качестве источника) от 3 мА до 15 мА в зависимости от вывода, а также потреблять ток от 6 мА до 9 мА в зависимости от вывода. Они также имеют внутренний подтягивающий резистор (по умолчанию отключен) 100 кОм.

    Также некоторые выводы обладают специальными функциями:

    • последовательный порт: 0 (RX) и 1 (TX); последовательный порт 1: 19 (RX) и 18 (TX); последовательный порт 2: 17 (RX) и 16 (TX); последовательный порт 3: 15 (RX) и 14 (TX) . Выводы используются для приема (RX) и передачи (TX) последовательных данных с TTL уровнями 3,3 вольта. Выводы 0 и 1 также подключены к соответствующим выводам преобразователя USB-TTL на ATmega16U2;
    • ШИМ: выводы со 2 по 13 . Обеспечивают 8-битный ШИМ выход с помощью функции analogWrite() . Разрешение ШИМ может быть изменено с помощью функции analogWriteResolution() ;
    • SPI: разъем SPI (разъем ICSP на других платах Arduino) . Эти выводы поддерживают связь через SPI с помощью соответствующей библиотеки. SPI выводы подключены к 6-пиновому разъему в центре, который физически совместим с платами Arduino Uno, Leonardo и Mega2560. Разъем SPI может использоваться только для связи с другими SPI устройствами, но не для программирования SAM3X по технологии внутрисхемного программирования. SPI в Arduino Due обладает расширенными возможностями, которые могут использоваться с расширенных SPI методов для Due;
    • CAN: CANRX и CANTX . Эти выводы поддерживают связь по протоколу CAN, но он еще не поддерживается Arduino API;
    • светодиод: 13 . Встроенный светодиод подключен к цифровому выводу 13. При высоком уровне на выводе светодиод загорается, при низком - гаснет. Также возможно менцание светодиода, так как цифровой вывод 15 является еще и ШИМ выходом;
    • TWI 1: 20 (SDA) и 21 (SCL), TWI 2: SDA1 и SCL1 . Поддерживают связь через TWI с помощью библиотеки Wire . SDA1 и SCL1 могут управляться с помощью класса Wire1 , поставляемого библиотекой Wire . В отличие от SDA и SCL, имеющих внутренние подтягивающие резисторы, SDA1 и SCL1 такими резисторами не обладают. Поэтому для использования Wire1 необходимо добавление двух подтягивающих резисторов на линии SDA1 и SCL1;
    • Аналоговые входы: выводы от A0 до A11 . Arduino Due обладает 16 аналоговыми входами, каждый из которых обеспечивает 12-битное разрешение (т.е. 4096 разных значений). По умолчанию для совместимости с другими платами Arduino разрешение чтения устанавливается равным 10 бит. Разрешение АЦП можно изменить с помощью функции analogReadResolution() . Аналоговые входы Arduino Due измеряют напряжение от 0 до максимального значения 3,3 вольт. Подача напряжения более 3,3В на выводы Arduino Due может вывести из строя микросхему SAM3X. Функция analogReference() игнорируется платой Arduino Due. Вывод AREF подключен к выводу опорного аналогового напряжения SAM3X через резисторный мост. Для использования вывода AREF необходимо выпаять резистор BR1 на плате;
    • DAC1 и DAC2 . Эти выводы обеспечивают настоящие аналоговые выходы с 12-битным разрешением (4096 уровней) с помощью функции analogWrite() . Эти выводы могут использоваться для создания аудиовыхода с помощью библиотеки Audio .

    Еще пара выводов:

    • AREF . Опорное напряжение для аналоговых входов. Используется совместно с analogReference() ;
    • Reset . Низкий уровень на этом выводе приводит к перезагрузке микроконтроллера. Обычно используется для добавления кнопки сброса на платы расширения, закрывающей доступ к кнопке сброса на самой плате Arduino.
    Таблица соответствия между выводами Arduino Due и портами SAM3X
    Номер вывода Arduino Due Название вывода SAM3X Название соответствующего вывода Arduino Due Максимальный выходной ток (мА) Максимальный потребляемый ток (мА)
    0 PA8 RX0 3 6
    1 PA9 TX0 15 9
    2 PB25 Цифровой вывод 2 3 6
    3 PC28 Цифровой вывод 3 15 9
    4 Подключен и к PA29 , и к PC26 Цифровой вывод 4 15 9
    5 PC25 Цифровой вывод 5 15 9
    6 PC24 Цифровой вывод 6 15 9
    7 PC23 Цифровой вывод 7 15 9
    8 PC22 Цифровой вывод 8 15 9
    9 PC21 Цифровой вывод 9 15 9
    10 Подключен и к PA28 , и к PC29 Цифровой вывод 10 15 9
    11 PD7 Цифровой вывод 11 15 9
    12 PD8 Цифровой вывод 12 15 9
    13 PB27 Цифровой вывод 13 / желтый светодиод "L" 3 6
    14 PD4 TX3 15 9
    15 PD5 RX3 15 9
    16 PA13 TX2 3 6
    17 PA12 RX2 3 6
    18 PA11 TX1 3 6
    19 PA10 RX1 3 6
    20 PB12 SDA 3 6
    21 PB13 SCL 3 6
    22 PB26 Цифровой вывод 22 3 6
    23 PA14 Цифровой вывод 23 15 9
    24 PA15 Цифровой вывод 24 15 9
    25 PD0 Цифровой вывод 25 15 9
    26 PD1 Цифровой вывод 26 15 9
    27 PD2 Цифровой вывод 27 15 9
    28 PD3 Цифровой вывод 28 15 9
    29 PD6 Цифровой вывод 29 15 9
    30 PD9 Цифровой вывод 30 15 9
    31 PA7 Цифровой вывод 31 15 9
    32 PD10 Цифровой вывод 32 15 9
    33 PC1 Цифровой вывод 33 15 9
    34 PC2 Цифровой вывод 34 15 9
    35 PC3 Цифровой вывод 35 15 9
    36 PC4 Цифровой вывод 36 15 9
    37 PC5 Цифровой вывод 37 15 9
    38 PC6 Цифровой вывод 38 15 9
    39 PC7 Цифровой вывод 39 15 9
    40 PC8 Цифровой вывод 40 15 9
    41 PC9 Цифровой вывод 41 15 9
    42 PA19 Цифровой вывод 42 15 9
    43 PA20 Цифровой вывод 43 3 6
    44 PC19 Цифровой вывод 44 15 9
    45 PC18 Цифровой вывод 45 15 9
    46 PC17 Цифровой вывод 46 15 9
    47 PC16 Цифровой вывод 47 15 9
    48 PC15 Цифровой вывод 48 15 9
    49 PC14 Цифровой вывод 49 15 9
    50 PC13 Цифровой вывод 50 15 9
    51 PC12 Цифровой вывод 51 15 9
    52 PB21 Цифровой вывод 52 3 6
    53 PB14 Цифровой вывод 53 15 9
    54 PA16 Аналоговый вход 0 3 6
    55 PA24 Аналоговый вход 1 3 6
    56 PA23 Аналоговый вход 2 3 6
    57 PA22 Аналоговый вход 3 3 6
    58 PA6 Аналоговый вход 4 3 6
    59 PA4 Аналоговый вход 5 3 6
    60 PA3 Аналоговый вход 6 3 6
    61 PA2 Аналоговый вход 7 3 6
    62 PB17 Аналоговый вход 8 3 6
    63 PB18 Аналоговый вход 9 3 6
    64 PB19 Аналоговый вход 10 3 6
    65 PB20 Аналоговый вход 11 3 6
    66 PB15 DAC0 3 6
    67 PB16 DAC1 3 6
    68 PA1 CANRX 3 6
    69 PA0 CANTX 15 9
    70 PA17 SDA1 3 6
    71 PA18 SCL2 15 9
    72 PC30 светодиод "RX" 15 9
    73 PA21 светодиод "TX" 3 6
    74 PA25 (MISO) 15 9
    75 PA26 (MOSI) 15 9
    76 PA27 (SCLK) 15 9
    77 PA28 (NPCS0) 15 9
    78 PB23 (не подключен) 15 9
    USB PB11 ID 15 9
    USB PB10 VBOF 15 9

    Связь

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

    Порт программирования подключен к микроконтроллеру ATmega16U2, который обеспечивает виртуальный COM порт для связи с программным обеспечением на компьютере (для опознания устройства Windows машинам понадобится inf-файл, машины на OSX и Linux определят плату, как COM порт, автоматически). ATmega16U2 также подключена к аппаратному порту UART SAM3X. Последовательный порт на выводах RX0 и TX0 обеспечивает связь COM-USB для программирования платы через микроконтроллер ATmega16U2. Arduino IDE включает в себя монитор последовательного порта, который позволяет посылать и принимать от платы простые текстовые данные. Светодиоды RX и TX на плате загораются при передаче данных через микросхему ATmega16U2 и USB соединение (но не при передаче данных через выводы 0 и 1 последовательного порта).

    Собственный USB порт подключен к SAM3X. Это позволяет использовать последовательную (CDC) связь поверх USB. Это обеспечивает последовательное соединение с монитором последовательного порта или с другими приложениями на вашем компьютере. Это также позволяет Arduino Due имитировать USB мышь или клавиатуру, подключенную к компьютеру. Для использования этой возможности посмотрите на документацию библиотек Mouse и Keyboard .

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

    SAM3X также поддерживает связь через TWI и SPI. Arduino IDE включает в себя библиотеку Wire для упрощения использования шины TWI. Для связи через SPI используется библиотека SPI .

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

    Arduino Due может быть прошит с помощью Arduino IDE.

    Загрузка скетчей на SAM3X отличается от загрузки на AVR микроконтроллеры, установленные на другие платы Arduino, так как перед перепрограммированием необходимо стереть флеш-память. Загрузка кода управляется памятью ROM в SAM3X, которая запускается, только когда флеш-память контроллера пуста.

    Плату можно запрограммировать через любой из USB портов, хотя рекомендуется использовать порт программирования, так как он поддерживает стирание микросхемы:

    • Порт программирования: для использования этого порта выберите в Arduino IDE "Arduino Due (Programming Port)". Подлкючите Arduino Due к вашему компьютеру через порт программирования (ближайший к разъему питания). Порт программирования использует ATmega16U2 в качестве преобразователя "USB - последовательный порт", подключенного к первому порту UART SAM3X (RX0 и TX0). У ATmega16U2 есть два вывода, подключенных к выводам Reset и Erase SAM3X. Открытие и закрытие порта программирования, подключенного на скорости 1200 бит/с, вызывает процедуру «аппаратного стирания» микросхемы SAM3X, активируя выводы Erase и Reset SAM3X перед установлением соединения через UART. Рекомендуется использовать этот порт для программирования Arduino Due. Этот способ более надежен, чем «программное стирание», которое используется совместно с собственным портом, и будет работать, даже если главный микропроцессор будет поврежден.
    • Собственный порт: для использования этого порта выберите в Arduino IDE "Arduino Due (Native USB Port)". Собственный USB порт подключен непосредственно к SAM3X. Подлкючите Arduino Due к вашему компьютеру через собственный USB порт (ближайший к кнопке перезагрузки). Открытие и закрытие собственного порта, подключенного на скорости 1200 бит/с, вызывает процедуру «программного стирания»: флеш-память стирается и плата перезапускается с загрузчиком. Если MCU по какой-то причине поврежден, то, вероятно, программное стирание работать не будет, так как эта процедура в SAM3X выполняется полностью программно. Открытие и закрытие собственного порта на других скоростях передачи не приводит к перезагрузке SAM3X.

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

    Прошивка ATmega16U2 доступна в репозитории Arduino. Вы можете использовать разъем ISP с внешним программатором (перезаписывающим DFU загрузчик).

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

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



Просмотров