zoukankan      html  css  js  c++  java
  • TDOA 之 基站接收数据

    基站主要 接收同步节点发来的同步信号,代码里定义为S信息。 以及标签节点发来的定位信号,代码中定义为T信号。

    代码中使用中断以及帧过滤功能,对模块只接收自己关心设定好的信息,通过中断告知上层,而不是长时间轮训方式。

    帧过滤参考博文:https://www.cnblogs.com/tuzhuke/p/10503052.html

    如下为基站核心代码:

    1 使能接收中断

    dwt_setinterrupt(DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO /*| DWT_INT_RXPTO*/), 1);

    2 接收信息并记录自己的接收时间戳和 信息发送的时间戳

    switch(msg_f->messageData[0])
    {
        case 'S':
            //save seq
            //save rx timestamp
            last_rx_ts = get_rx_timestamp_u64();//获取接收时间戳
    
            // last_rx_ts =0x123456789A;测试数字
            //对64位数据移位成两个数字,用来液晶显示
            l8_timestamp = last_rx_ts&0xFF;
            h32_timestamp= last_rx_ts>>8;
    
            sprintf(lcd_display_str, "%08X%02X",h32_timestamp,l8_timestamp);
            OLED_ShowString(0,4,(uint8_t *)lcd_display_str);
    
            //toggle LED 指示接收成功
            ledValue = ~ledValue;
            GPIO_WriteBit(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3, ledValue);
    
            //save delayed tx timestamp
            //获取信息中Sync 节点的发送时间戳
            //信息起始位置位2,分别在2 3 4 5 6
            last_rx_ts=0;
            final_msg_get_ts(&msg_f->messageData[2],&last_rx_ts);
            //对64位数据移位成两个数字,用来液晶显示
            l8_timestamp = last_rx_ts&0xFF;
            h32_timestamp= last_rx_ts>>8;
    
            sprintf(lcd_display_str, "%08X%02X",h32_timestamp,l8_timestamp);
            OLED_ShowString(0,6,(uint8_t *)lcd_display_str);
            break;

    上述代码只是简单接收了同步节点发送来的时间信号,通过液晶显示出来,与同步节点显示对比,实际需要做的工作还有很多,总结如下

    3 基站接收逻辑功能

    除了上面部分,需要实现的逻辑

    A. 由原理部分得知,需要接收到连续两个同步信号以及中间的标签定位信号 才能算一个完整的接收序列。

    对于接收同步节点信号S来说,需要记录前后两次同步信号的sequence号,两者只能差1,如果出现丢包,需要做丢弃处理

    B 对于定位信号,同样由原理部分,定位信号应该夹在同步信号之内,而且需要记录定位信号的sequence。

    C 当收到一个同步信号S后,开始接受序列启动,下一个应该接收的信号是定位信号T,如果有,再下一个是其它节点的定位信号T。最后是同步信号S, 标记一个完整的接收序列,通过串口或者网口送给定位引擎。 同时需要将最后一个同步信号用作下一个序列的开始。

  • 相关阅读:
    系统架构师学习笔记_第十一章(下)
    通过IronRuby和C#学习RUBY系列[0]
    TIPS to comment your code
    超级简单:DIV布局
    js 查询XML数据添加到HTML select控件
    《架构之美》读书笔记(一)
    18个不常见的C#关键字,您使用过几个?
    如何成为人尽皆知的C#开发人员
    实现Visual Studio 2010一个很简单的很酷的扩展
    一种简单的直观的高效的权限设计
  • 原文地址:https://www.cnblogs.com/tuzhuke/p/11689881.html
Copyright © 2011-2022 走看看