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

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

3天内不再提示

实战经验 | 如何使用 S2LP 的 sniff 模式同时满足通讯和低功耗要求

STM32单片机 来源:未知 2023-12-16 15:55 次阅读


关键词:S2LP, Sniff 模式,低功耗


目录预览

1、引言

2、预设应用场景

3、LDC/Sniff 模式简介

4、解决方案

5、小结


01

引言


某些客户在其 S2LP 的设计方案中,发送端设备常供电,可以不考虑低功耗;而接收端设备一般用电池功能,对低功耗的要求比较高。发送和接收端的通讯是异步的,也就是说发送端在满足某些检测条件的情况下,可以在任意时刻发送数据包;而要求接收端设备在满足其低功耗要求的情况下,及时接收到数据包,保证响应的实时性。针对以上的应用场景,一般推荐客户使用 S2LP 的 sniff 模式。


02

预设应用场景


发送端设备(如烟感设备等)可能随时收到警报信息,在任意时刻收到警报信息后将连续发送数据包,连续发包时长 10 秒钟。


数据包结构如图 1。2-FSK 调制方式,Data rate=38.4Ksps, 中心频点=868MHz。


图1.数据包格式


根据图 1 数据包格式,可知前导码占 576 个 bit,同步字 4 字节,用户数据占 25 个字节,采用 1 字节 CRC 校验字段。

• 数据包中每个 bit 发送的时间= 1/38.4Ksps≈26us。

• 前导码时长=576/38.4Ksps=15ms。

• 前导码+同步字时长= (576+32)/38.4Ksps=15.83ms。

• 完整数据包发送时长=(576+32+200+8)/38.4Ksps = 21.25ms。

接收端设备要求每 8 秒钟唤醒一次,连续检测 100ms,并确保不会漏掉这 100ms 时间窗口中内的有效数据包。并在 100ms 以后进入低功耗模式。


03

LDC/Sniff 模式简介


S2LP 支持 LDC (Low Duty Cycle) 和 Sniff 这两种模式,这两种模式都可以实现低功耗。区别在于 LDC 模式实现发送、接收端的同步通信;而 Sniff 模式是基于 LDC 模式,在兼顾低功耗的要求的同时支持异步通信。


如图 2,LDC 模式示意图。发送端和接收端设备按照约定的唤醒周期同步进入发送、接收状态和进入低功耗模式。接收端为了保证不丢包,会在约定的唤醒时间点之前唤醒并提前进入接收状态。


图2.LDC 模式


如图 3 所示,Sniff 模式示意图。Sniff 模式下的 S2LP,按照唤醒定时器 (Wakeup Timer) 设定的唤醒时间有规律地从睡眠状态唤醒,并开启一个非常短的称为 FastRX 的接收窗口。在这个 FastRX 接收窗口中检测信号强度 (RSSI 值) 。如信号强度低于设定的阈值,则认为外部没有发送数据包,接收端在 FastRX 窗口结束后快速进入睡眠状态;如检测的信号强度值高于阈值,说明检测到有效数据包在发送,则启动接收超时定时器(RX Timeout),接收端继续保持接收状态,如在超时时间内检测到有效的同步字字段,则停止接收超时定时器,并继续保持接收状态直到接收到完整的数据包后进入低功耗模式;如在超时时间内没有检测到有效的同步字则在接收超时后立刻进入低功耗模式。


图3.Sniff 模式


04

解决方案


基于 ST 官方提供的 S2LP 的 SDK 软件包中的 SDK_Sniff_B 项目实现上述预设应用场景中接收端的功能。代码更改量不多,但基本可以实现预设应用场景中的要求。


基于原始代码,更改函数 SysTickUserAction(图 4),借助于 lSystickCounter 计数变量,实现 8 秒钟和 8 秒窗口开始边界后 100ms 的计时。具体更改内容请参考附件“SDK_Sniff_B.c”


图4.函数 SysTickUserAction 更改内容


在 8 秒窗口开始时间点通过调用函数“S2LPTimerLdcrMode(S_ENABLE);”使能 Sniff模式;在 100ms 时间窗口结束时通过调用函数“S2LPTimerLdcrMode(S_DISABLE);”关闭 Sniff 模式。并调用函数 “S2LPCmdStrobeSleep();”进入低功耗。


需要注意的关键点:

• 为了不错过发送端的前导码,需要将接收端的唤醒定时器设定的时长设定为小于数据包格式中前导码的发送时长。

• 接收端的接收超时时间(RX Timeout)的时长≥前导码时间+同步字时间,但在满足条件的情况下尽量使用小的设定值,有助于降低功耗。

