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

发布时间:2023-12-28  

01 引言

本文引用地址:

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

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 /Sniff 模式简介

支持 (Low Duty Cycle) 和 Sniff 这两种模式,这两种模式都可以实现低功耗。区别在于 模式实现发送、接收端的同步通信;而 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”可以直接打开、关闭 模式。并结合函数“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 所示,上电初始化后,由于已经使能了 模式,但第一个 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 的功耗。

文章来源于:电子产品世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>