DWM1000 帧结构分析主要学习DWM1000 帧过滤功能,希望在目前DS-TWR定位系统中增加中断和帧过滤功能,帧过滤功能可以有效减少系统中的各个模块同时收发数据时的干扰问题,从而极大的提供系统稳定性以及刷新频率。帧过滤以及中断是近期学习的重点,学习基于官方代码为准,部分摘录官方代码进行说明解释。

1 Blink 数据格式

1.1 Blink 数据结构格式定义

1.2 Blink数据结构代码定义

typedef struct
{
uint8 frameCtrl; // frame control bytes 00
uint8 seqNum; // sequence_number 01
uint8 tagID[BLINK_FRAME_SOURCE_ADDRESS]; // 02-09 64 bit address
uint8 fcs[] ; // 10-11 CRC
} iso_IEEE_EUI64_blink_msg ;

Blink 数据供12byte,用户需要填写的10byte,CRC是硬件自动附加在数据上的,无需用户处理,只需要留空即可。Blink 数据中使用的地址为IEEE 64位长地址。

1.3 EVK1000 TAG发送blink 代码

memcpy(inst->blinkmsg.tagID, inst->eui64, ADDR_BYTE_SIZE_L);
//blink frames with IEEE EUI-64 tag ID
inst->blinkmsg.frameCtrl = 0xC5 ;
inst->blinkmsg.seqNum = inst->frameSN++; dwt_writetxdata(flength, (uint8 *) (&inst->blinkmsg), ) ; // write the frame data
dwt_writetxfctrl(flength, , );

上述代码摘录拼凑而成

1.4 EVK1000 ANTHOR接收blink 代码

