【应用笔记】Sub-1G系列产品CW32W031单片机CAD应用参考

news2024/11/29 0:48:14

一、功能介绍 

CW32W031 的射频部分支持 CAD 中断。从 Deepsleep 进入 STB3,开启 CAD 功能并进入 RX 模式后, CW32W031 会检测信道中是否会有 ChirpIOT ™信号 , 如果存在将 CAD-IRQ 置高,MCU 内核可以通过一定的时间来检测 CAD-IRQ 信号是否拉高来判断信道中是否存在 ChirpIOT ™信号。

用户可通过 GPIO11 端口检测 CAD-IRQ 信号,信号检测流程如下:

 图:信道活跃检测(CAD)

图片

注:CW32W031 的 RF 部分有多种中断源,MCU 超时设置是在等待中断的产生,然后判断中断是否为 CAD 中断,从而执行不同的命令。

二、软件设计参考 

2.1 软件设计流程 

1. 芯片初始化; 

2. 配置 CAD 初始化; 

3. 芯片进入接收模式; 

4. 观察 CAD-IRQ 信号。 

2.2 软件设计验证 

2.2.1 验证步骤 

1. 发送模组周期性发送数据包; 

2. 接收模组配置为接收模式; 

3. 使用逻辑分析仪抓取接收端 CAD-IRQ 信号。

2.2.2 SDK 示例

参考代码

ret = rf_init();

if(ret != OK)

{

        dis_err(" RF Init Fail");

        while(1);

}

rf_set_default_para();

rf_set_cad();

rf_enter_continous_rx();

while (1)// 等待逻辑分析仪检测 CAD-IRQ 信号

{

         rf_irq_process();

}‍

示例代码配置了 CAD 初始化,配置 GPIO11 作为 CAD 检测 IO 口,随后进入接收模式。

发送模组周期性发送数据包(数据包 preamble+payload 的持续时间约 20.5ms),用逻辑分析仪抓取接收

模组 GPIO11 波形,观察检测结果。

2.2.3 验证结果

逻辑分析仪抓取结果如下图所示:

图:逻辑分析仪抓取结果(CAD)

图片

根据结果显示,当发送模组发送数据包时,接收模组发生了 CAD-IRQ,CAD 检测引脚 GPIO11 被拉高约 20.5ms,维持一个完整 ChirpIOT ™数据包的时间长度。

三、注意事项

3.1 关于 CAD 影响芯片的接收灵敏度

CAD 功能初始化时,修改了芯片的接收阈值,设置不同的接收阈值,会影响芯片的接收灵敏度,并可能存在CAD 误触发的情况。

uint32_t PAN3028_cad_en(void)

{

        PAN3028_set_gpio_output(MODULE_GPIO_CAD_IRQ);

        If(PAN3028_write_spec_page_reg(PAGE1_SEL,0x0f,0x10)!=OK)

        {

                 return FAIL;

        }

        return OK;

}

接收阈值的设置,需修改 PAN3028_cad_en() 函数中的寄存器配置,默认值为 0x10,修改接收阈值对接收灵

敏度及误触发概率的影响如下(实验数据在屏蔽放环境下测试):

图片

用户在使用 CAD 功能时,需根据应用场景选择修改 PAN3028_cad_en() 函数中的寄存器值(PAGE1_SEL,0x0f, 默认值为 0x10),在使用完 CAD 功能后,建议调用 rf_set_cad_off() 函数,rf_set_cad_off() 函数可以关闭 CAD 功能并将接收阈值恢复。

3.2 关于 SDK 及演示系统板

SDK 中提供了 CAD 功能所需的函数接口,CAD-IRQ 被触发时,检测引脚 GPIO11 会被拉高。演示系统板将GPIO11 连接到了 PB07, 具体信息可前往官网查看 CW32W031 的开发板原理图。

3.3 关于 CAD 使用方法

CW32W031 的射频部分可以对 preamble 和 payload 进行 CAD 检测。

3.3.1 对 preamble 检查方式

当完整的 preamble+payload 信号到来时,用户可以在接收端通过 GPIO 口读取到 CAD-IRQ 信号,CAD 检测引脚 GPIO11被拉高,拉高时间为 preamble+payload的持续时间。此时,接收端可以产生正确的 rxdone结果。

图:逻辑分析仪抓取结果(完整 CAD)

图片

当不完整的 preamble+payload 信号到来时(发射端先进行数据发送,随后接收端在 preamble 时间段内打开了 CAD 检测),此时,用户可以在接收端通过 GPIO 口读取到 CAD-IRQ 信号,CAD 检测引脚 GPIO11 的变化有两种情况:

1.preamble(部分)内含有较完整信息,GPIO11 会被拉高 preamble(部分)+payload 的持续时间。此时,接收端可以产生正确的 rxdone 结果。

图:逻辑分析仪抓取结果(较完整 preamble)

图片

2.preamble(部分)内未含有完整信息,GPIO11 会呈现不规则高 - 低 - 高 - 低变换的现象。此时,接收端不会产生正确的接收结果。

