【经验】EFR32FG23无线SoC芯片发送无长度字节的可变长度数据包的方法
EFR32FG23无线SoC芯片的rail_soc_simple_trx例程中,如果要发送可变长度的数据包,需要把数据包的第一个字节作为数据包的长度字节,不然EFR32FG23芯片无法正常的接收数据。但是有些应用场景,数据包的第一个字节不能作为长度字节。本文主要介绍EFR32FG23无线SoC芯片发送无长度字节的可变长度数据包的方法。
1、双击打开rail_soc_simple_trx.slcp文件,点击SOFTWARE COMPONENTS,在搜索框输入rail,点击搜索到的RAIL Utility,Initialization下面的inst0,点击Configure。
2、在RAIL Utility,Initialization(inst0)组件中,将Data Format Configuration里面的Method of Providing TX Data改为FIFO Mode。
3、在FIFO Radio Events中勾选TX FIFO,Almost Empty。
4、在app_init.c文件中添加如下代码,定义TX_BUFFER_SIZE的长度。
#define TX_BUFFER_SIZE 200
5、在app_init()函数中,添加如下的RAIL_SetTxFifoThreshold()函数。
RAIL_SetTxFifoThreshold(rail_handle,TX_BUFFER_SIZE);
6、在app_process.c文件添加如下的两条函数声明。
static void radio_tx_fifo_almost_empty_callback(RAIL_Handle_t rail_handle,
uint8_t *packet);
static void radio_transmit_start(RAIL_Handle_t rail_handle,
uint8_t *packet,
uint16_t length);
7、在app_process.c文件添加如下的两个变量。
static uint16_t tx_packet_length;
static uint16_t tx_offset;
8、将app_process_action()函数的if(tx_requested)条件里面原本的发送数据代码屏蔽,改为如下代码。
radio_transmit_start(rail_handle,out_packet,sizeof(out_packet));
9、在sl_rail_util_on_event()函数,增加RAIL_EVENT_TX_FIFO_ALMOST_EMPTY事件的处理代码。
if(events&RAIL_EVENT_TX_FIFO_ALMOST_EMPTY){
radio_tx_fifo_almost_empty_callback(rail_handle,out_packet);
}
10、在app_process.c文件的最后面增加如下函数的处理代码。
static void radio_transmit_start(RAIL_Handle_t rail_handle, uint8_t *packet, uint16_t length)
{
tx_packet_length = length;
tx_offset = 0;
RAIL_SetFixedLength(rail_handle, length);
RAIL_ResetFifo(rail_handle, true, false);
tx_offset += RAIL_WriteTxFifo(rail_handle, packet, length, true);
RAIL_StartTx(rail_handle, 0, RAIL_TX_OPTIONS_DEFAULT, NULL);
app_log_info("tx start:length:%d, offset:%d\r\n",tx_packet_length, tx_offset);
}
void radio_tx_fifo_almost_empty_callback(RAIL_Handle_t rail_handle, uint8_t *packet)
{
// Try to transmit the remaining data
if (tx_offset < tx_packet_length) {
tx_offset += RAIL_WriteTxFifo(rail_handle,
(packet + tx_offset),
(tx_packet_length - tx_offset),
false);
app_log_info("tx:%d\r\n", tx_offset);
}
}
11、编译程序并把固件下载到EFR32FG23芯片,EFR32FG23芯片就可以发送无长度字节的可变长度数据包了。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由潮汕小菜提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】使用频谱仪测试无线模块EFR32FG23的发射功率和频偏的方法
本文使用Silicon Labs无线SoC芯片EFR32FG23的BRD4265B无线模块作为测试对象,介绍如何使用Simplicity Studio 5软件配置railtest工程,并使用频谱仪测试EFR32FG23模块的发射功率和频偏的方法。
设计经验 发布时间 : 2022-03-02
【经验】基于Silicon Labs无线SoC芯片MG24开发套件的Matter入门指导文章汇总
本文主要介绍基于Silicon Labs MG24开发套件的Matter入门指导文章汇总。
设计经验 发布时间 : 2023-06-30
【经验】使用Si4463或者Si4438无线收发芯片来解析其他无线设备通信速率的方法
本文使用EFR32FG23无线SoC芯片来模拟老产品,通过按键来触发EFR32FG23芯片发送无线数据包,然后使用Si4438芯片来捉取波形,并介绍使用Si4438无线收发芯片来解析其他无线设备通信速率的方法。
设计经验 发布时间 : 2023-04-19
SiWx917 Wi-Fi 6蓝牙低功耗无线SoC,助力智能手表功耗和安全性能提升
SiWx917是Silicon Labs推出的一款支持Wi-Fi 6、蓝牙LE 5.4 和低功耗特性的无线SoC(系统级芯片),专为物联网(IoT)和可穿戴设备设计。这款芯片不仅拥有强大的计算能力和先进的无线连接功能,还具有低功耗和小尺寸的优势,为智能手表市场带来了全新的技术突破。
应用方案 发布时间 : 2024-10-23
【经验】使用Simplicity Commander工具读写EFR32无线SoC芯片EUI和install code方法
本文以Silicon Labs EFR32FG23 Sub-G无线SoC芯片为例,介绍如何读写EFR32无线SoC芯片的EUI和install code的方法。
设计经验 发布时间 : 2023-04-21
如何用EFR32FG23无线SoC芯片读取平均RSSI?
本文以Silicon Labs的EFR32FG23无线SoC芯片的rail_soc_simple_trx工程为例,介绍EFR32FG23芯片读取某个信道的平均RSSI的方法。
设计经验 发布时间 : 2024-03-07
【经验】使用串口来升级EFR32FG23无线SoC芯片固件的方法
本文主要介绍如何使用BootLoader——NCP UART XMODEM工程实现使用串口升级Silicon Labs EFR32FG23无线SoC芯片固件的方法。
设计经验 发布时间 : 2022-09-01
【经验】配置迈斯威志WizPro200EFM烧录器实现脱机烧录无线SoC芯片EFR32MG21固件的方法
Silicon Labs的EFR32MG21无线SoC芯片,主要用于ZigBee和Matter设备。本文主要介绍如何配置迈斯威志WizPro200EFM烧录器,实现脱机烧录EFR32MG21无线SoC芯片固件的方法。
设计经验 发布时间 : 2023-01-21
EFR32FG23无线SoC芯片读取数据包实时RSSI值的方法
本文以Silicon Labs的EFR32FG23无线SoC芯片的rail_soc_simple_trx工程为例,介绍EFR32FG23芯片读取数据包的实时RSSI值的方法。
设计经验 发布时间 : 2024-03-07
EFR32无线通信模块AN002——BootLoader(standalone)
Silicon Labs的EFR32系列无线SoC芯片提供了Gecko Bootloader支持设备更新应用程序,Gecko Bootloader分两种模式,一种模式称为standalone bootloader,另一种模式称为application bootloader。本文指导大家配置Standalone Bootloader工程,并对应用程序更新。
设计经验 发布时间 : 2018-06-26
【经验】如何使用RAILTEST程序测试无线SoC芯片EFR32MG的蓝牙性能?
使用过Silicon Labs无线SoC芯片EFR32MG的Zigbee功能的工程师多数已经习惯使用Railtest软件对Zigbee性能做测试,而在Railtest软件下也可以对BLE性能做测试。本文将介绍具体的设置步骤与注意事项。
设计经验 发布时间 : 2020-09-26
【经验】EFR32FG23无线SoC使用I2C读写MSA311传感器寄存器的方法
本文以 Silicon Labs 的 EFR32FG23 无线SoC芯片的 rail_soc_simple_trx 工程为例,介绍如何使用EFR32FG23 芯片 I²C外设来读写敏芯微 MSA311三轴加速度传感器寄存器的方法。
设计经验 发布时间 : 2023-06-29
【经验】使用Simplicity Commander工具对无线SoC芯片EFR32FG23执行recover的方法
在使用芯科科技EFR32FG23时,有时一些错误的操作会导致芯片烧录一次固件之后就不能重新烧录,或无法识别到芯片等问题,需要对芯片执行recover。本文主要介绍使用Simplicity Commander工具对EFR32FG23执行recover的方法。
设计经验 发布时间 : 2022-01-15
【经验】解析创建EFR32FG23芯片Long Preamble Duty Cycle低功耗接收工程的方法
有些无线产品使用电池供电,要求待机功耗很低,但是又需要能够实时接收到其他设备发来的数据,这时候就需要使用到无线芯片的低功耗接收功能。本文使用Simplicity Studio v5软件,主要介绍如何创建EFR32FG23无线SoC芯片Long Preamble Duty Cycle低功耗接收工程的方法。
设计经验 发布时间 : 2022-05-29
【经验】无线SoC芯片EFR32MG21程序中MFG_SECURITY_CONFIG参数的设置与功能
在无线SoC芯片EFR32MG21的ZigBee默认Z3Light程序运行时我们可以通过keys print这个CLI命令打印NWK key与TC Link Key等密钥参数,打印的效果如下,那我们是否可以隐藏这些密钥无法打印呢?
设计经验 发布时间 : 2023-05-26
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 104,128
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥27.0929
现货: 90,767
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
世强深圳实验室提供Robei EDA软件免费使用服务,与VCS、NC-Verilog、Modelsim等EDA工具无缝衔接,将IC设计高度抽象化,并精简到三个基本元素:模块、引脚、连接线,自动生成代码。点击预约,支持到场/视频直播使用,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论