zoukankan      html  css  js  c++  java
  • DWM1000 Blink结构 -- 帧过滤第一节

    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[2] ;                                  //  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), 0) ; // write the frame data
    dwt_writetxfctrl(flength, 0, 1);

    上述代码摘录拼凑而成

    1.4 EVK1000 ANTHOR接收blink 代码

    //主循环禁止帧过滤
    dwt_enableframefilter(DWT_FF_NOTYPE_EN); //disable frame filtering inst->frameFilteringEnabled = 0 ; //接收回调函数 switch(rxd->fctrl[0]) { //blink type frame case 0xC5: if(rxd->datalength == 12) { 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[2];                             //  frame control bytes 00-01
        uint8 seqNum;                                   //  sequence_number 02
        uint8 panID[2];                                 //  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[2] ;                                  //  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

  • 相关阅读:
    HTTPS之acme.sh申请证书
    GoAccess日志分析工具
    KVM之CPU虚拟化
    自动化运维之PSSH
    Hadoop+HBase 集群搭建
    SSH + Google Authenticator 安全加固
    查看数据的类型(python)
    在word中,替换多个词语。正则表达式中 [] {} 是可以连用的(python)
    方差分析的前提,与检验,以及球形检验
    清屏处理(汇编)
  • 原文地址:https://www.cnblogs.com/tuzhuke/p/10261192.html
Copyright © 2011-2022 走看看