转发请注重原创出处,谢谢!

有些应用,需要发送很长的前导码,例如发送持续1秒钟的AA AA …前导码,或者500bit或者1000字节的前导码,唤醒处于LDC状态的设备等等。但是Silicon Labs sub-GHz无线收发器Si446x控制前导码长度的寄存器只有1个字节,最长只可发送255字节的前导码,这种超长的前导码该如何发送呢?

首先我们来分析si446x的数据包格式(图1),一个完整的无线数据包由前导码,同步字,数据负载,在加上CRC校验(可选),共4部分组成。

图1:si446x的数据包格式

前导码:正常的数据包,前导码不会太长,通常在4字节到12字节左右。本文以WDS软件中默认的8字节为例。

同步字:可设置为1字节到4字节,本文以2字节为例。

数据负载:F1L+F2是数据负载区域,本文以变长包,F1L为1字节为例,用于变长包的数据长度指示。F1L容易和field1 的长度混淆,在此,就把F1L当成1字节的数据即可。

CRC校验:本文以不加CRC校验为例,此处忽略。

从以上数据格式,我们给出一个正常的数据包作为参考:

---------------------------------------------------------------------------

AA AA AA AA AA AA AA AA 2D D4 07 01 02 03 04 05 06 07

解析如下:

AA AA AA AA AA AA AA AA :8字节长度前导码;

2D D4 同步字;

07 01 02 03 04 05 06 07:负载数据

---------------------------------------------------------------------------

如果我们要发送一个超长的前导码的数据包,就可按照以下思路实现,注意区分颜色:

AA AA AA AA AA AA AA AA AA AA AA AA AA………AA AA AA 2D D4 07 01 02 03 04 05 06 07

解析如下:

AA AA:把原来同步字2D D4位置换成了前导码 AA AA;

AA AA AA………AA AA AA:数据前半段填充前导码发送出去,例如990字节的AA AA;

2D D4 07 01 02 03 04 05 06 07:用户数据。

---------------------------------------------------------------------------

那么我们来算算一共发送了多少字节的前导码,8字节AA AA AA AA AA AA AA AA + 2字节 AA AA + 990字节 AA AA AA………AA AA AA  = 1000字节。具体需要发送多少字节的AA AA 前导码,请根据通信速率和前导码持续的时间来反算。算出了总共需要的前导码长度,然后减去8字节,再减去2字节,剩下的就是需要放到数据区域去发送的那一部分。

 

下面我们介绍具体的代码实现:

1、修改同步字为AA AA  :

同步字在空中传输时会高低位反向,需要用WDS来算出API命令应该填入的值。如下:

si446x_set_property( 0x11,0x04,0x01,0x55,0x55,0x00,0x00);//设置同步字AA AA

因为同步字最多可用4字节,如果只用到两字节,后面的就写0x00.

如果需要回到正常短前导码数据包发送,同步字需修改为原来的,例如2D D4

si446x_set_property( 0x11,0x04,0x01,0xB4,0x2B,0x00,0x00);//设置同步字2D D4

2、修改数据区域的发送长度。

我们需要准确的计算出需要发送的数据长度。

990字节的前导码 + 2字节的同步字 + N字节的数据 = M字节

除去原本8字节的前导码,2字节的同步字(已改成了AA AA),还有990字节的AA AA + 2字节同步字 + 8字节的负载数据需要发送,一共是M字节(本文1000字节为例)。因为负载数据在实际应用时,长度会随时变化,这部分要计算准确,否则会影响数据发送。

从以上计算,我们得出F1L + F2区域一共需要发1000字节,为了简单起见,可以减少修改寄存器,因为是变长包收发,F1L保持1字节长度不做任何修改,那么F2区域的需要发的长度就是M-1字节(本文999字节)。以后代码中需要修改的长度也仅仅是F2区域的,每个field区域的长度是13bit表示,因此M值最大不要超过13bit。

代码如下:

si446x_set_property(0x12,0x02,0x11,M-1高字节,M-1低字节);

常长前导码的数据包发送,原理是简单的。关键就是如何准确的计算F1L和F2区域的长度,以及同步字处理。注意,在同步字2D D4写到F2区域去发送的时候,是当成数据来看的,因此不需要高低位反向,直接把2D D4填入FIFO发送即可。

参考文档:

由于本文实现需要使用到超长数据包发送,边长数据包收发,更多详细的文档请参考:

1、《编程技巧:轻松实现si446x超长数据包收发》

2、《仅需3步,轻松实现Si446x无线收发器的变长包收发》

