【技术分享】二代LoRa模组CAD检测常见异常处置
2024/11/15
浏览量:4879
过程
01、唤醒包
唤醒包就是一个数据包,只是和通常的数据包有些差距。
如下是一个通常数据包的配置:
G_LoRaConfig.PreambleLength = 0x0008; //前导码长度
G_LoRaConfig.PayloadLength = 190; //数据包长度
即该通常数据包的前导码长度为8,数包长度为190。
把这个通常数据包的配置改一下,如下:
G_LoRaConfig.PreambleLength = 0x00FF; //前导码长度
G_LoRaConfig.PayloadLength = 4; //数据包长度
即该通常数据包的前导码长度为255,数包长度为4。这也是一个数据包,但是这个数据包就能够作为唤醒包了。
所以必要知路唤醒包就是一个数据包,只是和通例的数据包的差距是唤醒包的前导码长度很长有效数据负载部门很短,而通常数据包的前导码长度很短有效数据负载部门能够长些也能够短些。
02、接管端CAD检测时检测的不只是前导码
接管端CAD检测时检测的是LoRa信号,而不是只检测前导码。
先看发送端的数据包配置:
G_LoRaConfig.PreambleLength = 0x0008; //前导码长度
G_LoRaConfig.PayloadLength = 190; //数据包长度
发送的是一个通常数据包。
前导码长度为8,数据负载长度为190,每1.35秒发射一次(MX_TIM3_Init_Ms(1350);//按时器初始化)
电流波形如下:
可见:数据包占用时长约1300秒,中央空余功夫约50ms。
而后再看在发送端没有开启时接管端的CAD检测的配置:每给检测周期或许155ms,每个周期中睡眠功夫或许100ms,检测窗口或许35ms。
而后把发送端上电,在看接管端,给检测周期或许155ms,每个周期中睡眠功夫或许100ms,检测窗口或许35ms,和没启动发送端时根基一样。
依照如如上测试了局,若是接管端CAD检测时只检测的是前导码,则CAD每次检测中CADDONE和CADACTIVITY的比值将远弘远于1(好比50:1),若是CAD检测时检测的是LoRa信号,则CADDONE和CADACTIVITY的比值将极度靠近大1(好比50:49),实测时如下图(141:140),极度靠近于1。所以这就能够回覆使用者的一个疑难,就是CAD检测时检测简直实时LoRa信号,而不是只检测前导码。
03、CADDONE和CADACTIVITY的触发关系
每次启动CAD检测后,CADDONE中断肯定会触发,该中断暗示CAD检测结束了,但是是否检测到了LoRa信号无法确定。
是否检测到了LoRa信号了还要看CADACTIVITY是否被触发了,若是CADACTIVITY也被触发了,才注明的确检测到了LoRa信号。
就是说CADDONE中断产生了CADACTIVITY中断不定产生,但是永利yl23455例程中若是CADACTIVITY中断产生了则CADDONE中断肯定会产生。
这里只必要看下如下了一个有问题大代码,就分了然,如下是利用中的一个谬误。
如上这段代码跑起来的话,会有一个景象:每次启动CAD检测后,CADDONE中断总能检测到,但是CADACTIVITY中断始终检测不到。
这里谬误的原因是使用的是使用了如下逻辑:
if( xxxx)
{xxxx}
else if(判断CADDONE)
{ xxxx }
else if(判断CADACTIVITY)
{xxxx}
如上逻辑谬误的处所就是没有理解明显如上说的CADDONE和CADACTIVITY的触发关系。
正确的逻辑应该是:
if( xxxx)
{xxxx}
if(判断CADDONE)
{
if(判断CADACTIVITY)
{xxxx}
}
04、CADACTIVITY误检测
现实使用中,常;岱⑾种骰嗣挥猩系缁蛘呙挥蟹⑺突叫寻,但是从机端依然会触发CADACTIVITY标志。
这种景象时时被称作误检测。
例如用我司的事俘代码的配置直接测试如上代码,并且关关发送端,此时误检测率达到20%(如下图41:202)
改善误检测的步骤重要有如下:
(1)换个频点
(2)扭转参数配置中的极性参数:
G_LoRaConfig.InvertIQ = LORA_IQ_NORMAL; //IQ信号体式,
LORA_IQ_NORMAL:尺度模式,
LORA_IQ_INVERTED:回转模式;
(3)改用等效波特率更高的参数配置
(4)最显著的是扭转CAD检测的符号个数
好比方上测到的误检测率达到20%(如下图41:202)就是在该值使用2时的了局,该值越大越不容易产生误检测。
如下把刷新改成8。
再做如上测试的了局如下:
误检测率降低为0.43%(2:462)。必要注明的是该值用的的比力幼的话(好比使用1或者2等),想把误检测率降低到1%以下是不太现实的。
该值使用比力大的值的话能够降低误检测率,但是检测窗口功夫长度就会加大。所以这里只能平衡的思考选用那个值。
05、唤醒包和通例数据包的切换
结论
1、唤醒包就是比力特殊的数据包。
2、接管端CAD检测时检测的是LoRa信号,而不是只检测前导码。
3、CADDONE中断产生了CADACTIVITY中断不定产生,但是永利yl23455例程中若是CADACTIVITY中断产生了则CADDONE中断肯定会产生。
4、处置CADDONE中断和CADACTIVITY中断的软件逻辑把稳不要谬误。5、CADACTIVITY误检测要想显著降低必要CAD检测窗口功夫长度做肯定的就义。