0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

二代LoRa模组CAD检测常见异常处理

利尔达科技集团 2024-11-15 01:03 次阅读

在使用LoRa模组的过程中,对于依赖电池供电的设备而言,载波活动检测(CAD)是极为重要的。然而,在实际应用CAD检测时,用户可能会遭遇若干典型的问题。本文旨在对这些问题进行详细解析,以期帮助模组用户更加高效且准确地运用CAD检测功能

过程

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);//定时器初始化)

电流波形如下:

6e7ed2ca-a2aa-11ef-8084-92fbcf53809c.png6e9b4784-a2aa-11ef-8084-92fbcf53809c.png

可见:数据包占用时长约1300秒,中间空余时间约50ms。

然后再看在发送端没有开启时接收端的CAD检测的配置:每给检测周期大概155ms,每个周期中睡眠时间大概100ms,检测窗口大概35ms。

6ea22bc6-a2aa-11ef-8084-92fbcf53809c.png6eb9626e-a2aa-11ef-8084-92fbcf53809c.png6ece6074-a2aa-11ef-8084-92fbcf53809c.png

然后把发送端上电,在看接收端,给检测周期大概155ms,每个周期中睡眠时间大概100ms,检测窗口大概35ms,和没启动发送端时基本相同。

6ed64348-a2aa-11ef-8084-92fbcf53809c.png6eefca16-a2aa-11ef-8084-92fbcf53809c.png6f051fc4-a2aa-11ef-8084-92fbcf53809c.png

按照如如上测试结果,如果接收端CAD检测时只检测的是前导码,则CAD每次检测中CADDONE和CADACTIVITY的比值将远远大于1(比如50:1),如果CAD检测时检测的是LoRa信号,则CADDONE和CADACTIVITY的比值将非常接近大1(比如50:49),实测时如下图(141:140),非常接近于1。所以这就可以回答使用者的一个疑问,就是CAD检测时检测的确实时LoRa信号,而不是只检测前导码。

6f130b70-a2aa-11ef-8084-92fbcf53809c.jpg

03

CADDONE和CADACTIVITY的触发关系

每次启动CAD检测后,CADDONE中断一定会触发,该中断表示CAD检测完毕了,但是是否检测到了LoRa信号无法确定。

是否检测到了LoRa信号了还要看CADACTIVITY是否被触发了,如果CADACTIVITY也被触发了,才说明确实检测到了LoRa信号。

就是说CADDONE中断产生了CADACTIVITY中断未必产生,但是我们的例程中如果CADACTIVITY中断产生了则CADDONE中断一定会产生。

这里只需要看下如下了一个有问题大代码,就清楚了,如下是应用中的一个错误。

6f3a9b5e-a2aa-11ef-8084-92fbcf53809c.png

如上这段代码跑起来的话,会有一个现象:每次启动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)

6f59d17c-a2aa-11ef-8084-92fbcf53809c.png

改善误检测的方法主要有如下:

(1)换个频点

(2)改变参数配置中的极性参数:

G_LoRaConfig.InvertIQ = LORA_IQ_NORMAL; //IQ信号格式,

LORA_IQ_NORMAL:标准模式,

LORA_IQ_INVERTED:反转模式;

(3)改用等效波特率更高的参数配置

(4)最显著的是改变CAD检测的符号个数

6f699d50-a2aa-11ef-8084-92fbcf53809c.png

比如如上测到的误检测率达到20%(如下图41:202)就是在该值使用2时的结果,该值越大越不容易产生误检测。

如下把改制改成8。

6f8c1da8-a2aa-11ef-8084-92fbcf53809c.png

再做如上测试的结果如下:

6faf5a48-a2aa-11ef-8084-92fbcf53809c.png

误检测率降低为0.43%(2:462)。需要说明的是该值用的的比较小的话(比如使用1或者2等),想把误检测率降低到1%以下是不太现实的。

该值使用比较大的值的话可以降低误检测率,但是检测窗口时间长度就会加大。所以这里只能平衡的考虑选用那个值。

05

唤醒包和常规数据包的切换

6fb9d054-a2aa-11ef-8084-92fbcf53809c.png

结论

1、唤醒包就是比较特殊的数据包。
2、接收端CAD检测时检测的是LoRa信号,而不是只检测前导码。
3、CADDONE中断产生了CADACTIVITY中断未必产生,但是我们的例程中如果CADACTIVITY中断产生了则CADDONE中断一定会产生。
4、处理CADDONE中断和CADACTIVITY中断的软件逻辑注意不要错误。

5、CADACTIVITY误检测要想明显降低需要CAD检测窗口时间长度做一定的牺牲。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测
    +关注

    关注

    5

    文章

    4482

    浏览量

    91444
  • CAD
    CAD
    +关注

    关注

    17

    文章

    1090

    浏览量

    72450
  • LoRa
    +关注

    关注

    349

    文章

    1689

    浏览量

    231917
