对LoRaWAN修改入网速率和入网间隔的说明

2021-03-10 13:42:52 浏览数 (2)

一、修改入网速率

在RegionCN470.c中有如下函数:

代码语言:javascript复制
int8_t RegionCN470AlternateDr( AlternateDrParams_t* alternateDr ){    int8_t datarate = 0;
    if( ( alternateDr->NbTrials % 48 ) == 0 )    {        datarate = DR_0;    }    else if( ( alternateDr->NbTrials % 32 ) == 0 )    {        datarate = DR_1;    }    else if( ( alternateDr->NbTrials % 24 ) == 0 )    {        datarate = DR_2;    }    else if( ( alternateDr->NbTrials % 16 ) == 0 )    {        datarate = DR_3;    }    else if( ( alternateDr->NbTrials % 8 ) == 0 )    {        datarate = DR_4;    }    else    {        datarate = DR_2;    }    return datarate;}

可以看出:入网的时候速率是不断调整的,主要是与入网的次数有关,入网次数是48的倍数的时候使用DR_0,入网次数是32的倍数的时候使用DR_1,以此类推,其余入网的时候使用DR_2(对CN470来说就是SF10)。如果想要修改入网速率,就可以根据实际情况调整。

二、修改入网间隔

在RegionCommon.c文件中有如下函数:

代码语言:javascript复制
#define BACKOFF_DC_1_HOUR       100#define BACKOFF_DC_10_HOURS     1000#define BACKOFF_DC_24_HOURS     10000
代码语言:javascript复制
uint16_t RegionCommonGetJoinDc( TimerTime_t elapsedTime ){    uint16_t dutyCycle = 0;    if( elapsedTime < 3600000 )    {        dutyCycle = BACKOFF_DC_1_HOUR;    }    else if( elapsedTime < ( 3600000   36000000 ) )    {        dutyCycle = BACKOFF_DC_10_HOURS;    }    else    {        dutyCycle = BACKOFF_DC_24_HOURS;    }    return dutyCycle;}

elapsedTime表示过去的时间,可以看出随着时间往后,入网的间隔越久。如果要改变入网时间,可以修改上面的三个宏。

======================================

相关阅读

LoRa串口透传

LoRa连接到腾讯云物联网平台

STM32与LoRa低功耗调试总结

0 人点赞