图:逻辑分析仪抓取结果(不完整 preamble)

图片

3.3.2 对 payload 检查方式

当只有 payload 信号到来时(发射端先进行数据发射,随后接收端在 payload 时间段内打开了 CAD 检测),此时,由于 RX-CAD 检测不到 preamble,CAD-IRQ 会呈现不规则高 - 低 - 高 - 低变换的现象。此时,接收端不会产生正确的接收结果。

图:逻辑分析仪抓取结果(只含 payload)

图片

3.3.3 软件应用参考

当设置的 CAD 误触发概率较少,或存在少量误触发率但不影响软件应用时,可以通过检测 CAD-IRQ,GPIO11 上升沿来判断 CAD 触发,可以认为只要收到上升沿就是收到了 payload 信号(建议使用这种方法的接收阈值设为 0x15~0x20)。

当设置的 CAD 误触发概率较高时,需要结合 CAD 检测时间用软件方法来判断 payload 信号,CAD 检测的时间以单个 chirp 持续时间作为单位计算。单个 chirp 持续时间为 2SF/BW(SF 为扩频因子,BW 为带宽,BW单位为 Hz,时间单位为秒)。使用时,建议将检测时间窗口设置为 3 个 chirp 持续时间为佳。用户可以分别在 3 个 chirp 对应的位置检测 CAD 信号,如果同时检测到 CAD 信号(GPIO11 高电平),则可以认为有信号存在。同时,软件设计需要参考 3.3.1 对 preamble 检查方式和 3.3.2 对 payload 检查方式,进行灵活调整。

在打开 CAD 接收后,如果当前空中存在信号,那么芯片需要至少 2 个 chirp 持续时间的检测,GPIO11 才能首次对外输出高电平。一个典型的应用方法为:

1.计算 one_chirp_time = 2SF/BW;

2.配置需要检测的信道,rf_set_cad(),enter_rx;

3.检测 check_cad_inactive(),判断是否检测到 CAD 信号(下面的例程检测了三次,适用于误触发较多的情况)。

uint32_t check_cad_inactive(void)

{

       delay10us(one_chirp_time*2/10);

       if(GPIO_ReadPin(CW_GPIOB, GPIO_PIN_7) != 1)

       {

             return LEVEL_INACTIVE;// 没有 cad

       }

      delay10us(one_chirp_time/10);

      if(GPIO_ReadPin(CW_GPIOB, GPIO_PIN_7) != 1)

      {

            return LEVEL_INACTIVE;

      }

      delay10us(one_chirp_time/10);

      if(GPIO_ReadPin(CW_GPIOB, GPIO_PIN_7) != 1)

      {

            return LEVEL_INACTIVE;

      }

            return LEVEL_ACTIVE;// 有 cad

}

如果误触发较少,或存在少量误触发但不影响软件应用时,可以将检测次数减少为一次(例程如下),或者通过 GPIO11 上升沿作为判断依据。

uint32_t check_cad_inactive(void)

