Свое знакомство с LoRaWAN я начал с платы STM32WL Nucleo-64 board (MB1389) и базовой станцией Новосибирской «Веги» — БС 1.2. Кстати, в рассылках от STM, вроде, было что в качестве шлюза можно использовать вторую отладочную плату. Какой-то софт для связи через COM порт у них на сайте должен быть.
Первое. Я бы настоятельно рекомендовал зачитать «Кузнецов С.А. Автоматизированная система контроля состояния трубопроводов в пенополиуретановой изоляции на базе устройств высокой степени автономности». (Респект и уважуха!)
Второе. Разрабатывая устройство, обязательно нужен вывод отладочной информации на консоль (порт USART) и переключатель мощности передатчика. Последний можно криво игнорировать на уровне SubGHz_Phy, но получается совсем не изящно.
Дальше все, как всегда, просто. Выбираем пример LoRaWAN_AT_Slave. В соответствии с подробными и качественными руководствами от производителя, настраиваем базовую станцию и пихаем AT команды.
(AN5481)_LoRaWAN®_AT_commands_for_STM32CubeWL_RU
У меня получилось относительно бескровно с чувством, что если Вас обманывают, то не сильно.
Следующий пример из коробки LoRaWAN_AT_Slave_DualCore. Тоже работает…
(AN5406)_How_to_build_a_LoRa®_application_with_STM32CubeWL_RU_V_12_01
(AN5556)_Getting_started_with_STM32WL5x_MCUs_using_IAR_Embedded_Workbench®_and_MDK-ARM_RU
Пока я не попробовал сгенерировать его из CubeMX.
Ну с IAR просто. Запускаем сразу ДВА! В одном проект на CM0PLUS, в другом на CM4. Какой в какой последовательности запускать и где останавливать написано в ReadME примера.
Однако, сгенерированный код примера из CubeMX, это еще не рабочий проект. В этом проекте нужно привести в соответствие с кодом примера некоторые файлы. Стыдно признаться, но я не нашел в документации подробное руководство, кроме «и т.д.»). Поэтому пришлось сравнивать количество строк файлов и добавлять нужное. Кстати, от версии к версии в библиотеке примера большая динамика изменений.
CM0PLUS:
kms_platf_objects_config.h, kms_platf_objects_interface.h, main.c, nvms_low_level.c, nvms_low_level.h, radio_board_if.c, radio_board_if.h.
CM4:
gpio.c, lora_app.c, lora_app.h, sys_app.c, utilities_def.h
Перечень обновленных файлов я привожу из своего проекта. Возможно некоторые из них корректировались не сразу, а в зависимости от моих задач. Полагаю, что задачи примерно у всех одинаковые. Так что сравнить сгенерированный код с кодом проекта примера не повредит.
Я не являюсь ярым фанатиком FreeRTOS, поэтому пришлось вникать в работу Секвенсора. Кстати, как я понял для двух ядерных решений макросы FreeRTOS уже второй версии (могу ошибаться).
AN5289_STM32WB_software_architecture_RU
Для WB мануал несколько подробней, поэтому тоже мельком посмотрел. На сколько я понял, WL & WB отличаются тем, что у WL нижние уровни с открытым кодом, а у WB с закрытым. Моя практика залезть по-глубже показала, что это одно и тоже ))).
Если интересно, привожу «Журнал ковыряния»
Ну а дальше все в силу потребностей и способностей «умения разбираться в чужом коде». Вписываем в пример нужные нам функции, периферию и наслаждаемся.
Эти серии, включая STM32G4, новенькие. Поэтому документацию посмотреть не грех.
(RM0453)_STM32WL5x_Serial_peripheral_interface__Integrated_interchip_sound_(SPI_I2S)_RU
(RM0453)_STM32WL5x_DMA_request_multiplexer_(DMAMUX)_RU
(AN5224)_STM32_DMAMUX_the_DMA_request_router_RU
(RM0453)_STM32WL5x_Low-power_timer_(LPTIM)_RU
(RM0453)_STM32WL5x_Extended_interrupts_and_event_controller_(EXTI)_RU
Ой, прям мечта!.. Там есть пример с обновлением прошивки по воздуху. Кто-нибудь бы оплатил обучение реальным заказом! )))
С уважением Петр.
Реализуем коммерческие проекты.
Возможна работа по договору подряда.
t654rk@mail.ru