Урок 2. Работа со средой Arduino IDE
Это второй урок из цикла «Знакомство с Arduino». В этом уроке Вы научитесь работать со средой Arduino IDE.
Для урока Вам понадобится компьютер с доступом в Интернет и любой модуль Arduino.
Многие слышали о таких модулях как Arduino. Появляется вопрос: с чего же начать его изучение? Театр начинается с вешалки, а знакомство с Arduino начинается со среды разработки Arduino IDE.
Давайте найдём ответ на вопрос: зачем нам всё таки нужна эта IDE? Ответ достаточно прост. Среда Arduino IDE необходима для разработки программ и их записи в модули Arduino (и не только).
С предназначением IDE разобрались, теперь давайте изучим, что же она из себя представляет.
Чтобы подробнее разобраться со средой Arduino IDE, дорогой читатель, её нужно скачать и установить (если её нет на компьютере).
Среда разработки Arduino IDE состоит из следующих компонентов:
- Текстовый редактор кода программы (1);
- Область сообщений (2);
- Консоль (3);
- Панель инструментов (4);
- Панель с часто используемыми командами (5).
Написанная в среде ArduinoIDE программа называется «скетч». Сама программа пишется в текстовом редакторе. В области сообщений выводятся ошибки и пояснения. В консоли отображается полный отчёт о компиляции программы, различные ошибки, подсказки и другая полезная информация. Панель инструментов представляет собой набор полезных функций при разработке программы. На панели с часто используемыми командами всего несколько кнопок, но они являются самыми основными при разработке программы.
Подробно останавливаться на предназначении каждого пункта меню мы не будем, а рассмотрим только самые необходимые функции. Более подробно о каждом пункте меню можно прочитать здесь.
Язык программирования Arduino:
Фактически нет особого языка программирования Arduino. Модули Arduino программируются на C/C++. Особенности программирования сводятся к тому, что существует набор библиотек, включающий некоторые функции (pinMode, digitalWrite и т.д.) и объекты (Serial), которые значительно облегчают процесс написания программы.
Настройка среды Arduino IDE:
Открыть настройки среды можно из пункта меню Файл -> Настройки или с помощью комбинации клавиш Ctrl + ,
В меню настроек можно изменить путь сохранения программ по умолчанию, изменить размер шрифтов и т.д.
Различные примеры:
Одной из особенностей Arduino IDE является довольно обширная база различных примеров, что очень удобно для начинающих. Открыть пример можно из пункта меню Файл -> Примеры.
Создание новой программы:
Итак, с настройками среды мы разобрались. Что теперь? А сейчас нужно создать новую программу. Это можно сделать несколькими способами:
- из пункта меню Файл -> Новый;
- при помощи комбинации клавиш Ctrl + N;
- из панели с часто используемыми командами
Сохранение программы:
Допустим мы написали программу. Далее нужно сохранить. Сделать это можно несколькими способами:
- из пункта меню Файл -> Сохранить;
- при помощи комбинации клавиш Ctrl + S;
- из панели с часто используемыми командами
Теперь нужно только ввести имя вашей программы (оно не должно содержать русских символов!) и выбрать место, куда её сохранить. Сохранённая программа автоматически помещается в одноимённую папку, которая создаёт сама Arduino IDE.
Открытие программы:
Теперь мы научились создавать и сохранять программу. Но как теперь открыть сохранённую программу? Для этого в Arduino IDE предусмотрено несколько способов:
- из пункта меню Файл -> Открыть;
- при помощи комбинации клавиш Ctrl + O;
- из панели с часто используемыми командами
В открывшимся окошке нужно выбрать папку, в которой находится нужная программа.
Редактирование текста программы:
Удобный редактор текста программы очень важен при разработке какой-либо программы. В Arduino IDE он довольно неплох, однако уступает конкурентам, таким как Eclipse, Visual Studio и т.д. Однако, его вполне достаточно. В редакторе присутствуют все основные команды, необходимые при редактировании кода. Они находятся в меню Правка. Для самых часто используемых команд (копировать, ставить и т.д.) существуют комбинации, способствующие быстрому доступу к нужной команде правки, что очень удобно. Другими отличительными особенностями встроенного редактора кода являются возможность копирования кода для форумов и в html формате, что позволяет делится Вашими программами, сохраняя наглядность разметки в виде BB кодов или html разметки соответственно.
Давайте остановимся на основных командах, необходимых для редактирования программы:
- Копировать. Пункт меню Правка -> Копировать или комбинация клавиш Ctrl + C;
- Вставить. Пункт меню Правка -> Вставитьили комбинация клавиш Ctrl + V;
- Вырезать. Пункт меню Правка -> Вырезатьили комбинация клавиш Ctrl + X;
- Выделить всё. Пункт меню Правка -> Выделить всёили комбинация клавиш Ctrl + A;
- Найти. Пункт меню Правка -> Найтиили комбинация клавиш Ctrl + F;
- Отменить. Пункт меню Правка -> Отменитьили комбинация клавиш Ctrl + Z;
- Вернуть. Пункт меню Правка -> Вернутьили комбинация клавиш Ctrl + Y;
- Форматировать текст программы. Пункт меню Инструменты -> АвтоФорматированиеили комбинация клавиш Ctrl + T. Эта команда позволяет исправить неточности в разметке программы и привести её в более читабельный вид.
Дорогой читатель, удобнее и быстрее всего пользоваться комбинациями клавиш при редактировании текста программы.
Подключение библиотеки:
Давайте разберёмся, что же такое библиотека. Библиотека — это набор функций, предназначенных для того, чтобы максимально упростить работу с различными модулями, датчиками и т.д. Например, библиотека LowPower позволяет легко управлять режимами энергосбережения модулей Arduino. Существует огромное количество различных модулей и датчиков. Но как ими управлять? Для этого разработаны специальные библиотеки, которые значительно облегчают работу. Но перед тем, как использовать дополнительные библиотеки, необходимо установить и подключить их. А как подключить библиотеку, спросите Вы? Есть несколько способов:
- через среду Arduino IDE. Для этого перейдите в меню Скетч -> Подключить библиотеку.
Если нужная библиотека есть в списке, то необходимо просто кликнуть на неё мышкой и она автоматически подключится к Вашей программе. А что же делать, если нужной библиотеки нет в списке? В таком случае перейдите во вкладку Скетч -> Подключить библиотеку -> Управление библиотеками. Перед Вами откроется следующее окошко:
В правом верхнем углу необходимо ввести название нужно библиотеки. Далее, из списка надо выбрать нужную библиотеку, её версию и нажать кнопку установить. Обратите внимание, что есть возможность отсортировать результаты поиска (вкладки Тип и Тема). Теперь она появится в списке установленных библиотек и её можно подключить через меню Скетч -> Подключить библиотеку.
- Предварительно скачав нужную библиотеку её также можно подключить к своей программе. Если она находится в zip архиве, то её можно подключить следующим способом. Для этого нужно перейти в меню Скетч -> Подключить библиотеку -> Подключить .ZIP библиотеку и в открывшемся окошке выбрать zip архив с библиотекой. Теперь эта библиотека появится в списке установленных и её можно подключить через меню Скетч -> Подключить библиотеку. Если у Вас открыта Arduino IDE, то её нужно перезапустить, чтобы изменения были применены.
- Подключить библиотеку можно и без использования Arduino IDE. Для этого необходимо её скачать и скопировать папку с библиотекой по следующему пути: X:\Пользователи\<Имя пользователя>\Документы\Arduino\libraries.
Если у Вас открыта Arduino IDE, то её нужно перезапустить, чтобы изменения были применены. Теперь эта библиотека появится в списке установленных и её можно подключить через меню
Скетч -> Подключить библиотеку. Однако можно и вручную в программе подключить библиотеку. Для этого перед функцией setup() нужно прописать следующую конструкцию #include <имя заголовочного файла.h> или #include «имя заголовочного файла.h».
В каждой библиотеке есть различные примеры использования функционала библиотеки. Имя заголовочного файла можно найти там. Дорогой читатель, рекомендуем внимательно изучать примеры, ведь любая, даже большая программа, состоит из кусочков простых примеров.
Выбор платы:
Существует довольно большое количество модулей Arduino. Загружать написанную программу нужно именно в тот тип модуля, который подключён к компьютеру. Выбрать модуль можно в меню Инструменты -> Плата.
В списке находятся все официальные версии модулей Arduino. Если нужного модуля нет в списке, то его можно добавить. Это рассмотрено в следующем уроке.
Далее необходимо выбрать тип контроллера, который установлен на модуле Arduino (на каждом контроллере есть маркировка). Это можно сделать в меню Инструменты -> Процессор.
Компиляция программы:
Теперь, когда выбран конкретный модуль Arduino, можно переходить к компиляции написанной программы. Давайте разберёмся, что же такое компиляция. Если говорить простым языком и касательно среды Arduino IDE, то компиляция — это перевод написанной в IDE программы в эквивалентную, но в машинных кодах. Программа записывается в микроконтроллер именно в машинных кодах, а не в том виде, в котором она написана в IDE. Компиляция также помогает найти ошибки в программе, т.к. компиляция не будет выполнена, если в программе есть ошибки.
С понятием компиляции мы разобрались. А как теперь открыть скомпилировать написанную программу? Для этого в Arduino IDE предусмотрено несколько способов:
- из пункта меню Скетч -> Проверить/Компилировать;
- при помощи комбинации клавиш Ctrl + R;
- из панели с часто используемыми командами
После успешной компиляции будет выведено сообщение об этом. Также в области сообщений можно найти информацию о том, сколько памяти занимает написанная программа. Если в программе есть ошибки, тогда в области сообщений будет выведено сообщение с указанием конкретной строки и ошибки в ней.
Выбор программатора:
Пункт меню Инструменты -> Программатор используется для выбора аппаратного программатора, если программирование модуля или микроконтроллера осуществляется не при помощи встроенного USB-последовательного соединения. Как правило, эта команда используется довольно редко, однако может пригодиться, например, при записи загрузчика в новый микроконтроллер.
Т.к. в модулях Arduino уже есть свой встроенный программатор, то в качестве программатора в меню Инструменты -> Программатор нужно оставить стандартный AVRISP mkII.
Запись загрузчика:
При помощи команды Инструменты -> Записать загрузчик в микроконтроллер можно записать загрузчик. При использовании Arduino этого не требуется, однако эта команда может пригодиться если Вы хотите прошивать обычный микроконтроллер фирмы Atmel (именно микроконтроллеры фирмы Atmel стоят в модулях Arduino и как правило, они продаются без встроенного загрузчика) аналогично Arduino. Если Вы хотите разобраться с этим, рекомендуем прочесть этот урок .
Загрузка программы:
Теперь, когда почти со всеми элементами среды Arduino IDE мы разобрались, можно приступать к финальному этапу — загрузке программы в модуль Arduino.
Прежде чем загружать программу, нужно выбрать порт, к которому подключён Ваш модуль Arduino. Выбрать его можно в меню Инструменты -> Порт.
Это не обязательно должен быть COM5, как на рисунке. Имя порта у Вас, скорее всего, будет другим (COM3, COM 10 и т.д.).
Когда выбран соответствующий модуль Arduino, нужный порт, процессор и программатор, можно приступать к загрузке программы.
Для этого в Arduino IDE предусмотрено несколько способов:
- из пункта меню Скетч -> Загрузка;
- при помощи комбинации клавиш Ctrl + U;
- из панели с часто используемыми командами
В процессе загрузки программы первым этапом код будет скомпилирован, а только потом, если не возникло ошибок в ходе компиляции, будет записан в модуль Arduino. При успешной загрузке программы в области сообщений появится сообщение об этом.
Рекомендуем включить подробный вывод информации при компиляции и загрузке программы, это зачастую помогает выявить тип ошибки при компиляции или загрузке программы. Для этого в меню Файл -> Настройки установить соответствующие галочки.
Монитор последовательного порта:
Между Arduino и компьютером можно обмениваться данными через последовательный порт (он же интерфейс UART). Монитор последовательного порта может использоваться как для вывода отладочной информации от модуля Arduino, так и для других целей. Через него можно как отправлять данные в модуль Arduino, так и получать данные от него. Не забудьте выбрать порт, к которому подключён модуль Arduino, иначе монитор последовательного порта не откроется! При его открытии модуль Arduino перезагрузится!
Открыть окно монитора последовательного порта можно несколькими способами:
- из пункта меню Инструменты -> Монитор порта;
- при помощи комбинации клавиш Ctrl + Shift + M;
- из панели с часто используемыми командами (в правом верхнем углу)
После открытия монитора последовательного порта появится следующее окошко:
В самом низу этого окошка можно изменить скорость работы порта ( она должна совпадать с той, которая указана в программе! ) очистить окно и т.д.
Пример полного цикла разработки программы в Arduino IDE:
А теперь, дорогой читатель, давайте полностью пройдём все этапы разработки программы в Arduino IDE.
Начнём мы не со стандартного мигания светодиодом, а с классического примера из программирования — вывода на экран «Hello World!».
Запускаем Arduino IDE
Откроется следующее окошко:
Ждём открытия среды. Когда она открылась, создаём новую программу путём нажатия на комбинацию клавиш Ctrl + N.
Теперь давайте сохраним эту программу под именем Hello_World, для этого нажимаем на комбинацию клавиш Ctrl + S, вводим путь, куда сохраним программу и её имя.
В указанной директории появится папка с программой Hello_World.
Теперь давайте напишем сам код. Мы хотим с периодичностью в 5 секунд выводить сообщение Hello World! на экран, т.е. в монитор последовательного порта. Никаких сторонних библиотек для этого нам не понадобится. Скопируйте следующий код в IDE.
Какой программатор выбрать для arduino nano
Какой программатор выбрать для arduino nano
Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.
What can I do to prevent this in the future?
If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware.
If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices.
Another way to prevent getting this page in the future is to use Privacy Pass. Check out the browser extension in the Chrome Web Store.
Cloudflare Ray ID: 720aaf71f845891e • Your IP : 195.234.124.159 • Performance & security by Cloudflare
Программатор SPI Flash, I2C EEPROM из Arduino или почти любого микроконтроллера
Иногда при разработке своих радиолюбительских устройств или при ремонте цифровой электроники возникает необходимость прошивки микросхем памяти, наиболее распространённые из них — это I 2 C EEPROM 24 серии и SPI FLASH 25 серии. Казалось бы, что может быть проще, купить копеечный программатор с известного китайского сайта или спаять несколько проводков и деталек под COM-Port? Но что, если прошить микросхему надо прямо сейчас, а паять или ждать посылки из Китая некогда/лень? На самом деле более-менее современные и не очень микроконтроллеры (далее — МК) в большинстве своём поддерживают необходимые протоколы обмена (SPI, I 2 C, UART) на аппаратном уровне и могут сами выступать в роли программатора. Дело лишь за программным обеспечением. Микроконтроллер ATMEGA328P не исключение. Он, как известно, используется, наверное, в самых известных в мире платах — Arduino в связке с USB-UART мостом — то есть всё, что нужно для создания программатора «на скорую руку».
Мне нравится тема программаторов, я давно занимаюсь их разработкой (в развлекательных целях). Возможно вы уже видели мои предыдущие статьи. Первые мои поделки были очень сырые и медленные (вообще, удивляюсь, как они работали, глядя на свой старый код). В этот раз я решил поэкспериментировать с протоколом обмена между МК и компьютером по COM порту, а если точнее, я решил попробовать пакеты переменной длины. Я хотел посмотреть, насколько можно увеличить скорость обмена по сравнению с пакетами фиксированной длины. И вот эти эксперименты вылились в очередное устройство, которое, надеюсь, будет полезным как новичкам, так и более опытным радиолюбителям. Поехали.
Для начала хочу объяснить принцип обмена данными в моём устройстве между ПК и МК. Пакет данных — это последовательность байт, который (в моём случае) состоит из заголовка (1 байт — 0xFE), размера «полезных» байт (1- байт), маркера пакета (1 байт) и полезных данных (1 — 255 байт). Как ПК, так и МК при получении данных по UART последовательно «разбирают» пакет и обрабатывают данные. Принцип разборки пакета данных примерно одинаковый как в ПК, так и в МК. МК в прерывании, а ПК в событии по приходу байта в UART сначала ожидают первые три байта пакета, первым проверяется заголовок (1-й байт), если он неверный (не 0xFE), то пакет сразу отбрасывается и считается битым. Затем высчитывается размер «полезных» данных (2-й байт) и маркер пакета ( 3-й байт). А после дочитываются «полезные данные» согласно рассчитанному количеству (для корректной работы размер полезных данных в пакете не может быть меньше единицы). Затем пакеты обрабатываются в соответствующих функциях согласно их маркеру (используется конструкция switch-case). Такой формат пакета данных позволяет производить минимальную проверку на ошибки и ускоряет обмен за счет минимизации пакетов запрос/подтверждение в сравнении с пакетами фиксированной длины. В принципе, подобный протокол обмена может использоваться и в любых других радиолюбительских конструкциях, где нужен обмен между ПК и МК.
Как я писал вначале, программатор можно сделать практически на любом микроконтроллере (с небольшими ограничениями: SRAM — не менее 1кБ, хотя, если постараться, то можно и в 512 байт уложиться, FLASH не менее 4 кБ, наличие UART, SPI, I 2 C). Для этого необходимо переписать всего три драйвера: UART с прерыванием по приёму байта, SPI и I 2 C. Лично я опробовал работу устройства сначала на STM32F030, затем переписал код на 1T MCS-51 МК (Nuvoton N76E003), atmega328 (arduino nano) и STM8S103F3, просто изменив инициализацию периферии, практически не изменяя основной код (хотя, с атмегой были «танцы с бубном», GCC как-то по своему интерпретирует Си код). В конце статьи приведу результаты «замеров скорости» работы программатора на разных МК при одинаковой скорости UART и на «максималках».
Код написан на Си (не смотрите на слово arduino в названии статьи), его несложно адаптировать под разные МК. Структура кода следующая: в файле main.c — глобальные переменные, обработчик прерывания, драйверы UART, SPI, I 2 C в отдельных одноимённых *.h и *.c файлах, основная обработка пакетов и функции чтения/записи происходит в файле progger.c. Свои исходники и HEX-ы для avr, stm32 и n76e003 я прикреплю в конце статьи. В случае arduino HEX файл можно прошить с помощью утилиты X-Loader и подобных, STM шьётся через UART утилитой FLASH_Demonstrator (если мне не изменяет память), остальные из приведённых камней — только программаторами. Проекты для STM32 и AVR, в принципе, завершённые, проекты для Nuvoton и STM8 не полностью, там только реализована работа со SPI FLASH, исключительно для сравнения производительности и вообще, проверки работоспособности на других архитектурах.
Подробные схемы я приводить не буду, так как подразумевается подключение к готовым отладочным платам, покажу только подключение прошиваемых EEPROM и FLASH (к каким ногам их цеплять):
При подключении к arduino и другим 5-вольтовым платам запитывать SPI FLASH необходимо от пина 3v3, остальные сигналы можно напрямую. Если SPI FLASH на 1,8 вольта, то без преобразователя логических уровней не обойтись. EEPROM можно питать и от 5v и от 3v3. Обратите внимание, что линии SCL и SDA I 2 C необходимо подтянуть к плюсу питания через резисторы 4,7 кОм. В моих прошивках подключения следующие:
Arduino(UNO/NANO) | STM32F030K6 | N76E003 | |
SPI MISO | D12(PB4) | PA6 | P0.1 |
SPI MOSI | D11(PB3) | PA7 | P0.0 |
SPI SCK | D13(PB5) | PA5 | P1.0 |
SPI SS | D9(PB1) | PB1 | P1.1 |
I2C SCL | A5(PC5) | PA9 | P1.3 |
I2C SDA | A4(PC4) | PA10 | P1.4 |
У STM задействован UART1 (PA2,PA3), у N76E003 UART на P0.6, P0.7, у arduino — на своём месте)))
Со стороны ПК — простая программка с графическим интерфейсом, написанная на C# буквально за несколько часов (так как у меня уже были приличные наработки по этой теме). Для работы нужен пакет .net framework. В программе реализованы минимально необходимые функции (чтение, запись, стирание, проверка записанного, получение ID и немного других). В список поддерживаемых устройств я не вносил никакой экзотики: большинство I 2 C EEPROM шьются и читаются однотипно, поэтому список состоит устройств без учёта производителя, только по объёму памяти; список SPI FLASH состоит только из чипов Winbond почти всех возможных размеров, но шьются большинство флешек тоже однотипно и размер блока у них почти всегда 256 байт (за исключением экзотики), так что должны работать флешки и других вендоров.
Интерфейс программы интуитивно понятный. Для начала работы необходимо выбрать COM порт, к которому подключен программатор, скорость передачи (стандартные запрограммированные в моих прошивках скорости для arduino и N76E003 — 57600, для STM32 — 921600, STM8S — 38400, скорость можно изменить в исходниках, даже установить нестандартные скорости, например для STM8 я ставил 50000, что порядком ускоряет работу). Нажимаем кнопку «OPEN» (вверху). Если всё подключено правильно, нажимаем кнопку «Check Progger», в консольном окошке должна появиться надпись «Программатор подключен», значит можно работать. Кнопка «Verify» работает несколько необычно — она сравнивает прочитанную прошивку с загруженной для записи (т.е. сначала записываем, затем читаем, а только потом — сравниваем). Остальные кнопки в комментариях не нуждаются. Все функции в программе не блокирующие, то есть, пока идёт запись или чтение — ничего не нажимаем. Также при работе с I2C EEPROM, если микросхема не подключена к программатору, чтение и запись будут «висеть», так как необходим ответ от EEPROM.
А теперь — самое интересное. Тесты скорости. Будем проверять скорость чтения SPI FLASH объёмом один Мегабайт. Будем проверять на скорости UART 57600 бод для всех плат, кроме STM8 (её максималка — 38400 бод), а потом запустим STM32F030 на 921600 бод. Флешка будет W25Q16 на 2 Мегабайта, но читать будем только 1 мегабайт (как будто это W25Q80). Поехали!
1. ARDUINO NANO (Atmega328p 16 MHz 57600 бод) — мегабайт за 3 минуты 4 секунды.
2. STM32F030 (48 MHz 57600 бод) — 3 минуты 34 секунды, что?!
3. STM8F103 (16 MHz 38400 бод) — 5 минут 16 секунд
4. Nuvoton N76E003 (16 MHz 57600 бод) — 5 минут 49 секунд
5. STM32F030 (48 MHz 921600бод, так сказать — на максималках) — 32 секунды.
6. CH341 заводской программатор USB 2.0 FS — 8 секунд 236 миллисекунды
Прежде чем делать окончательные выводы, хочу сказать сразу, что atmega328 немного жульничает. Дело в том, что атмега наотрез отказывалась выходить из цикла ожидания подтверждения от хоста перед отправкой очередного пакета при чтении (то есть, в цикле чтения МК перед отправкой пакета с очередной порцией прочитанного ждёт от хоста короткий пакет подтверждения, чтобы убедиться, что хост успел обработать предыдущий пакет). Но так как SPI в атмеге работает не очень быстро, я вообще отключил ожидание подтверждения, оказалось, что хост и так успевает. А в остальных МК эта функция работает штатно и немного притормаживает работу. Также я не уверен, что в Nuvoton SPI работает на максимальной скорости (просто, я их не так хорошо знаю и сильно не вникал в модуль SPI).
Какие можно сделать выводы из полученных результатов? Восьмибитные микроконтроллеры в своей нише всё еще востребованы и достаточно хорошо справляются с адекватными задачами, даже имея на борту древнее немного «освежённое» ядро 1Т MCS-51. И при прочих равных условиях достаточно достойно показывают себя в сравнении с 32 битными. Но, учитывая более высокие частоты ядра и периферии 32 битных микроконтроллеров, в задачах, где требуется высокая скорость обработки данных и работы периферических модулей они оставляют восьмибитные МК далеко позади.
Что касается программатора, то даже на arduino (atmega328) он может быть полезен при отсутствии заводского. Ведь достаточно просто залить прошивку через обычный USB кабель, накинуть несколько проводов и программатор готов. А потом можно вернуть ардуину в исходное состояние и использовать её по любому другому назначению. Даже при такой скорости записи/чтения (
3 минуты на мегабайт) можно прошить даже 8-мегабайтную флешку. А EEPROM вообще шьются считанные секунды. А при желании можно взять 20-ногий STM32F030F3 и CH340 (даже в 8-ногом корпусе) и сделать себе отдельный программатор с уже приличными скоростями чтения/записи. Тем более, все исходники, в том числе и самой программы я оставлю в конце статьи. Есть даже поле для творчества, можно подправить мой код, добавить поддержку других устройств.
PS: на досуге скомпилировал проект под синюю и чёрную таблетки (stm32f103c8t6 и stm32f411ceu соответственно) только на аппаратном USB (CDC) под тот же софт. Скорость работы просто впечатляет, чтение 1 мегабайта — за 4 секунды чёрная таблетка на частоте ядра 96 MHz и около 5 секунд — синяя таблетка на частоте ядра 72 MHz. Нервно курят в сторонке даже CH341 и EZP20хх (который я тоже протестировал на скорость чтения 1 мегабайта, результат приблизительно как и у CH341).
У таблеток реализовал только работу со SPI FLASH ради замера скорости. Функции EEPROM могу добавить, если кому-то будет интересно. Подключение у обеих таблеток к SPI1 (PA5,PA6,PA7), CS — на PA4. У чёрной таблетки на пузе имеется место под пайку микросхемы SPI FLASH, к ней тоже подходят нужные сигналы.
Также подправил обнаруженные ошибки в софте. С софтом с платами-таблетками работать точно также, только скорость COM порта не имеет значения, так как физического UART там уже нет и обмен всегда на максимальной скорости. При подключении платы по USB к ПК появится виртуальный COM порт. Драйвера на Win 10 станут автоматом. EXE-файл находится в архиве с проектом по пути «../debug/bin».
На этом, пожалуй, всё. Желаю всем удачи. Конструктивная критика приветствуется.
Как прошить Arduino Pro Mini
Загрузить прошивку на этот микроконтроллер можно несколькими способами:
- Через другую плату ардуино, у которой есть встроенный USB-UART
- С помощью специального программатора
- Используя USBasp-программатор
Последние два способа очень похожи. Они отличаются лишь типом программатора. Поэтому в этой статье мы рассмотрим только прошивку с помощью другой Arduino и с помощью специального программатора.
Прошивка ардуино про мини с помощью Arduino Uno или Nano
Для того что бы прошить одну ардуинку через другую, нам понадобятся 2 платы Arduino, соединительные провода, USB кабель и компьютер. Я покажу как прошить Arduino Pro Mini с помощью Arduino Nano, но по этой же инструкции можно использовать и другие платы Arduino, такие как Uno, Mega и тд.
Для начала надо настроить нашу плату, которая будет выступать в роли программатора. Для этого подключим ее к USB компьютера и перейдем в Arduino IDE. В примерах уже есть готовый скетч, написанный специально для этой цели.
Выбор программатора
Выбираем этот скетч и прошиваем. Теперь мы готовы подключать Arduino Pro Mini. Подключаем следующим образом:
Arduino Nano -> Arduino Pro Mini
- +5v -> Vcc
- GND -> GND
- D10 -> RST
- D11 -> D11
- D12 -> D12
- D13 -> D13
У меня это выглядит так:
Arduino Pro Mini через Arduino Nano
Далее нам нужно выставить в меню «Инструменты» нашу прошиваемую плату и тип программатора «Arduino as ISP»:
Теперь мы можем прошить нашу Arduino Pro Mini. Откройте или напишите нужную вам прошивку. Будьте внимательны! Стандартная кнопка загрузки скетча нам не подходит. По умолчанию она заливает прошивку без использования программатора. Таким образом мы прошьем микроконтроллер, который должен выступать в качестве программатора. Чтобы этого не произошло нужно перейти в меню Скетч >> Загрузить через программатор.
Прошивка Arduino Pro Mini с помощью специального программатора
Купить специальный программатор можно здесь. Стоит он меньше одного доллара. Если вы часто используете ардуино про мини, то этот программатор сильно упростит и ускорит прошивку.
Для преобразования USB-to-Serial используется микросхема CH340. Что бы она определялась компьютером правильно необходимо установить специальный драйвер. Скачать и установить драйвер CH340
Прошить ардуино с помощью программатора очень просто. Нужно подключить программатор к Arduino Pro Mini следующим образом:
- Vcc <-> Vcc
- GND <-> GND
- RX1 <-> TXD
- TX0 <-> RXD
Подключаем программатор к компьютеру и проверяем, что он не требует драйверов. Если же он определяется как «неопознанное устройство» скачайте и установите драйвер. Его легко найти, набрав в поисковике «*модель вашего программатора* драйвер». Например «CP2102 драйвер». Далее запускаем Arduino IDE. Выбираете модель вашей платы. Потом переходим в меню Инструменты -> Программатор и выбираете ваш программатор. Далее открываете нужный вам скетч и загружаете его с помощью пункта в меню Скетч -> Загрузить через программатор.
Если ваш программатор не поддерживает программный сброс, то вам придется вручную нажать кнопку перезагрузки на вашей Arduino Pro Mini в момент компиляции скетча. Это нужно сделать сразу как только в Arduino IDE появится строка, что скетч скомпилирован.