• 初始化结束后通过函数“S2LPTimerLdcrMode”可以直接打开、关闭 sniff 模式。并结合函数“S2LPCmdStrobeSleep();”控制 S2LP 的低功耗模式。


4.1.验证方法和结果


4.1.1. 接收端功能测试平台


使用一套“NUCLEO-L053R8+X-NUCLEO-S2868A1”测试平台运行更改后的SDK_Sniff_B 项目程序。使用 ST 官方提供的 X-NUCLEO-LPM01A 功耗测试板,通过 XNUCLEO-S2868A1 板上的 JP1 测试 S2LP 的工作状态, 通过抓取 S2LP 的实时功耗确认预设场景中 8 秒时间窗口和 100ms 接收窗口的定时是否正确?以及 S2LP 是否能正确进入低功耗模式?测试平台如图 5 所示


图5.测试平台


测试结果如图 6 所示,上电初始化后,由于已经使能了 sniff 模式,但第一个 8 秒窗口计时还没有溢出,所以一直保持sniff工作模式(客户也可以更改代码使其在初始化后立刻进入低功耗模式)。第二个 8 秒窗口开始后的 100ms 还处于 sniff 工作状态。当第二个 8 秒窗口中的 100ms 接收窗口结束后,S2LP 进入低功耗模式。后续的 8 秒窗口以此类推。从图6 中还可以看到每个 100ms 中有 7 个 FastRX 窗口,这是因为原始代码中把唤醒时间设定为差不多 12.9ms(必须小于前导码时间 15ms),那么在 100ms 的接收窗口里正好可以容纳7 个 FastRX 快速接收窗口。


图6.S2LP 功能测试结果


根据图 6 测试结果,证明更改后的 SDK_Sniff_B 代码运行结果符合预设应用场景的要求。


4.1.2. 验证数据包发送接收


发送接收测试平台如图 7, 使用两套 NUCLEO-L053R8+X-NUCLEO-S2868A1 测试平台:

• DevB 作为接收端,运行前面的 SDK_Sniff_B 程序。


图7.发送接收测试平台说明


• DevA 模拟应用场景中的发送端设备,烧录 SDK 中默认的 S2LP_CLI_Project 程序,通过 USB 线连接 PC 段的 GUI 工具(如图 8) 。按照预设场景分别设定调制方式为 2-FSK,前导码,用户数据(Payload)。保证连续发送的数据包数量和发送间隔的设置值使发送端的连续发送时间维持 10 秒钟。


图8.S2LP GUI 工具界面及参数设定


验证结果,S2LP GUI 工具每次点击“START”按键,在其连续过程中接收端设备必然可以收到一个数据包,则实验结果成功。


图9.数据包接收状态


05

小结


S2LP 支持的 LDC 模式和 sniff 模式都是低功耗模式,LDC 模式支持同步通讯的场景,Sniff 模式支持异步通讯模式。客户基于自己的应用场景,可以选择合适的模式。另外通过附加的定时控制 S2LP 在 sniff 模式下的工作时长可以进一步降低 S2LP 的功耗。

完整内容请点击“阅读原文”下载原文档。


原文标题:实战经验 | 如何使用 S2LP 的 sniff 模式同时满足通讯和低功耗要求

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

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

    关注

    6001

    文章

    43973

    浏览量

    620854
  • STM32
    +关注

    关注

    2239

    文章

    10673

    浏览量

    348770