收藏 人收藏

    评论

    相关推荐

    Windows端USB读二代身份证C#样例程序

    本开发包支持USB免驱型、串口型这2种类型的读卡器,支持读取二代居民身份证、M1和CPU卡等。提供动态连接库dll,提供C++(MFC)和C#下的演示程序执行文件和示例源码。动态库文件说明
    发表于 12-21 14:47

    网上关于Nexus7第二代的评测

    ,并非是MI 2S上使用的骁龙 600 MSM8064T)是Nexus 7 二代所使用的处理器型号,采用28nm制造工艺、四核Cortex-A9+单核Adreno 320的组合,最高主频为1.5GHz
    发表于 08-12 17:22

    刚入手的Marshall 马歇尔 Major II 二代xiuxiuxiu~

    前几天刚入手了Marshall Major二代 心情是无比的激动有没有作为一个首次购买马歇尔耳机还历经了JD全球购九九八十一难历时大概十天左右现在终于已经到手的新人 现在只想安安静静的得瑟一下 表示
    发表于 09-13 16:34

    中国第二代导航卫星系统发展到了什么程度?

    二代导航卫星系统与第一导航卫星系统在体制上的差别主要是:第二代用户机可免发上行信号,不再依靠中心站电子高程图处理或由用户提供高程信息,而是直接接收卫星单程测距信号自己定位,系统的用
    发表于 08-14 07:06

    天琴二代芯片用在哪里

    `  谁知道天琴二代芯片用在哪里?`
    发表于 08-28 15:54

    CAD入门学习之如何处理异常文件?

    在使用浩辰CAD制图软件查看别人发来的CAD图纸文件的时候,当遇到文件异常的状况时该怎么处理呢?接下来就给大家分享一下浩辰CAD入门学习之
    发表于 10-21 15:24

    FLIR第二代热像仪ADK有哪些特点?

    FLIR第二代热像仪ADK有哪些特点?FLIR第二代热像仪ADK有哪些功能?
    发表于 07-11 07:27

    二代示波器功能的扩展和改进

    第17章 附件B---功能扩展和改进方向虽然二代示波器实现了很多功能,但是当前依然有很多功能可以扩展和改进,下面为大家提供一些方向。1、外接ADC,DAC模块进行支持,比如AD7606...
    发表于 08-06 06:58

    迅驰二代威廉希尔官方网站

    迅驰二代威廉希尔官方网站 迅驰二代:全新英特尔迅驰移动计算威廉希尔官方网站 平台(代号为Sonoma),该平
    发表于 12-18 10:14 654次阅读

    iPhone SE二代众多消息流出 采用玻璃后盖 支持无线充电

    近日,iPhone SE二代消息频出, 包括最终命名、CAD图以及壳厂渲染图悉数流出 。
    发表于 05-20 09:00 5814次阅读

    AMD第二代Ryzen Threadripper处理器即将开售,一将降价

    AMD的第二代Ryzen Threadripper处理器将在Q3季度正式发售,12nm Zen+核心,同时最多32核心64线程,二代Threadripper预计很快会成为高端玩家的新宠。这样一来
    发表于 07-01 11:26 1172次阅读

    AMD二代Threadripper处理器新包装曝光,比起上一更加酷炫!

    AMD的二代Threadripper处理器已经发布了,不过现在还没正式解禁,预计8月13日才会上市。2018年的二代Threadripper处理器迎来了一次大升级,制程工艺升级到了12
    发表于 08-03 11:34 943次阅读

    利尔达科技集团最新推出了“R”系列Lite版LoRa模组

    2020 年 1 月,LoRa 联盟成员超 500 个,连接节点超 1.45 亿,从事 LoRa 产品开发的公司数量仍在迅速增长。   日前,利尔达科技集团推出了“R”系列 Lite版 LoRa
    发表于 04-28 11:45 1485次阅读

    利尔达第二代LoRaWAN节点模组如何应用?答案在这里!

    最权威的国际组织的认可,使得其国际化影响力得到进一步提升。近日,利尔达正式推出第二代LoRaWAN节点模组,主打更小尺寸、更低功耗、更低成本,帮助客户快速接入LoRa
    的头像 发表于 10-18 09:43 633次阅读
    利尔达第<b class='flag-5'>二代</b>LoRaWAN节点<b class='flag-5'>模组</b>如何应用?答案在这里!

    实战经验 | 如何在用户应用中开启 LoRa CAD

    STM32WL LoRa 发送数据,或做相应的操作。为了降低功耗,STM32WL不能一直处于接收状态,这样功耗会很高。我们可以开启 LoRa CAD(信道活动检测)功能,STM32W
    的头像 发表于 12-26 17:45 1533次阅读
    实战经验 | 如何在用户应用中开启 <b class='flag-5'>LoRa</b> <b class='flag-5'>CAD</b>