无线收发器如何实现超长前导码发送?相关推荐

  1. 智能无线收发器在ESD防静电系统中的优势

    智能无线收发器在ESD防静电系统中具有实时数据采集和传输.自动化控制和智能化升级.远程监测和管理.智能化预警和预测.灵活性和可扩展性等优势,为ESD防静电系统的升级和改善提供了更加科学的依据和支持. ...

  2. 低功耗远距离lora模块:SX1262与SX1278、SX1276射频无线收发器芯片对比分析以及选型指南

    1.产品简述 SX1278/6是Semtech公司在2013年推出的一款远距离.低功耗的无线收发器,是一款性能高的物联网无线收发器,具备特殊的LoRa调制方式,在一定程度上增加了通信距离:而SX126 ...

  3. CI2451无线收发2.4Gsoc芯片集成无线收发器和 8 位 RISC(精简指令集)MCU

    CI2451是一款2.4G的SOC无线收发芯片/集成无线收发器和 8 位 RISC(精简指令集)MCU 无线收发器特性:  1.工作在 2.4GHz ISM 频段.  2.调制方式:GFSK/FSK. ...

  4. 工程仪器振弦传感器无线采集仪的采集数据发送方式及在线监测系统

    工程仪器多通道振弦传感器无线采集仪的采集数据发送方式 每次设备启动后会将采集到的传感器数据进行内部存储,并在设置好的时间间隔将数据发送出去,通过修改"数据发送方式"参数,监测数据可 ...

  5. Ci2451无线MCU芯片2.4GHz射频芯片集成8位RISC内核集成无线收发器和8位RISC(精简指令集)MCU的SOC芯片

    Ci2451无线MCU芯片2.4GHz射频芯片集成8位RISC内核(Ci2451.Ci2454.CSM2433).RISC-V内核 (CSM24RV1.CSM24RV2) Ci2451 8位RISC核 ...

  6. 集成无线收发器和 8 位 RISC MCU 的 SOC 芯片CI2454/CI2451参数-遥控玩具汽车方案

    前面小编给大家介绍了一款集成无线收发器和 8 位 RISC(精简指令集)MCU 的 SOC 芯片-CI2454/CI2451,今天就来讲讲它的优劣势和应用方案. 优势 1.它拥有RISC精简指令集架构 ...

  7. CI24R1低成本2.4G无线收发器芯片替代XN297精简版SI24R1

    Ci24R1 是一颗工作在2.4GHz ISM频段,专为低成本无线场合设计,集成嵌入式ARQ基带协议引擎的无线收发器芯片.工作频率范围为2400MHz-2525MHz,共有126个1MHz带宽的信道. ...

  8. 无线收发器中笔记本电脑的AUX_IN和USB供电同时插入时,存在环路噪声。

    文章目录 一.无线收发器的应用场景 二.项目遇到的问题 三.解决方法 一.无线收发器的应用场景 目前在专业演出会,有线麦克风因音频线距离或者,既不方便舞台的摆放,音质也差,因此类似于无线麦克的产品层出 ...

  9. Ci2451集成无线收发器和8位RISC MCU的SOC芯片

    Ci2451是一款集成无线收发器和8位RISC(精简指令集)MCU的SOC芯片. 主要应用在无线鼠标.无线键盘.无线遥控.体感设备.无线数据传输模块.无线遥控玩具等领域. 主要特性: 无线收发器特性: ...

最新文章

  1. 【Java基础】对象拷贝
  2. [Jarvis OJ - PWN]——[XMAN]level1
  3. PHP 如何得到当前页面中所有已定义的变量和常量
  4. HttpHandler HttpModule入门篇
  5. Windows Server 2012/2012 R2:安装和配置 SMTP 服务器
  6. 蓝桥杯 传球游戏 动态规划
  7. Jenkins Pinned Plugins(Jenkins绑定插件)
  8. 如何在Mac上使用时间机器和“聚焦”恢复文件
  9. Docker的镜像操作命令
  10. java对接PayPal支付(v1)
  11. JavaScript分解质因数
  12. word表格保存后缺失框线_word表格框线突然没了
  13. 数据库在开发中的作用
  14. 嵌入式linux,增加串口登陆密码
  15. 用抽象类简单实现一个发工资系统
  16. 1024程序员节,以梦为马,不负韶华,我们来聊聊IT的发展以及个人感受吧!
  17. 出现“你的Windows许可证即将过期”提示
  18. Ubuntu 查看Nvidia显卡驱动信息
  19. Recent Trends in Deep Learning Based Natural Language Processing(arXiv)笔记
  20. ERP系统开发需要多少钱?

热门文章

  1. 适合计算机应用的班群名称,班级群名称好听霸气 有创意的励志群昵称
  2. 【vue】vue组件发表评论功能
  3. 计算机专业内存要多大,买新台式电脑内存要多大?
  4. 电脑怎么迁移游戏资源,数据迁移能把游戏数据迁移吗
  5. 2019年CSP-J2第一题:数字游戏(number)题解
  6. Shell数组遍历的三种方法及注意事项
  7. 2017_CET4_CET6_正规段子——正规!正规!解析!段子手勿入!
  8. 词云分析案例_品牌案例中的案例研究词
  9. vc中GB2312,BIG5,Unicode编码转换
  10. 十字链表的AOI算法实现