原文标题:实战经验 | 如何使用 S2LP 的 sniff 模式同时满足通讯和低功耗要求

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    BlueNRG-LP有时无法进入低功耗模式的原因?

    1-调用HAL_PWR_MNGR_Request(POWER_SAVE_LEVEL_STOP_NOTIMER, wakeupIO,stopLevel)有时SOC无法进入低功耗模式,还是处于RUNNING模式,求解???
    发表于 03-28 06:50

    ESP32-S3模组是怎么配置低功耗模式的?低功耗模式功耗大概是多少?

    经常有人问S3模组是怎么配置低功耗模式的?低功耗模式功耗大概是多少?下面小启就跟大家讲下S3模组低功耗
    的头像 发表于 01-26 08:03 1088次阅读
    ESP32-S3模组是怎么配置<b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>的?<b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>下<b class='flag-5'>功耗</b>大概是多少?

    SEGGER调试低功耗模式

    低功耗模式是现代嵌入式系统设计中一个非常重要的考虑因素。为了延长电池续航时间、降低能耗以及满足可持续发展的需求,嵌入式系统需要能够有效地进入低功耗
    的头像 发表于 01-02 16:36 223次阅读

    实战经验 | 如何选择 S2-LP 的外部晶体

    关键词:晶体, TCXO 目录预览 1、前言 2、S2-LP 外部晶体的选择问题分析 3、频偏的测试及调试 4、小结 01 前言 鉴于经常有基于 S2-LP 的客户对如何选择外部晶体,如何选择外部
    的头像 发表于 12-22 13:25 227次阅读
    <b class='flag-5'>实战经验</b> | 如何选择 S2-<b class='flag-5'>LP</b> 的外部晶体

    PY32L020单片机,超低功耗,多种低功耗模式,休眠电流最低0.7uA

    最高48MHz。芯片有TSSOP20, QFN20两种封装类型。PY32L020 单片机集成I2C、SPI、USART 等通讯外设,1 路 12bit ADC,2 个 16bit 定时器,一个
    发表于 12-20 16:02

    STM32Lx低功耗实战设计

    ST低功耗MCU产品介绍• STM32Lx 低功耗产品特性• STM32Lx 低功耗模式对比• 低功耗MCU ULPBench•
    发表于 09-11 06:04

    S2-LP用户手册

    S2-LP 是高性能超低功耗 RF收发器,适用于 sub-1 GHz 频段的 RF 无线应用。它能够在免许可证的 ISM 和SRD 频带下(433、512、868 和 920 MHz)运行,但也可以
    发表于 08-14 11:04

    如何在S2-LP上启用单播/广播通信

    S2-LP 是一款高性能超低功耗的 RF收发器,适用于 sub-1 GHz 频段的 RF 无线应用。它能够在免许可证的 ISM 和 SRD 频段下(433、512、868 和 920 MHz)工作
    发表于 08-14 07:26

    BLUENRG-LP无线处理器:符合未来要求的蓝牙低功耗5.2可编程片上系统

    电子发烧友网站提供《BLUENRG-LP无线处理器:符合未来要求的蓝牙低功耗5.2可编程片上系统.pdf》资料免费下载
    发表于 08-01 16:27 0次下载
    BLUENRG-<b class='flag-5'>LP</b>无线处理器:符合未来<b class='flag-5'>要求</b>的蓝牙<b class='flag-5'>低功耗</b>5.2可编程片上系统

    STM32F1低功耗模式

    很多应用场合对于功耗要求很严格,比如长期无人照看的数据采集仪器,可穿戴设备等。其实很多 MCU都有相应的低功耗模式,以此来降低设备运行时的功耗
    的头像 发表于 07-30 11:08 738次阅读
    STM32F1<b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>

    FreeRTOS空闲任务低功耗模式

    1、通用低功耗模式 如果使用通用低功耗模式的话每个滴答定时器中断都会将处理器从低功耗模式中唤醒,
    的头像 发表于 07-30 11:03 710次阅读

    低功耗系统在降低功耗同时保持精度所涉及的时序因素和解决方案

    本文将介绍低功耗系统在降低功耗同时保持精度所涉及的时序因素和解决方案,以满足测量和监控应用的要求
    的头像 发表于 07-11 16:16 407次阅读
    <b class='flag-5'>低功耗</b>系统在降<b class='flag-5'>低功耗</b>的<b class='flag-5'>同时</b>保持精度所涉及的时序因素和解决方案

    Top和Block实战经验以及DDR接口时序

    IO约束在顶层和模块级的主要命令都是以下几个,但是实际应用的复杂程度不可同日而语,本篇会先介绍模块级IO约束实战经验,然后讲解顶层IO约束复杂性,过程中会介绍DDR接口时序。
    的头像 发表于 06-27 15:07 595次阅读
    Top和Block<b class='flag-5'>实战经验</b>以及DDR接口时序

    CKS32F4xx系列MCU的低功耗模式之睡眠模式

    本课讲为大家讲解CKS32F4xx系列产品的低功耗模式之睡眠(Sleep)模式。MCU为满足某些应用场景:如小型化低容量设备,长期监测设备等,低功耗
    发表于 06-26 10:02 392次阅读
    CKS32F4xx系列MCU的<b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>之睡眠<b class='flag-5'>模式</b>

    什么是低功耗设计呢?

    想必各位ICer们在招聘JD上专门看到低功耗设计经验要求,什么是低功耗设计呢?对于后端工程 师来讲,在物理实现方面就是引入多条电源线
    的头像 发表于 05-15 11:42 766次阅读
    什么是<b class='flag-5'>低功耗</b>设计呢?