//主循环禁止帧过滤
dwt_enableframefilter(DWT_FF_NOTYPE_EN); //disable frame filtering
inst->frameFilteringEnabled = ; //接收回调函数
switch(rxd->fctrl[])
{
//blink type frame
case 0xC5:
if(rxd->datalength == )
{
rxd_event = DWT_SIG_RX_BLINK;
}
else
rxd_event = SIG_RX_UNKNOWN;
break;

 Blink 是自定义数据结构,非标准IEEE 802.15.4 MAC 数据格式,在接收这样的数据结构时需要 禁止帧过滤功能。

Frame filtering is a feature of the DW1000 IC that can parse the received data of a frame that complies with the MAC encoding defined in the IEEE 802.15.4–2011 standard, identifying the frame type and its
destination address fields, match these against the IC’s own address information, and only accept frames that pass the filtering rules.

  

2 标准IEEE 802.15.4 MAC 数据

2.1 标准IEEE 802.15.4 MAC 数据格式定义

1.6 标准IEEE 802.15.4 MAC 数据代码定义

typedef struct
{
uint8 frameCtrl[]; // frame control bytes 00-01
uint8 seqNum; // sequence_number 02
uint8 panID[]; // PAN ID 03-04
uint8 destAddr[ADDR_BYTE_SIZE_S]; // 05-06
uint8 sourceAddr[ADDR_BYTE_SIZE_S]; // 07-08
uint8 messageData[MAX_USER_PAYLOAD_STRING_SS] ; // 09-124 (application data and any user payload)
uint8 fcs[] ; // 125-126 we allow space for the CRC as it is logically part of the message. However ScenSor TX calculates and adds these bytes.
} srd_msg_dsss ;

更多MAC 层数据结构请参阅:https://www.cnblogs.com/tuzhuke/p/10274730.html

DWM1000 Blink结构 -- 帧过滤第一节的更多相关文章

  1. DWM1000 帧过滤代码实现

    帧过滤功能可以在同一个环境内组建多个网络而不干扰(非频段不同),可以通过PANID(网络ID)区分不同网络,不同网络中的模块无法直接通信, 再之,利用短地址,网络中可以同时有多个模块发送信息,而接收端 ...

  2. 【v2.x OGE-example 第一节】 绘制实体

    前言: OGE即 OGEngine,是由橙子游戏开发的基于Java支持跨平台的开源游戏引,从12年4月项目成立至今已经有2年多的发展历程.在此期间基于OGEngine开发的项目已经有非常多成功投放市场 ...

  3. 我的第一节Android课

    我的第一节安卓课程,今天非比寻常的一天,我开始了我程序猿之路的第一节安卓课程,安卓课程只是我的一个兴趣班,我的本专业是java开发,因为喜欢做一个属于自己的一个手机APP,就选多个一样技能,毕竟十八般 ...

  4. 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触

    http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...

  5. 键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试

    键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 /// /// @file ctrl2cap.c /// @author wowocock /// @date 2009-1 ...

  6. [iOS]Objective-C 第一节课

    Objective-C 第一节课 本节课的主要内容 创建Objective-C的第一个工程 HelloWorld Objective-C中的字符串 创建Objective-C的第一个工程 打开Xcod ...

  7. 第一节,初识OpenCV3-图像的读、写、显、格式转化等

    之前一直在看深度学习,突然用到了对图像处理的东西,所以过来补充一下OpenCV基础. 就顺便从网上了买了一本OpenCV 3计算机视觉这本书,这本书比较薄,但是目前已经够我用了,在这里就记录一下我的学 ...

  8. 第一节 JavaScript概述

    第一节 JavaScript概述 JavaScript:其实就是对HTML+CSS静态页面进行样式修改,使其实现各种动态效果. 编写JS脚本基本步骤: 1. HTML+CSS静态布局: 2. 确定要修 ...

  9. 大道至简第一章和java理论学时第一节。感受。

    这周上了本学期的第一节java课程.课件上说了一些学习java的基本思想.举了个“愚公移山”的例子.这可能就像刚接触一门新的语言,来练习输出“HelloWorld”一样,已成惯例. “愚公移山”的这个 ...

随机推荐

  1. 开放源代码的设计层面框架Spring——day04

    spring第四天     一.Spirng中的JdbcTemplate         1.1JbdcTemplate概述             他是spring框架中提供的一个对象,是对原始Jd ...

  2. Python——Python+Pydev出现SyntaxError: Non-UTF-8 code

    搭建好Python+Pydev后发现每次输入中文,包括注释,会出现语法错误提示,如: SyntaxError: Non-UTF-8 code starting with... 可通过下面方法解决. 1 ...

  3. [译]ASP.NET Core揭秘 - Razor Pages

    原文 什么是Razor Pages? Razor pages是ASP.NET Core 2.0的新特性,它被设计用来更快的开发页面,比传统的MVC模式更便捷. 创建项目 为了使用Razor Pages ...

  4. 深入理解line-height与vertical-align——前端布局常用属性

    line-height.font-size.vertical-align是设置行内元素布局的关键属性.这三个属性是相互依赖的关系,改变行间距离.设置垂直对齐等都需要它们的通力合作.下面将主要介绍lin ...

  5. Arduino—运算符

    赋值运算符: =    +=   -+     *=      /= %=       取余等于 &=    与等于 &=(与等于)对某个变量的值按位进行与运算,例如:G&=x ...

  6. package.json 里的 dependencies和devDependencies区别

    dependencies(依赖的意思): 通过 --save 安装,是需要发布到生产环境的.比如项目中使用react,那么没有这个包的依赖就会报错,因此把依赖写入dependencies devDep ...

  7. JAVA进阶15

    间歇性混吃等死,持续性踌躇满志系列-------------第15天 1.TCP网络程序 package code0329; import java.io.BufferedReader; import ...

  8. 分组PARTITION BY及游标CURSOR的用法

    基础数据表: select * from dbo.RecommendationChanelVersionRelation: 数据如下: 要求按照ChannelVersionID分组,对每组中的Orde ...

  9. Python logging日志系统

    写我小小的日志系统 配置logging有以下几种方式: 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数: 2)创建一个日志配置文件, ...

  10. excel打开csv文件乱码解决办法

    参考链接: https://jingyan.baidu.com/article/4dc408484776fbc8d846f168.html 问题:用 Excel 打开 csv 文件,确认有乱码的问题. ...