{

        delay10us(one_chirp_time*2/10);

        If(GPIO_ReadPin(CW_GPIOB, GPIO_PIN_7) != 1)

        { 

              return LEVEL_INACTIVE;// 没有 cad

        }

       return LEVEL_ACTIVE;// 有 cad

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DenseNet网络详解及Pytorch实现

DenseNet网络详解及Pytorch实现 DenseNet网络简介 DenseNet(Densely Connected Convolutional Networks)是由Gao Huang等研究人员于2017年提出的一种深度神经网络架构。DenseNet的主要思想是在网络的每一层之间建立密集的连接,这种密集连接…

[NLP] LLM---扩充词表LLama2-构建中文tokenization

使用SentencePiece的除了从0开始训练大模型的土豪和大公司外,大部分应该都是使用其为当前开源的大模型扩充词表,比如为LLama扩充通用中文词表(通用中文词表,或者 垂直领域词表)。那这部分工作有没有意义呢?…

Flutter 中的单元测试:从工作流基础到复杂场景

对 Flutter 的兴趣空前高涨——而且早就应该出现了。 Google 的开源 SDK 与 Android、iOS、macOS、Web、Windows 和 Linux 兼容。单个 Flutter 代码库支持所有这些。单元测试有助于交付一致且可靠的 Flutter 应用程序,通过在组装之前先发制人地提高代码质量来确保不…

【多尺度增强网络:超分】

Remote Sensing Image Super-Resolution via Multiscale Enhancement Network (基于多尺度增强网络的遥感图像超分辨率) 近年来,遥感图像因其特殊的价值而引起了人们的广泛关注。然而,卫星遥感图像通常是低分辨率的,…

案例实践丨基于SkyWalking全链路监控的微服务系统性能调优实践篇

1背景 随着开源社区和云计算的快速推进,云原生微服务作为新型应用系统的核心架构,得到了越来越广泛的应用。根据Gartner对微服务的定义:“微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件。” 微服务之父&…

markdown学习笔记

markdown学习笔记 1.文字&#xff08;依靠HTML&#xff09; 1.1文字缩进-空格转义符 单字符空&#xff1a;&emsp; 半字符空&#xff1a;&ensp;1.2文字对齐 「居中&#xff1a;」<center> 居中 </center> or <p align"center"> 居中 …

Java线程池中哪些事??

需要提前把线程准备好&#xff01;&#xff01;创建线程不是直接从系统申请&#xff0c;而是从池子里拿&#xff01; 等到线程不用了&#xff0c;也是还给池子&#xff01;&#xff01; 池子的目的是为了提高效率 线程的创建虽然比进程轻量&#xff0c;但是在频繁创建的情况下…

【计算机网络】图解应用层协议

图解应用层协议 1.应用层2.远程登录2.1 Telnet2.2 SSH 3.文件传输3.1 FTP3.2 TFTP 4.电子邮件4.1 通信架构4.2 邮件地址4.3 SMTP 协议4.4 POP3 协议4.5 IMAP 协议 5.WWW5.1 URI5.2 HTML5.3 HTTP 6.网络管理应用6.1 DHCP 协议6.2 DNS 协议 1.应用层 我们前面介绍过 TCP / IP 模…

【深度学习】 Python 和 NumPy 系列教程(十一):NumPy详解:3、数组数学(元素、数组、矩阵级别的各种运算)

目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象&#xff08;ndarray&#xff09; 多维数组的属性 1、创建数组 2、数组操作 3、数组数学 1. 元素级别 a. 直接运算 b. 加法&#xff1a;np.add()函数 c. 减法&#xff1a;np.subtract()函数 d. 乘法&#xf…

Redis-带你深入学习数据类型zset

目录 1、zset有序集合 2、zset相关命令 2.1、添加或更新指定的元素——zadd 2.2、获取有序集合zset的元素个数相关命令&#xff1a;zcard、zcount 2.3、返回指定区间元素相关命令&#xff1a;zrange、arevrange、zrangebyscore 2.4、删除相关命令&#xff1a;zpopmax、zp…

C# 模拟button按钮批量锁住与打开

项目需求&#xff1a; 当winform界面上存在多个按钮时&#xff08;大于2个&#xff09;&#xff0c;用户需求为当点击其中一个按钮后&#xff0c;其它按钮全部为禁用&#xff0c;当被点击的按钮后台逻辑执行完成后&#xff0c;再释放所有按钮。用户可再次点击其它按钮。 此案…

Eclipse官网下载历史版本

进入官网 https://www.eclipse.org/ 进入下载页面 选择下载包 同一版本&#xff0c;又有不同类型 Eclipse IDE for Enterprise Java and Web Developers Eclipse IDE for Java Developers 任何Java开发人员必备的工具&#xff0c;包括Java IDE、Git客户端、XML编辑器、Mave…

第33章_瑞萨MCU零基础入门系列教程之DHT11温湿度获取实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

数据采集:数据挖掘的基础

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

解决gyp verb `which` failed python2 Error: not found: python2

运行老项目遇到如下报错 PS C:\Users\demo02> yarn install yarn install v1.22.19 info No lockfile found. [1/5] Validating package.json... [2/5] Resolving packages... warning axios0.18.1: Critical security vulnerability fixed in v0.21.1. For more informati…

4.1.8- Web 应用程序使用的组件进行指纹识别

Web 应用程序使用的组件进行指纹识别 IDWSTG-INFO-08 总结 毫不夸张地说&#xff0c;几乎所有可以想象的Web应用程序的想法都已经投入开发。随着全球大量自由和开源软件项目的积极开发和部署&#xff0c;应用程序安全测试很可能会遇到完全或部分依赖于这些知名应用程序或框架…

vue cli npm run build打生产环境包报错Cannot read property ‘pop‘ of undefined

问题出在webpack配置的代码拆分splitChunks 解决办法&#xff1a;每个cacheGroups中配置enforce: true;

数据结构——排序算法——快速排序

快速排序算法的基本思想是 1.从数组中取出一个数&#xff0c;称之为基数&#xff08;pivot&#xff09; 2.遍历数组&#xff0c;将比基数大的数字放到它的右边&#xff0c;比基数小的数字放到它的左边。遍历完成后&#xff0c;数组被分成了左右两个区域 3.将左右两个区域视为两…

巧用Lambda表达式获取对象属性名告别魔法值

在我们日常开发中&#xff0c;使用 MyBatis-Plus 写 SQL 执行的时候&#xff0c;难免会用到表字段&#xff0c;虽然 MyBatis-Plus 提供了 LambdaQueryWrapper 帮助我们使用 Lambda 方式调用对象属性名&#xff0c;但有的时候还是不免用到魔法值&#xff0c;当对象的属性名更改了…

检索技术核心学习总结

一、学习检索技术的必要性分析 &#xff08;一&#xff09;关键原因分析 学习检索技术&#xff08;Information Retrieval&#xff0c;IR&#xff09;具有多种重要的原因&#xff0c;特别是在今天信息爆炸的数字化时代。 总的来说&#xff0c;学习检索技术有助于提高信息处理…