Прошить LGT8F328P-SSOP20 как обычную Arduino Pro Mini через интерфейс SPI (MOSI, MISO, SCK, SS) сходу нельзя, но можно прошить по интерфейсу Serial Wire Debug (SWD: SWD, SWC).
Инструкция создана на основе вот этого документа на английском языке:
https://github.com/rickygai/arduino/blob/main/LGT8F328P.pdf
Превращать Ардуину в программатор будем с помощью специально написанного скетча для плат LGT LarduinoISP.
Конечно же, предварительно должно быть установлено ядро для работы с этими МК. Читаем, устанавливаем:
https://github.com/dbuezas/lgt8fx
Итак, начнем
Видео по теме:
Версия Arduino IDE: 1.8.13
Подготовка Arduino
Открываем "Файл > Примеры > LarduinoISP > LarduinoISP".
Если в Примерах нет пункта LarduinoISP, то указываем в Инструментах > Плата: LGT8F328P
Настраиваем "Инструменты" как обычно для вашей Ардуины.
Далее необходимо внести небольшие изменения в один заголовочный файл ядра Ардуино. Придется изменить размер буфера SERIAL RX, это делается временно - только для прошивки скетча программатора в Ардуино, потом нужно будет вернуть как было. Данный параметр играет ключевую роль в процессе прошивки зеленки ардуиной, если его не выставить в 250, то зеленка просто не прошьется, а процесс прервется с ошибкой.
Файл, который нам нужен находится в папке с ядром Ардуино, например:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\
Открываем в любом текстовом редакторе файл HardwareSerial.h
Находим блок:
И меняем значение на 250:
Можно и так:
#if !defined(SERIAL_RX_BUFFER_SIZE)
#if ((RAMEND - RAMSTART) < 1023)
#define SERIAL_RX_BUFFER_SIZE 16
#else
#define SERIAL_RX_BUFFER_SIZE 64
#endif
#endif
Возвращаемся к Arduino IDE
Прошиваем LarduinoISP в Ардуину
Если в процессе компиляции возникла ошибка:
"Please change the macro SERIAL_RX_BUFFER_SIZE to 250"
Значит вы что-то сделали не так на предыдущем шаге.
Размер буфера serial RX устанавливается гораздо проще при использовании другой LGT8F в качестве программатора - прямо через меню. Но чтобы добавить такую опцию для Ардуины - нужно вносить гораздо больше изменений в файлы ядра, да и при любом обновлении они могут затереться, так что проще это сделать через HardwareSerial.h.После успешной прошивки скетча LarduinoISP в Ардуино, возвращаем значение размера буффера serial RX как было.
Отключаем Ардуину от компьютера
Соединение Arduino и LGT8F328P
Небольшое отступление.
Когда на
Ардуину подается питание, сначала запускается загрузчик
(буттоадер/bootloader), который некоторое время ждет поступления внешних
команд (на прошивку и пр.). Если команды не поступают, то запускается
основная прошитая ранее программа. Когда Ардуина работает в режиме
программатора, ей некогда "отвлекаться" на запуск загрузчика, ее цель -
постоянное выполнение своей программы, т.е. все время оставаться
программатором и ждать прошивку для пациента. В процессе прошивки в
начале отправляется сигнал сброса на Ардуину (низкий уровень сигнала на
RST), который игнорируется за счет конденсатора, удерживающего на RST
высокий уровень. Именно поэтому иногда встречается рекомендация
подключить RST к VCC через подтягивающий резистор, что в данном случае
выполняет ту же функцию.
Подключаем конденсатор на 10 мкФ к плате Ардуино между RST и GND, чтобы плата-программатор не перезагружалась в процессе прошивки пациента и не возникало ошибок "not in sync".
Подключаем пациента к ардуине по следующей схеме:
LGT8F -> АрдуиноGND -> GND
VCC -> +5V
SWD -> 12
RST -> 10
SWC -> 13
Прошивка LGT8F328P
Подключаем Ардуину к компьютеру.
Отрываем в Arduino IDE скетч, который необходимо прошить в зеленку.
Настраиваем "Инструменты":
- Плата: "LGT8F328"
- Variant: "328P-SSOP20 (e.g. green pseudo pro mini)"
- Arduino as ISP: любое (этот параметр используется только при прошивке другой зеленкой в качестве программатора или USB-UART)
- Программатор: "AVR ISP"
Прошиваем: "Скетч > Загрузить через программатор"
Готово! Вы восхитительны!
P.S.
Если необходимо зашить загрузчик, то при тех же настройках просто нажимаем "Записать загрузчик".
Если загрузчик успешно зашьется, то плата будет периодически дважды мигать светодиодом.
Комментариев нет:
Отправить комментарий