帧过滤功能可以在同一个环境内组建多个网络而不干扰(非频段不同),可以通过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 帧过滤代码实现的更多相关文章

  1. DWM1000 Blink结构 -- 帧过滤第一节

    DWM1000 帧结构分析主要学习DWM1000 帧过滤功能,希望在目前DS-TWR定位系统中增加中断和帧过滤功能,帧过滤功能可以有效减少系统中的各个模块同时收发数据时的干扰问题,从而极大的提供系统稳 ...

  2. DWM1000 自动应答代码实现与实例

    这一节继续继承之前帧过滤部分,首先补充一下关于帧过滤部分,如果将目标地址设置为0xFFFF,则同一个网络(物理频道与PANID 都相同),所有节点都应该收到这条信息,这个信息为广播信息,0xFFFF为 ...

  3. RFC2889错误帧过滤测试----网络测试仪实操

    一.简介 RFC 2889为LAN交换设备的基准测试提供了方法学,它将RFC 2544中为网络互联设备基准测试所定义的方法学扩展到了交换设备,提供了交换机转发性能(Forwarding Perform ...

  4. PHP 文件系统管理函数与 preg_replace() 函数过滤代码

    案例:在带行号的代码至文件 crop.js 中.用两种方法去掉代码前面的行号,带行号的代码片段: 1.$(function(){ 2. //初始化图片区域 3. var myimg = new Ima ...

  5. C#敏感关键词过滤代码

    System.Text.StringBuilder sb = new System.Text.StringBuilder(text.Length);             string filter ...

  6. php防sql注入过滤代码

    防止sql注入的函数,过滤掉那些非法的字符,提高sql安全性,同时也可以过滤XSS的攻击. function filter($str) { if (empty($str)) return false; ...

  7. Java实现敏感词过滤代码

    原文:http://www.open-open.com/code/view/1445762764148 import java.io.BufferedReader; import java.io.Fi ...

  8. php XSS安全过滤代码

    function remove_xss($val) { // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are ...

  9. DW1000 用户手册中文版 第5章 媒体访问控制(帧过滤)

    由于已经在wode中排版无法直接复制到博客中,故本节博客发布使用了图片. PDF下载 http://bphero.com.cn/forum.php?mod=viewthread&tid=68

随机推荐

  1. Solr配置步骤

    1. 配置步骤说明 (1)配置Solr服务器. (2)配置SolrHome.(Solr服务的主目录,磁盘) (3)在Solr服务器中加载SolrHome. (4)java程序访问Solr服务器,实现全 ...

  2. Selenium-Switch--切换浏览器tab/iframe/alart

    Switch 我们在UI自动化测试时,总会出现新建一个tab页面.弹出一个浏览器级别的弹框或者是出现一个iframe标签,这时我们用WebDriver提供的Api接口就无法处理这些情况了.需要用到Se ...

  3. Leetcode#442. Find All Duplicates in an nums(数组中重复的数据)

    题目描述 给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次. 找到所有出现两次的元素. 你可以不用到任何额外空间并在O(n)时间复杂度内解 ...

  4. css3混合模式

    https://juejin.im/entry/5b4802d15188251ac446d3a9

  5. 2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践 一.实践目标 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳 ...

  6. ddt源码修改:HtmlTestRunner报告依据接口名显示用例名字

    背景是这样的: 自己写了一套接口自动化的框架,其中使用unittest + ddt + excel作为数据驱动模式的应用,使用HtmlTetstRunner来生成测试用例. 一切看起来很完美. 但是, ...

  7. SQL server查询语句

    作者:邓聪聪 mysql部分语句的查询,持续更新 系统函数 函数名 描述 举例 convert() 数据类型转换 selece convert(varchar(5),12345) 返回:字符串1234 ...

  8. Revit二次钢筋

  9. Resharper使用详解(转)

    万恶的360文档 解除复制的限制 Ctrl + Shift + i 打开控制台,也可以鼠标右键,选最后一个检查也可以打开控制台,输入: setInterval = null; //将内置无限循环函数设 ...

  10. dataguard丢失归档日志处理

    检查alert日志发现报错如下 Wed Mar 27 15:40:30 2019Managed Standby Recovery not using Real Time ApplyParallel M ...