====== Arduino M0 Pro ======
[[amp>product/arduino-m0-pro?utm_source=man&utm_campaign=arduino-m0-pro&utm_medium=wiki|Arduino M0 Pro]] — платформа для разработки на базе микроконтроллера {{:продукты:arduinom0:atsamd21g18_datasheet.pdf|ATSAMD21G18}} с вычислительным ядром ARM Cortex® M0!
{{ :продукты:arduino-m0-pro:arduino-m0-pro.1.jpg?nolink |}}
Это расширенная версия [[amp>product/arduino-m0?utm_source=man&utm_campaign=arduino-m0-pro&utm_medium=wiki|Arduino M0]] с продвинутыми инструментами отладки на борту. Отладка скетчей выполняется в режиме реального времени, а [[https://www.arduino.cc/en/Hacking/Bootloader|bootloader]] восстанавливается без дополнительного оборудования и внешних программаторов.
===== Подключение и настройка =====
Для работы с платформой Arduino M0 Pro в операционной системе Windows [[:установка-и-настройка-Arduino-ide|скачайте и установите]] на компьютер интегрированную среду разработки Arduino — Arduino IDE.
==== Добавление платформы ====
По умолчанию среда Arduino IDE настроена только на AVR-платы. Для работы с платформой Arduino M0 Pro — [[:arduino-ide:boards-manager#добавление_плат_с_ядром_cortex-m0|добавьте в менеджере плат поддержку платформ на ядре ARM Cortex-M0+]].
==== Что-то пошло не так? ====
* [[установка-и-настройка-arduino-ide:arduino-m0-restore|У меня не появляется новых устройств при подключении Arduino M0 Pro]]
===== Элементы платы =====
{{ :продукты:arduino-m0-pro:arduino-m0-pro_annotation.png?nolink |}}
==== Микроконтроллер ATSAMD21G18 ====
Платформа Arduino M0 Pro построена на мощном 32-разрядном микроконтроллере {{:продукты:arduino-m0-pro:atsamd21g18_datasheet.pdf|ATSAMD21G18}} с ядром ARM Cortex® M0 компании Microchip (Atmel).
Благодаря 32-разрядному ядру, Arduino M0 Pro во многом превосходит типичные платы на базе 8-разрядных микроконтроллеров.
* 32-битное ядро позволяет обрабатывать 4х-байтовые данные всего за один такт.
* Тактовая частота – 48 МГц.
* Объем флеш-памяти программ – 256 КБ.
* Объем оперативной памяти SRAM – 32 КБ.
* Наличие DMA-контроллера позволяет разгрузить центральный процессор, выполняя ресурсоёмкие операции с памятью.
==== Микроконтроллер AT32UC3A4256 ====
При подключении Arduino M0 Pro к ПК через ''Programming USB'', микроконтроллер {{:продукты:arduino-m0-pro:at32uc3a4256_datasheet.pdf|AT32UC3A4256}} обеспечивает связь микроконтроллера {{:продукты:arduino-m0-pro:atsamd21g18_datasheet.pdf|ATSAMD21G18}} с USB-портом компьютера. В этом режиме становиться доступно {{:продукты:arduino-m0-pro:arduino-m0-pro_debug.pdf|выполнять отладку в режиме реального времени}} и восстанавливать [[https://www.arduino.cc/en/Hacking/Bootloader|bootloader]] без дополнительных программаторов.
==== Пины питания ====
* **VIN:** Напряжение, поступающее в Arduino от внешнего источника питания (не связано с 5 В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, когда устройство запитано от внешнего адаптера.
* **5V:** На вывод поступает напряжение 5 В от стабилизатора напряжения на плате, независимо от того, как запитано устройство: от адаптера (7–14 В), от USB (5 В) или через вывод VIN (7–14 В). Запитывать устройство через выводы ''5V'' или ''3.3V'' не рекомендуется, поскольку в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.
* **3.3V:** 3,3 В от стабилизатора напряжения на плате. Стабилизатор обеспечивает питание микроконтроллера ''ATSAMD21G18''. Максимальный ток равен 1,2 А.
* **GND:** Выводы земли.
* **IOREF:** Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, считанного с вывода IOREF, плата расширения может переключиться на соответствующий источник питания или задействовать преобразователи уровней. Это позволит плате работать как с 5 В, так и с 3,3 В устройствами.
==== Порты ввода/вывода ====
В отличии от большинства плат Arduino, родным напряжением Arduino M0 является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Большее напряжение может повредить микроконтроллер!
Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.
* **Цифровые входы/выходы:** 20 пинов; ''0''–''13'' и ''A0''–''A6''\\ Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 7 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.
* **ШИМ:** 12 пинов; ''2''–''13''\\ Позволяет выводить 8-битные аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ, взаимодействующего с этими выводами, по умолчанию, установлена в 8 бит (для совместимости с другими платами Arduino). Изменить разрядность ШИМ можно с помощью функции [[https://www.arduino.cc/reference/en/language/functions/zero-due-mkr-family/analogwriteresolution/|analogWriteResolution()]]. Одновременно нельзя использовать ШИМ на некоторых парах пинов: ''4'' и ''10'', ''5'' и ''12'', так как каждая парочка висит на общем таймере.
* **АЦП:** 6 пинов; ''A0''–''A5''\\ Позволяет представить аналоговое напряжение в виде 12-битного числа. Разрядность АЦП, взаимодействующего с этими выводами, по умолчанию, установлена в 10 бит (для совместимости с другими платами Arduino). Изменить разрядность АЦП можно с помощью функции [[https://www.arduino.cc/reference/en/language/functions/zero-due-mkr-family/analogreadresolution/|analogReadResolution()]]. На аналоговые входы Arduino M0 можно подавать напряжение в диапазоне от 0 до 3,3 В. При подаче большего напряжения микроконтроллер может выйти из строя.
* **ЦАП:** пин ''DAC(A0)''\\ Аналоговый выход цифро-аналогового преобразователя, который позволяет формировать 10-битные уровни напряжения. Данный вывод может использоваться для [[https://www.arduino.cc/en/Tutorial/SimpleAudioPlayer|создания аудио-выхода]] — для этого используйте библиотеку [[https://www.arduino.cc/en/Reference/Audio|Audio]].
* **TWI/I²C:** пины ''SDA'' и ''SCL''\\ Для общения с периферией по интерфейсу ''I²C''. Для работы используйте библиотеку [[https://www.arduino.cc/en/Reference/Wire|Wire]].
* **SPI:** пины ''11(MOSI)'', ''12(MISO)'' и ''13(SCK)''\\ Для общения с периферией по интерфейсу ''SPI''. Для работы — используйте библиотеку [[https://www.arduino.cc/en/Reference/Spi|SPI]].
* **UART:** пины ''0(RX)'' и ''1(TX)''\\ Используется для коммуникации платы Arduino с компьютером или другими устройствами через класс ''Serial1''. Для связи Arduino M0 Pro с компьютером через порт ''Programming USB'' — используйте класс ''Serial'', а для порта ''Native USB'' — ''SerialUSB''. Для работы — используйте методы библиотеки [[https://www.arduino.cc/en/Reference/Serial|Serial]].
==== Светодиодная индикация ====
^ Имя светодиода ^ Назначение ^
| RX и TX |Мигают при обмене данными между Arduino M0 Pro и компьютером.|
| L | Светодиод вывода ''13''. При задании значения HIGH светодиод включается, при LOW – выключается.|
| ON |Индикатор питания |
| DEBUG |Индикатор отладки |
==== Разъём Programming USB ====
Разъём для прошивки платформы Arduino M0 Pro с помощью компьютера.
Для использования выберите в Arduino IDE в качестве вашей платы "Arduino M0 Pro (Programming Port)". При этом также производится стирание предыдущей прошивки. Аппаратное стирание более надежно, чем «программное стирание», которое происходит на собственном USB порте, и будет работать даже при повреждении главного микропроцессора. В программное обеспечение Arduino входит монитор последовательной шины, который дает возможность компьютеру обмениваться простыми текстовыми сообщениями с платой подключенной через Programming USB посредством контроллера ATmega16U2.
==== Разъём Native USB ====
Разъём для прошивки платформы Arduino M0 Pro с помощью компьютера.
Для использования выберите в Arduino IDE тип вашей платы ''Arduino M0 Pro (Native USB Port)''. Native USB port подключен к SAM21D, тем самым осуществляя последовательную связь (CDC) посредством USB обеспечивая подключение к монитору последовательной шины, или другим приложениям на вашем компьютере. Открытие и закрытие собственного порта при скорости передачи 1200 бит в секунду запускает процедуру «программного стирания»: флеш-память стирается и плата перезапускается с помощью загрузчика. Также это дает платформе возможность эмулировать USB мышь или клавиатуру.
==== Разъём для внешнего питания ====
Разъём для подключения внешнего питания от 7 В до 14 В.
==== Регулятор напряжения 5 В ====
Когда плата подключена к разъёму внешнего источника питания или через пин ''Vin'', напряжение проходит через стабилизатор {{:продукты:arduino-m0-pro:lm2734_datasheet.pdf|LM2734}}. Выход стабилизатора соединён с пином ''5V''. Максимальный выходной ток составляет 1 А.
==== Регулятор напряжения 3,3 В ====
Стабилизатор {{:продукты:arduinom0:mpm3810gqb-33_datasheet.pdf|MPM3810GQB-33}} с выходом 3,3 вольта, обеспечивает питание микроконтроллера. Максимальный выходной ток составляет 1,2 А.
==== Кнопка RESET ====
Служит для сброса микроконтроллера. Это аналог кнопки ''RESET'' обычного компьютера.
==== SPI-разъём ====
С применением библиотеки [[https://www.arduino.cc/en/Reference/Spi|SPI]] данные выводы могут осуществлять связь по интерфейсу SPI. Линии SPI выведены на 6-контактный разъём и не продублированы на цифровых контактах, как это сделано на [[amp>product/arduino-uno?utm_source=man&utm_campaign=arduino-m0-pro&utm_medium=wiki|Arduino Uno]]. Если плата расширения использует SPI и не имеет снизу ICSP-разъёма ответного к этим штырькам на Arduino, она не будет работать работать.
Обратите внимание, SPI-разъём не предназначен для внутрисхемного программирования микроконтроллера ''ATSAMD21G18'' и может использоваться только для связи с другими SPI-устройствами.
==== SWD-разъём ====
SWD-разъём предназначен для внутрисхемного программирования микроконтроллера ''ATSAMD21G18''.
===== Принципиальная и монтажная схемы =====
{{:продукты:arduino-m0-pro:arduino-m0-pro_schematic.1.png?direct&335 |}}
{{ :продукты:arduino-m0-pro:arduino-m0-pro_schematic.2.png?direct&335|}}
{{:продукты:arduino-m0-pro:arduino-m0-pro_schematic.3.png?direct&335 |}}
{{ :продукты:arduino-m0-pro:arduino-m0-pro_layout.png?direct&335|}}
===== Характеристики =====
* Микроконтроллер: ATSAMD21G18, 32-Bit ARM Cortex M0+
* Микроконтроллер отладки: AT32UC3A4256, 32-Bit AVR
* Тактовая частота: 48 МГц
* Объём Flash-памяти: 256 КБ
* Объём SRAM-памяти: 32 КБ
* Портов ввода-вывода всего: 20
* Портов с АЦП: 6
* Разрядность АЦП: 12 бит, по умолчанию 10 бит
* Портов, подключённых к ЦАП: 1
* Разрядность ЦАП: 10 бит
* Портов с ШИМ: 12
* Разрядность ШИМ: 10 бит, по умолчанию 8 бит
* Аппаратных интерфейсов SPI: 1
* Аппаратных интерфейсов I²C / TWI: 1
* Аппаратных интерфейсов UART / Serial: 1
* Номинальное рабочее напряжение: 3,3 В
* Максимальный выходной ток пина 5V: 1 A
* Максимальный выходной ток пина 3V3: 1,2 А (включая питание микроконтроллера)
* Максимальный ток с пина или на пин: 7 мА
* Допустимое входное напряжение от внешнего источника: 7–14 В
* Габариты: 69×53 мм
===== Ресурсы =====
* [[amp>product/arduino-m0-pro?utm_source=man&utm_campaign=arduino-m0-pro&utm_medium=wiki|Arduino M0 Pro ]] в магазине.
* [[https://github.com/amperka/hardware-drawings/blob/master/arduino-m0-pro.svg|Векторное изображение Arduino M0 Pro]]
* {{:продукты:arduino-m0-pro:arduino-m0-pro_debug.pdf|Мануал по режиму отладки Arduino M0 Pro}}
* {{:продукты:arduino-m0-pro:atsamd21g18_datasheet.pdf|Datasheet на микроконтроллер ATSAMD21G18}}
* {{:продукты:arduino-m0-pro:lm2734_datasheet.pdf|Datasheet на регулятор напряжения LM2734 (5 вольт)}}
* {{:продукты:arduino-m0-pro:mpm3810gqb-33_datasheet.pdf|Datasheet на регулятор напряжения MPM3810GQB-33 (3,3 вольта)}}