DWM1000 帧过滤代码实现
帧过滤功能可以在同一个环境内组建多个网络而不干扰(非频段不同),可以通过PANID(网络ID)区分不同网络,不同网络中的模块无法直接通信, 再之,利用短地址,网络中可以同时有多个模块发送信息,而接收端会根据信息短地址不同而自动过滤。
1 发送端部分,组建发送结构体,按照MAC 数据结构组织。
srd_msg_dsss msg_f ; // ranging message frame with 16-bit addresses
int psduLength = ;
//set frame type (0-2), SEC (3), Pending (4), ACK (5), PanIDcomp(6)
msg_f.frameCtrl[] = 0x1 /*frame type 0x1 == data*/ | 0x40 /*PID comp*/;
//source/dest addressing modes and frame version
//msg_f.frameCtrl[0] = 0x41;
msg_f.frameCtrl[] = 0x8 /*dest extended address (16bits)*/ | 0x80 /*src extended address (16bits)*/;
msg_f.panID[] = 0xF0;
msg_f.panID[] = 0xF0; msg_f.seqNum = ;
msg_f.messageData[POLL_RNUM] = ; //copy new range number
msg_f.messageData[FCODE] = RTLS_DEMO_MSG_ANCH_POLL; //message function code (specifies if message is a poll, response or other...)
psduLength = (TAG_POLL_MSG_LEN + FRAME_CRTL_AND_ADDRESS_S + FRAME_CRC);
msg_f.seqNum = ; //copy sequence number and then increment
msg_f.sourceAddr[] = 0x02; //copy the address
msg_f.sourceAddr[] =0x02; //copy the address
msg_f.destAddr[] = 0x01; //set the destination address
msg_f.destAddr[] = 0x01; //set the destination address
其中数据结构 srd_msg_dsss 部分摘录自官方源码。模块所在PANID = 0xF0F0, TX 本身短地址0x0202,RX本身短地址0x0101。-->接收端需要配置同样的PANID以及RX本身地址
启动发送代码
dwt_writetxdata(psduLength, (uint8 *)&msg_f, ) ; // write the frame data
dwt_writetxfctrl(psduLength, );
/* Start transmission. */
dwt_starttx(DWT_START_TX_IMMEDIATE);
2 RX 使能帧过滤功能以及配置PANID 和 短地址
dwt_enableframefilter(DWT_FF_DATA_EN | DWT_FF_ACK_EN);
dwt_setpanid(0xF0F0);
dwt_setaddress16(0x0101);
接收并打印信息
if (status_reg & SYS_STATUS_RXFCG)
{
//printf("Step3!\r\n");
/* A frame has been received, copy it to our local buffer. */
frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;
if (frame_len <= FRAME_LEN_MAX)
{
dwt_readrxdata(rx_buffer, frame_len, );
USART_puts(rx_buffer,frame_len);
//printf("Y!\r\n");
}
/* Clear good RX frame event in the DW1000 status register. */
dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);
}
按照上述代码实现,RX端可以接收到TX发送的信息。
增加实验:不论单独修改TX/RX 任何一端的PANID 和 短地址,RX端均不能收到数据,说明帧过滤功能正常。
上述只有部分代码实例,完整工程请到bphero.com.cn 下载学习
DWM1000 帧过滤代码实现的更多相关文章
- DWM1000 Blink结构 -- 帧过滤第一节
DWM1000 帧结构分析主要学习DWM1000 帧过滤功能,希望在目前DS-TWR定位系统中增加中断和帧过滤功能,帧过滤功能可以有效减少系统中的各个模块同时收发数据时的干扰问题,从而极大的提供系统稳 ...
- DWM1000 自动应答代码实现与实例
这一节继续继承之前帧过滤部分,首先补充一下关于帧过滤部分,如果将目标地址设置为0xFFFF,则同一个网络(物理频道与PANID 都相同),所有节点都应该收到这条信息,这个信息为广播信息,0xFFFF为 ...
- RFC2889错误帧过滤测试----网络测试仪实操
一.简介 RFC 2889为LAN交换设备的基准测试提供了方法学,它将RFC 2544中为网络互联设备基准测试所定义的方法学扩展到了交换设备,提供了交换机转发性能(Forwarding Perform ...
- PHP 文件系统管理函数与 preg_replace() 函数过滤代码
案例:在带行号的代码至文件 crop.js 中.用两种方法去掉代码前面的行号,带行号的代码片段: 1.$(function(){ 2. //初始化图片区域 3. var myimg = new Ima ...
- C#敏感关键词过滤代码
System.Text.StringBuilder sb = new System.Text.StringBuilder(text.Length); string filter ...
- php防sql注入过滤代码
防止sql注入的函数,过滤掉那些非法的字符,提高sql安全性,同时也可以过滤XSS的攻击. function filter($str) { if (empty($str)) return false; ...
- Java实现敏感词过滤代码
原文:http://www.open-open.com/code/view/1445762764148 import java.io.BufferedReader; import java.io.Fi ...
- php XSS安全过滤代码
function remove_xss($val) { // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are ...
- DW1000 用户手册中文版 第5章 媒体访问控制(帧过滤)
由于已经在wode中排版无法直接复制到博客中,故本节博客发布使用了图片. PDF下载 http://bphero.com.cn/forum.php?mod=viewthread&tid=68
随机推荐
- redis---------AOF文件异常导致的redis无法载入
AOF损坏时的对策1.若在写AOF文件时Server崩溃则可能导致AOF文件损坏而不能被Redis载入.可通过如下步骤修复: 创建一个AOF文件的备份: cp appendonly.aof appen ...
- 集智人工智能学习笔记Python#0
1,学习基本Python语句规范: print('Hello world') print() 为函数 ‘Hello world’为字符串 2,表达式和语句的区别: 表达式有结果,运算就是表达式的一种: ...
- svn 解决冲突
当svn update时提示如下: D C main.go > local file unversioned, incoming file add upon updateSummary of c ...
- js关联数组
标准javascript 是内含支持hash关联数组,经查找资料并测试,有关标准javascript内含的hash关联数组操作备忘如下 1.Hash关联数组定义 // 定义空数组 myhash = { ...
- redis集群篇
redis集群的搭建 1.为什么要搭建集群(解决单点问题) 通过对redis的简单了解,我们知道redis已经有两种持久化方案rdb和aof.在redis出现宕机后,可能会出现部分的数据损失,但是数据 ...
- Python利用pandas处理Excel数据的应用
Python利用pandas处理Excel数据的应用 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...
- RabbitMQ资料
安装以及网页插件: https://www.cnblogs.com/longlongogo/p/6489574.html Exchange详解: https://www.cnblogs.com/jul ...
- [笔记]猿计划(WEB安全工程师养成之路系列教程):03HTML基础标签
1.<!DOCTYPE>声明 <!DOCTYPE> 不是 HTML 标签.它为浏览器提供一项信息(声明),即 HTML 是用什么版本编写的. 2.HTML不区分大小写 3.标签 ...
- Triplet Loss(转)
参考:https://blog.csdn.net/u013082989/article/details/83537370 作用:用于对差异较小的类别进行区分
- LTPS、IGZO、OLED都是什么?【转】
转自:https://www.sohu.com/a/226454503_99913194 薄化行业的小伙伴,经常有听到LTPS.IGZO.OLED等英文缩写名词.但究竟他们是什么意思?他们之间有什么区 ...