Последние комментарии
-
09.03.2023 10:51
Спасибо!Драйвер установил,и все заработало.
-
25.01.2023 16:05
Спасибо. Хорошая статья. Хотелось бы увидеть как ...
-
21.01.2023 22:58
Доброго дня! Як можна замовити? І чи є схема або ...
-
05.05.2022 19:14
Спасибо автору, понял почему блинк не работал
-
21.04.2022 13:18
В моём случае он используется совместно с AGP ...
Самое читаемое
- Многофункциональный программатор на CH341A
- Переходник USB to TTL (RS232) YP-01 на чипе PL2303HX
- Знакомство с Arduino Pro mini на примере китайского аналога
- Подключаем мощную нагрузку к Arduino, через реле модуль
- Твердотельное реле из симистора для коммутации мощной нагрузки через Ардуино
- Знакомство с Arduino Micro (ATmega32U4) на примере китайского аналога Pro Micro
- Знакомство с Arduino Nano на примере китайского аналога
- Знакомство с Arduino UNO на примере китайского аналога
- Обход блокировки Одноклассников, Вконтакте, Яндекс и Маил.ру с помощью OpenVPN
- Управляем Arduino через Bluetooth HC-06, с компьютера или смартфона
XI LGT Nano – Arduino-совместимая плата от Wemos на LGT8F328P
XI LGT Nano - Arduino-совместимая плата от Wemos, на микроконтроллере от Logic Green. Год назад я делал обзор на плату WEMOS XI, которая базируется на LGT8F328D. Нынешняя плата построена на LGT8F328P, который продолжает линейку китайских 8-битных микроконтроллеров с RISC-ядром. В данном обзоре расскажу что изменилось в LGT8F328P по отношению к LGT8F328D и сделало этот микроконтроллер ещё более продвинутым по отношению к ATmega328.
Плату XI LGT Nano я купил на Aliexpress с учётом доставки за $ 1.94. Несмотря на то что в описании продавец указал ссылку на сайт Wemos, с описанием платы, на данный момент эта ссылка уже не действительна, Wemos переработал дизайн своего сайта и удалил информацию про эту плату.
Внешний вид платы XI LGT Nano с лицевой и обратной стороны. Размер платы 17 х 38 мм. Микроконтроллер представлен в корпусе QFP32L, маркировка какая либо на нём отсутствует.
Несмотря на то что в названии платы имеется слово "Nano", ничего общего с Arduino Nano ни по размеру, ни по выводам она не имеет. XI LGT Nano идентична с WEMOS XI (LGT8F328D). Для наглядного примера крайняя справа - Nano-совместимая плата Seeeduino Nano, а по центру WEMOS XI.
Особенности LGT8FX8P
Серия LGT8FX8P включает три модели: LGT8F88P, LGT8F168P, LGT8F328P отличающиеся объёмом память FLASH, SRAM и E2PROM. У LGT8F328P объём памяти следующий: FLASH - 32Кб, SRAM - 2Кб. В отличии Atmega328, LGT8F328P не имеет отдельной EEPROM-памяти. Для этой цели используется часть FLASH-памяти, которая может быть настроена как 0K/1K/2K/4K/8K. Благодаря такой реализации, системе требуется в два раза больше места для программирования Flash-аналога EEPROM. Например, если для LGT8F328P нужно настроить 1Кб EEPROM, будет использовано 2Кб FLASH-памяти, а 30Кб пространства останется для хранения программ.
Поддержка тактовой частоты до 32 МГц как от внутреннего синтезатора, так и от внешнего кварца. По-умолчанию плата работает на частоте 16 МГц.
Два 8-битных таймера.
Два 16-битных таймера.
АЦП: 12-канальный 12-битный. У LGT8F328D он 8-канальный, 12-битный. У Atmega328 8-канальный, 10-битный.
ЦАП: один 8-битный. У LGT8FX8D их два. У Atmega328 нет ЦАП.
Точность внутреннего эталона: ± 0,5%, у ATmega328 ± 1,5%.
Встроенный источник эталонного напряжения с калибровкой 1,024В/2,048В/4,096В ±1%.
Внутренний калибруемый RC генератор на 32 кГц, для функции счетчика в реальном времени.
Поддерживает до 9 выходов PWM, 4 программируемых управления мертвой зоной.
Интерфейс SWD (Serial Wire Debug).
Встроенный 1% калибруемый 32 МГц RC генератор.
Встроенный 1% откалиброванный 32 кГц RC генератор.
Шесть сильноточных двухтактный вводов-выводов, поддерживающих высокоскоростные ШИМ-приложения.
Самое низкое энергопотребление: 1 мкА при 3,3 В.
Максимальный выходной ток 3V3: 500мА.
Рабочее напряжение: 1,8 В ~ 5,5 В.
Рабочая температура: -40C ~ + 85C.
Встроенный GUID (уникальный идентификатор) может быть использован для шифрования программ чипа.
Отсутствие фьюзов.
Отличие LGT8F328D от LGT8F328P
LGT8F328D | LGT8F328P |
От внешнего кварца может работать на частоте до 20 МГц | От внешнего кварца может работать на частоте до 32 МГц |
Один 16-разрядный таймер | Два 16-разрядных таймера |
Поддерживает до 6 выходных сигналов PWM | Может поддерживать до 9 выходов PWM |
8-канальный, 12-битный АЦП | 12-канальный 12-битный АЦП |
Внутренний источник опорого напряжения 1,25В/2,56В ±1% | Внутренний источник опорного напряжения 1.024V/2.048V/4.096V ± 1% |
Два 8-разрядных ЦАП | Один 8-разрядный программируемый ЦАП |
Не загружаются скетчи через CH340G | Поддерживает CH340G |
Входы и выходы XI LGT Nano
Цифровые пины: 14 шт, могут быть как входами, так и выходами (0 - 13).
ШИМ: 6 шт. (D3, D5, D6, D9, D10, D11).
Аналоговые входы: 8 шт. (А0 - А7). Все аналоговые входы могут использоваться как цифровые пины (14 - 21). В ATmega328 можно задействовать только 6 аналоговых входов.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).
UART: 0(RX), 1(TX).
I2Cс: A4(SDA), A5(SCL).
ЦАП: DAC0 (8-битный).
Reset: тоже что и кнопка "Сброса".
Светодиод SCK подключен к 13 пину, светодиод PWR сигнализирует о наличии напряжения питания. Оба светодиода горят синим цветом.
DTR: используется для автоматического сброса платы при прошивке.
VCC: подаётся питание на плату. Питать плату можно от 3,3 или 5В, при этом от напряжение не зависит тактовая частота микроконтроллера. У ATmega328 частота зависит от питающего напряжения.
SWD: используется для отладки микроконтроллера (SWC, SWD), через специальный программатор SWDICE mkII Pro.
Подключение к ПК
Для подключения платы к компьютеру нужно воспользоваться USB - TTL переходником (PL2303, CP2102, CH340G). В отличии от WEMOS XI (LGT8F328D), XI LGT Nano работает и с CH340G.
Подключаем согласно таблице:
XI LGT nano | USB - TTL |
GND | GND |
VCC | 5V или 3,3V |
TX | RX |
RX | TX |
D | GRN(DTR) если имеется |
Питание 5 или 3,3 Вольт, не имеет значение.
Если на вашем USB-TTL переходнике имеется пин GRN(DTR), подключаете его к пину D на плате.
Светодиодный индикатор PWR будет гореть, а SCK перемигиваться, если скетч Blink был уже загружен с завода.
Программирование XI LGT Nano через Arduino IDE
Для программирования XI LGT Nano через Arduino IDE необходимо применить патч от LogicGreen - Larduino_HSP_v3.6c (Arduino IDE версии 1.8.х и выше), либо Larduino_hsp_v3.5 (если используется Arduino IDE ниже версии 1.8.х).
Распаковываем архив патча, папки: "sketches", "hardware" и "libraries" копируем в папку "Arduino", вашей Arduino IDE. На вопрос переписать файлы, соглашаемся. Если применяете патч Larduino_hsp_v3.5, то копируете только "hardware" и "libraries".
После запуска Arduino IDE в разделе "Инструменты" - "Плата:" будут доступны новые платы, из которых выбираем "LGT8F328P-LQFP32 MiniEVB".
Можно так же использовать патч от Wemos. Как его установить, я подробно описывал.
Скачать с репозитория Wemos
Скачать с моего хранилища MEGA
Среди добавившихся плат от Wemos выбираем плату LGT Nano.
Загрузка скетча в XI LGT Nano
Пробуем загрузить в плату скетч Blink, не забываем, что вместо LED_BUILTIN в скетче, нужно подставить номер пина, на котором подключен светодиод (светодиод SCK подключен к 13 пину), в противном случае получите ошибку 'LED_BUILTIN' was not declared in this scope.
1. Открываем скетч "Blink".
2. В "Инструменты" - "Плата:" выбираем "LGT8F328P-LQFP32 MiniEVB" или "LGT Nano", в зависимости от патча.
3. В "Порт:" выбираем номер порта, на котором висит USB - TTL переходник, в примере COM12.
4. Нажимаем кнопку для загрузки скетча в плату.
5. Как только появится надпись "Загрузка..." или "Вгружаем..." (в зависимости от версии Arduino IDE), кратковременно нажимаем кнопку "Reset" на плате XI LGT Nano
6. В случае удачной прошивки, надпись сменится на "Загрузка завершена" или "Взрузили".
Если на вашем USB-TTL переходнике имеется пин GRN(DTR) и был подключен к пину D на плате, кнопку Reset не придётся нажимать во время загрузки скетча, плата сама сделает сброс.
Настройка LGT8F328P на тактовую частоту 32МГц
Рассмотрим как запустить микроконтроллер на частоте 32МГц от внутреннего RC-генератора.
1. Должен быть установлен в Arduio IDE патч от LogicGreen (Larduino_HSP_v3.6c).
2. Перейдём в папку "avr", которая находится в вашей Arduino IDE по следующему пути: "hardware" - "LGT" - "avr".
В этой папке будет файл boards.txt. Если его открыть в каком нибудь текстовом редакторе, например Notepad++, то увидим строку "lardu_328p.build.f_cpu=16000000L"
Её нужно поменять на "lardu_328p.build.f_cpu=32000000L" и сохранить. Если будет необходимость работать на 16МГц, то строку придётся вернуть назад. Можно закомментировать символом"#" старую строку и добавить новую.
А можно удалить этот файл и вместо него загрузить другой с изменениями, в котором есть возможность работать с платой на 16 или 32МГц и больше ничего не придётся менять и удалять.
Теперь можно выбирать на какой частоте нужно работать.
3. При работе на частоте 32МГц, в скетчах первой строкой нужно добавлять строку "#include <avr/power.h>", что бы иметь возможность изменять частоту прескалера.
Давайте посмотрим пример скетча от Ральфа Бэкона, которым можно протестировать скорость микроконтроллера.
Как можем видеть, эта строка идёт первой, далее остальной код скетча. Скетч можно скачать в репозитории Ральфа или с моего хранилища MEGA.
4. В секцию void setup() обязательно добавляйте строку "clock_prescale_set(clock_div_1);", это позволит МК работать на 32МГц.
Эта же строка в скетче Ральфа. Загрузим скетч и увидим, насколько микроконтроллер работает быстрее на 32МГц. Скетч должен вычислить 10000 простых чисел, посмотрим за какое время он это сделает.
Откроем монитор последовательного порта и немного подождём, вычисления должны произойти за 59 секунд. Если у вас другие результаты, но вы всё правильно сделали, возможно ваша плата не поддерживает эту частоту. Теперь посмотрим за какое время этот тест пройдёт плата на 16МГц
Результат 118 секунд, в два реза медленнее.
Строки с пунктов 3 и 4 нужно добавлять во все скетчи, что бы плата работала на частоте 32МГц. В Atmega328, для переключение тактовой частоты, пришлось бы перешивать фьюзы, здесь же всё намного проще, всё меняется прямо в скетче.
Проведём ещё один тест, для которого буду использовать модифицированный Деном Ватсоном скетч, который в оригинале включён в программу тестирования скорости Arduino Show Info. Скетч можно скачать с репозитория Дена или с моего хранилища MEGA. Сравним скорость Atmega328 на 16МГц и LGT8F328P на 32МГц, результаты выводятся с микросекундах (us).
Как видим, LGT8F328P рулит.
Использование выводов PB6 и PB7
В корпусе QFP32, микроконтроллера LGT8F328P, выводы 7 (PB6) и 8 (PB7) могут использоваться для подключения внешнего кварца, но если тактирование МК производится от внутреннего RC-генератора, эти выводы можно задействовать в качестве пинов вводов-выводов.
Для их использования необходимо изменить файл "pins_arduino.h", который находится в Arduino IDE по пути: "hardware" - "LGT" - "avr" - "variants" - "standard". Просто меняем этот файл на уже отредактированный.
Скачать pins_arduino.h
После этих изменений, у нас на плате появится два новых цифровых пина D27 (PB6) и D28 (PB7).
Открываем стандартный скетч Blink и подставляем в него по очереди 27 и 28, проверяем как мигает отдельный светодиод, подключенный через гасящий резистор 220Ом - 1Ком.
Использование уникального идентификатора GUID
У LGT8F328P, как и у LGT8F328D, в отличии от ATmega328, имеется уникальный идентификатор, его можно использовать в своем программном коде для шифрования.
void setup() { Serial.begin(9600); } // the loop function runs over and over again forever void loop() { uint32_t guid = *(uint32_t*)&GUID0 ; Serial.print("GUID of this device: "); Serial.println(guid, HEX); delay(1000); } |
Доступен только для чтения, что бы его узнать, загрузите скетч.
Затем откройте монитор последовательного порта, что бы увидеть уникальный идентификатор своей платы.
Прошивка загрузчика для LGT8F328P
В отличии от LGT8F328D, отладку которого можно произвести через Arduino UNO/Nano или их аналоги, выступающие в роли ISP программатора, для LGT8F328P потребуется специальный программатор SWDICE mkII Pro.
Вся загвоздка здесь в том, что он стоит дороже, чем плата с микроконтроллером и если ли бы речь шла о каком то серийно-производящемся девайсе, то покупка программатора была бы оправдана. Если же его использовать в любительских целях, то считаю такую покупку нецелесообразной. Недавно я списался с представителями LogicGreen, в надежде получить схему и прошивку программатора, для его самостоятельной сборки. В ответ сотрудник компании выслал в архиве всё, что у него было по этому программатору. Как разберу архив, обязательно поделюсь информацией.
Это не все возможности микроконтроллера LGT8F328P, которые будет интересно использовать, впереди ещё работа с ЦАП, с внешним резонатором 32МГц и другие не менее интересные возможности. На изучение всего этого требуется время, а значит продолжение следует.
Комментарии
Не всё так просто. Программатор построен на NUC123LD4AN0, которой не могу найти в Украине. Конторы, которые торгуют продукцией NUVOTON, не имеют в наличии его и не могут привезти. На Алиэкспрес цена конская. Дешевле купить отладочную плату DFRDUINO M0 (до $10) и с неё вытянуть. Но учитывая, что кроме этого МК нужно ещё кучу деталей и сама плата, то единичное изготовление выйдет дороже готового программатора ($17.10) и это всё только для интереса. У заграничных поставщиков, доставка единичного чипа выйдет дороже, чем сам чип. Поэтому, к программатору вернусь, как только смогу достать МК по адекватной цене.
Скоро выложу всё что имеется.Ищу микроконтроллер где купить.
В STLink-ке используется МК STM32, а в SWDICE mkII Pro - NUC122-48P. Не думаю что софт подойдёт.
У меня есть архив документации по SWDICE mkII Pro (схема, софт, драйвера) как появится время изучу более подробно.
RSS лента комментариев этой записи