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. python3抓图学习-百度贴吧

    # coding=utf-8 from bs4 import BeautifulSoup import urllib.request import os import time def downlao ...

  2. 四五月份:关键词是沟通、绘画和SQL

    例行总结一下四五月份的感受. 关键词有三个:沟通.绘画和SQL. 整体来说,这两个月在努力跟这三个关键词死磕,略有些进展,因此汇报一下. 虽然这三个关键词从重要度来说是从左到右的,但从叙述来讲,还是先 ...

  3. 查看文件状态与跟踪新文件(git status/add)

    查看当前文件状态 使用git status查看文件状态,如果是空仓库,执行结果如下 $ git status On branch master No commits yet nothing to co ...

  4. C# 学习之路--百度网盘爬虫设计与实现(一)

    百度网盘爬虫 现在市面上出现了很多网盘搜索引擎,写这系列博文及爬虫程序的初衷: 更方面的查找资源 学习C# 学习爬虫的设计与实现 记录学习历程 自我监督 能力有限,如有不妥之处,还请各位看官点评.同在 ...

  5. IDEA中 GIT与SVN版本控制插件的切换

    https://www.cnblogs.com/yccmelody/p/7794220.html

  6. git 解决每次更新代码都要输入用户名密码的解决方案

    使用git pull或者git push每次都需要输入用户名和密码很繁琐,耽误时间,现在教大家一条命令实现保存用户名和密码不用再输入 git config --global credential.he ...

  7. 使用Perfect Player观看电视直播

    Perfect Player下载地址: 官网 http://niklabs.com/ 去广告版本:链接: https://pan.baidu.com/s/1gevIdBghB6lB46vVyfQUWg ...

  8. hadoop启动 datanode的live node为0

    hadoop启动 datanode的live node为0 浏览器访问主节点50070端口,发现 Data Node 的 Live Node 为 0 查看子节点的日志 看到 可能是无法访问到主节点的9 ...

  9. java界面--WePush-master 项目跑起来 -碰到的问题

    仅能在IntelliJ里面打开GUI Form文件来进行界面的拖拽设计--eclipse中也可以了 当eclipse 打开.form文件时,提示有.对应的编辑工具可以打开它,请到市场去安装 但是:本人 ...

  10. mitx一大堆统计学知识

    从几乎0一路讲到马克洛夫 mit的密度太高了 下次必须花3天时间准备