Часто у начинающих ардуинщиков и более продвинутых пользователей возникает проблема: памяти микроконтроллера недостаточно или наоборот, слишком много. Основная часть моделей имеет объем памяти 32к или 256к. С портами ввода/вывода ситуация не сильно лучше. Конечно, есть расширители портов, но тогда придется менять логику программы. Одним словом тупик. И выход есть — создать свою копию Arduino на другом микроконтроллере.
Предупреждение
Перед использованием схем из этой статьи, проверьте, все ли в порядке. Я тоже могу допустить ошибку. Если вы это заметили, напишите в комментарии.
Выбираем микроконтроллер под свои задачи
Выбирая МК, нужно определить основные параметры:
-
Память Flash
-
Память SRAM
-
Память EEPROM
-
Кол-во линий ввода/вывода
-
Доступные интерфейсы
Большим плюсом при создании платы на базе официально не поддерживаемого МК, будет наличие загрузчика и ядра. Привожу некоторые МК, для которых есть ядро:
|
МК |
Flash, k |
SRAM, k |
EEPROM, b |
Порты |
Интерфейсы |
Корпус |
|
Atmega16 |
16 |
1 |
512 |
32 |
SPI, I2C,UART |
DIP40, TQFP44 |
|
Atmega32 |
32 |
2 |
1024 |
32 |
SPI, I2C,UART |
DIP40, TQFP44 |
|
Atmega64 |
64 |
4 |
2048 |
53 |
SPI, I2C,UART x2 |
TQFP64 |
|
Atmega8 |
8 |
1 |
512 |
23 |
SPI, I2C,UART |
DIP28, TQFP32 |
|
Atmega644 |
64 |
4 |
2048 |
32 |
SPI x3, I2C,UART |
DIP40, TQFP44 |
|
Atmega128 |
128 |
4 |
4096 |
53 |
SPI, I2C,UART x2 |
TQFP64 |
|
Atmega640 |
64 |
8 |
2048 |
86 |
SPI x5, I2C,UART x4 |
TQFP100 |
|
Atmega1284 |
128 |
16 |
4096 |
32 |
SPI x3, I2C,UART x2 |
DIP40, TQFP44 |
Главное найти баланс: чтобы желаемого пункта хватало, но не в ущерб остальным характеристикам.
Немного о маркировке МК ATmega
Маркировка МК ATmega обычно интуитивно понятна, в качестве примера разберем маркировку чипа ATmega32l — 8AU. ATmega — семейство МК, 32 — flash память, l — пониженное напряжение питания. Буквы после модели я вынес в таблицу:
|
Буква |
Значение |
|
Нет |
Напряжение питания от 4.5 до 5.5 |
|
L |
Напряжение питания от 2.7 до 5.5 |
|
V |
Напряжение питания от 1.8 до 5.5 |
|
U |
Напряжение питания от 0.7 до 5.5 |
|
P |
Потребление 100нА в режиме Power-down |
|
A |
Уменьшен ток потребления, перекрывается весь диапазон тактовых частот всех версий, напряжение питания 1,8 — 5,5 вольт |
Надо учитывать, что микроконтроллер без буквы в обозначении может иметь пониженное напряжение питания, это нужно проверять по документации.
Тактирование
После выбора микроконтроллера под свои задачи можно переходить к проектированию схемы. Сначала находим пины XTAL1 и XTAL2. К ним мы подключаем кварц. Сейчас их достаточно много — есть и со встроенными конденсаторами внутри.
Для его работы требуется обвязка — два конденсатора на 22 пикофарада.

Также существуют другие варианты — со встроенными конденсаторами и в других корпусах, включая SMD. Если в кварце уже есть конденсатор, то дополнительные не нужны, подключаем напрямую к XTAL1 и XTAL2.
Далее гуглим «НАЗВАНИЕ_МК максимальная частота». Для примера я загуглил «Atmega32l-8au максимальная частота». Почти гарантировано вы увидите строчку:

В этом случае смысла во внешнем кварце нет, можно использовать внутренний генератор. В большинстве случаев частота работы 16 МГц, иногда 20 МГц.
Корпус
Здесь все сводится к размерам и удобству сборки. Некоторые МК выпускаются только в SMD — в основном из-за огромного количества портов. Самые крупные выводные МК обычно выпускаются в корпусе DIP-40. Те, которые имеют 100+ выводов, конечно, идут в SMD. Паяльником реально припаять корпус TQFP-44 — ATmega16/32. Больше — я не пробовал, если у вас есть опыт — отпишите в комментарии. Однако, китайцы, если заказать у них печатную плату, могут нам припаять МК хоть TQFP-100. Естественно, это недёшево, но когда очень большая партия — это единственный выход.
Прошивка
Если мы копируем Arduino, нам необходимо добавить возможность прошивки через бутлоадер — загрузчик, через разъем USB. Существуют специализированные микросхемы — CH340, FT232, CP2102. На оригинальных Arduino для загрузки прошивки используется отдельный камень — Atmega8u2/16u2 со своей прошивкой и аппаратным USB. Я сам использую чип CH340C. Некоторые на него жалуются, но у меня все достаточно хорошо. Прилагаю рекомендуемую схему подключения:

Итоговая схема
Итак, сложим все требования воедино. Я хочу Atmega32l на частоте 8МГц с прошивкой по USB. У меня получилось это:

Вывод
Создание своего клона Arduino имеет смысл, если вам не хватает мощности UNO, а MEGA использовать нецелесообразно, а также хочется иметь USB порт для прошивки.
Надеюсь, что статья была вам полезна, и вы узнали что-то новое. Если есть вопросы или замечания, напишите в комментарии, спасибо за дочитывание статьи, пока!
ссылка на оригинал статьи https://habr.com/ru/articles/594429/
Добавить комментарий