LoRa Basics™Modem用户手册v1.0文档
移植
概述
单片机的需求
软件MCU复位。
具有1ms分辨率的计时器(通过扩大接收窗口可以实现计时器精度补偿)。
SPI控制器。
随机数生成器。
非易失性存储用于调制解调器状态存储。
建议使用专用的(非共享的)GPIO MCU收发器中断。
最坏情况的堆栈使用情况目前是未知的。一个执行连接和一些上行的简单示例使用了大约2kB的堆栈RAM。
STM32L476的RAM和Flash要求如下所示。这些值是通过修改应用程序/ lorawan / makefile
,及建筑物,详情如下:
APP_TRACE ?= no MODEM_TRACE ?= no DEBUG ?= 0 OPT ?= -O2
$使地区= EU_868 US_915、CN_470_RP_1_0 CN_470
文本数据bss12月十六进制文件名5220052220.一个lr1110_bootloader.o12420012424达lr1110_crypto_engine.o150015flr1110_driver_version.o25590025599fflr1110_radio.o486004861 e6lr1110_regmem.o1540001540604lr1110_system.o214000214085clr1110_wifi.o1670001670686lr1110_gnss.o241400241496eral_lr1110.o23600236电子商务ralf_lr1110.o2755002755ac3radio_planner.o32003220.radio_planner_hal.o56400564234smtc_modem_api_lr1110_crypto_engine.o1340013486smtc_modem_api_lr1110_system.o1618027804398112elorawan_api.o760007602f8dm_downlink.o47271739451381412modem_context.o45900182664161910smtc_modem.o239206403032bd8smtc_modem_test.o756007562f4fifo_ctrl.o52005234modem_utilities.o106001066一个smtc_modem_services_hal.o950009503.b6smtc_clock_sync.o91200912390lorawan_certification.o32443.6353882f2amodem_supervisor.o5800583.一个almanac_update.o23000230e6流.o188200188275一个玫瑰.o8100081032一个alc_sync.o1334001334536file_upload.o116102411854a1lr1110_se.o9361609523.b8smtc_modem_crypto.o2971002971b9b冰山region_cn_470.o1601001601641region_cn_470_rp_1_0.o1555001555613region_eu_868.o2565002565a05region_us_915.o77980077981 e76lr1_stack_mac_layer.o2764002764acclr1mac_core.o6060060625elr1mac_utilities.o59080059081714smtc_real.o1313001313521smtc_duty_cycle.o83600836344smtc_lbt.o19808019887c4lr1mac_class_c.o7272444629979067134db(总数)
单片机的需求
软件MCU复位。
具有1ms分辨率的计时器(通过扩大接收窗口可以实现计时器精度补偿)。
SPI控制器。
随机数生成器。
非易失性存储用于调制解调器状态存储。
建议使用专用的(非共享的)GPIO MCU收发器中断。
最坏情况的堆栈使用情况目前是未知的。一个执行连接和一些上行的简单示例使用了大约2kB的堆栈RAM。
STM32L476的RAM和Flash要求如下所示。这些值是通过修改应用程序/ lorawan / makefile
,及建筑物,详情如下:
APP_TRACE ?= no MODEM_TRACE ?= no DEBUG ?= 0 OPT ?= -O2
$使地区= EU_868 US_915、CN_470_RP_1_0 CN_470
文本数据bss12月十六进制文件名5220052220.一个lr1110_bootloader.o12420012424达lr1110_crypto_engine.o150015flr1110_driver_version.o25590025599fflr1110_radio.o486004861 e6lr1110_regmem.o1540001540604lr1110_system.o214000214085clr1110_wifi.o1670001670686lr1110_gnss.o241400241496eral_lr1110.o23600236电子商务ralf_lr1110.o2755002755ac3radio_planner.o32003220.radio_planner_hal.o56400564234smtc_modem_api_lr1110_crypto_engine.o1340013486smtc_modem_api_lr1110_system.o1618027804398112elorawan_api.o760007602f8dm_downlink.o47271739451381412modem_context.o45900182664161910smtc_modem.o239206403032bd8smtc_modem_test.o756007562f4fifo_ctrl.o52005234modem_utilities.o106001066一个smtc_modem_services_hal.o950009503.b6smtc_clock_sync.o91200912390lorawan_certification.o32443.6353882f2amodem_supervisor.o5800583.一个almanac_update.o23000230e6流.o188200188275一个玫瑰.o8100081032一个alc_sync.o1334001334536file_upload.o116102411854a1lr1110_se.o9361609523.b8smtc_modem_crypto.o2971002971b9b冰山region_cn_470.o1601001601641region_cn_470_rp_1_0.o1555001555613region_eu_868.o2565002565a05region_us_915.o77980077981 e76lr1_stack_mac_layer.o2764002764acclr1mac_core.o6060060625elr1mac_utilities.o59080059081714smtc_real.o1313001313521smtc_duty_cycle.o83600836344smtc_lbt.o19808019887c4lr1mac_class_c.o7272444629979067134db(总数)
软件MCU复位。
具有1ms分辨率的计时器(通过扩大接收窗口可以实现计时器精度补偿)。
SPI控制器。
随机数生成器。
非易失性存储用于调制解调器状态存储。
建议使用专用的(非共享的)GPIO MCU收发器中断。
应用程序/ lorawan / makefile
,及建筑物,详情如下:APP_TRACE ?= no MODEM_TRACE ?= no DEBUG ?= 0 OPT ?= -O2
$使地区= EU_868 US_915、CN_470_RP_1_0 CN_470
文本数据bss12月十六进制文件名5220052220.一个lr1110_bootloader.o12420012424达lr1110_crypto_engine.o150015flr1110_driver_version.o25590025599fflr1110_radio.o486004861 e6lr1110_regmem.o1540001540604lr1110_system.o214000214085clr1110_wifi.o1670001670686lr1110_gnss.o241400241496eral_lr1110.o23600236电子商务ralf_lr1110.o2755002755ac3radio_planner.o32003220.radio_planner_hal.o56400564234smtc_modem_api_lr1110_crypto_engine.o1340013486smtc_modem_api_lr1110_system.o1618027804398112elorawan_api.o760007602f8dm_downlink.o47271739451381412modem_context.o45900182664161910smtc_modem.o239206403032bd8smtc_modem_test.o756007562f4fifo_ctrl.o52005234modem_utilities.o106001066一个smtc_modem_services_hal.o950009503.b6smtc_clock_sync.o91200912390lorawan_certification.o32443.6353882f2amodem_supervisor.o5800583.一个almanac_update.o23000230e6流.o188200188275一个玫瑰.o8100081032一个alc_sync.o1334001334536file_upload.o116102411854a1lr1110_se.o9361609523.b8smtc_modem_crypto.o2971002971b9b冰山region_cn_470.o1601001601641region_cn_470_rp_1_0.o1555001555613region_eu_868.o2565002565a05region_us_915.o77980077981 e76lr1_stack_mac_layer.o2764002764acclr1mac_core.o6060060625elr1mac_utilities.o59080059081714smtc_real.o1313001313521smtc_duty_cycle.o83600836344smtc_lbt.o19808019887c4lr1mac_class_c.o7272444629979067134db(总数)
哈尔实现LBM_DIR / smtc_modem_hal / smtc_modem_hal.h
smtc_modem_hal_reset_mcu ()
无效smtc_modem_hal_reset_mcu(无效);
-
短暂的
-
LoRa基础调制解调器可能需要重置MCU。例如,在初始启动时,或者如果存储在非易失性内存中的状态被损坏,一个新的配置将写入非易失性内存,MCU将被重置。
smtc_modem_hal_reset_mcu ()
无效smtc_modem_hal_reset_mcu(无效);
无效smtc_modem_hal_reset_mcu(无效);
LoRa基础调制解调器可能需要重置MCU。例如,在初始启动时,或者如果存储在非易失性内存中的状态被损坏,一个新的配置将写入非易失性内存,MCU将被重置。
smtc_modem_hal_reload_wdog ()
无效smtc_modem_hal_reload_wdog(无效);
无效smtc_modem_hal_reload_wdog(无效);
- 短暂的
-
如果您的HAL实现配置了看门狗定时器,那么您可能也希望实现它来重新加载看门狗定时器。目前,LoRa Basics Modem中真正调用这个HAL API命令的唯一代码是测试代码
smtc_modem_test.c
.
smtc_modem_hal_get_time_in_s ()
uint32_tsmtc_modem_hal_get_time_in_s(无效);
uint32_tsmtc_modem_hal_get_time_in_s(无效);
- 短暂的
-
LoRa Basics Modem使用此命令来帮助执行各种LoRaWAN®活动,这些活动对时间精度要求不高,例如nb_trans重发。
- 返回
-
以秒为单位的当前系统正常运行时间。
smtc_modem_hal_get_time_compensation_in_s ()
int32_tsmtc_modem_hal_get_time_compensation_in_s(无效);
int32_tsmtc_modem_hal_get_time_compensation_in_s(无效);
- 短暂的
-
假设,由于单片机时钟不准确,主时间源用于
smtc_modem_hal_get_time_in_s ()
明显滞后或领先于实时。如果MCU HAL开发人员能够量化这个偏差,并计算出一个整数秒数,这将额外更正时间源,它应该由这个HAL API命令返回。否则,该命令应该返回值0。 - 返回
-
时间源的附加修正。如果未知,返回零。
smtc_modem_hal_get_compensated_time_in_s ()
uint32_tsmtc_modem_hal_get_compensated_time_in_s(无效);
uint32_tsmtc_modem_hal_get_compensated_time_in_s(无效);
- 短暂的
-
该命令的具体实现如下:
uint32_tsmtc_modem_hal_get_compensated_time_in_s(){返回smtc_modem_hal_get_time_compensation_in_s()+smtc_modem_hal_get_time_in_s();}
请注意
将来,这个HAL API命令可能会被删除。
请注意
ALCSync服务可用于从网络GPS时钟获得精确的时间。目前,ALCSync实现是唯一使用补偿时间的LoRa Basics Modem代码,如上所述。这似乎没有必要,因为ALCSync的目的是提供一个精确的时钟。但是,如果时间被准确补偿smtc_modem_hal_get_time_compensation_in_s ()而且smtc_modem_hal_get_compensated_time_in_s (), ALCSync将需要更少的网络活动来保持时钟完美同步。
- 返回
-
时间源的附加修正。如果未知,返回零。
smtc_modem_hal_get_time_in_ms ()
uint32_tsmtc_modem_hal_get_time_in_ms(无效);
uint32_tsmtc_modem_hal_get_time_in_ms(无效);
- 短暂的
-
目前,该命令用于对无线电中断进行时间戳记录和繁忙等待,直到该打开RX窗口。
- 返回
-
系统正常运行时间,以毫秒为单位。
smtc_modem_hal_start_timer ()
无效smtc_modem_hal_start_timer(uint32_t毫秒,无效(*回调)(无效*上下文),无效*上下文);
无效smtc_modem_hal_start_timer(uint32_t毫秒,无效(*回调)(无效*上下文),无效*上下文);
- 短暂的
-
这个HAL API命令应该启动一个计时器,它将在请求的时间过期。到期时,它应该调用所提供的回调,并为所提供的回调提供上下文作为它的唯一论据。
LoRa Basics Modem的当前设计只在中断上下文中禁用中断执行所提供的回调的情况下进行了测试。
请注意
这个回调函数可以使用MCU SPI设备与无线电通信。
- 参数
-
(在)
毫秒
回调执行前的毫秒数
(在)
回调
回调执行
(在)
上下文
参数将传递给回调函数
smtc_modem_hal_stop_timer ()
无效smtc_modem_hal_stop_timer(无效);
无效smtc_modem_hal_stop_timer(无效);
- 短暂的
-
这个HAL API命令应该停止已经启动的计时器
smtc_modem_hal_start_timer ()
.当计时器没有运行时,可能会调用此命令。