基站主要 接收同步节点发来的同步信号,代码里定义为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*/), );

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

switch(msg_f->messageData[])
{
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>>; sprintf(lcd_display_str, "%08X%02X",h32_timestamp,l8_timestamp);
OLED_ShowString(,,(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=;
final_msg_get_ts(&msg_f->messageData[],&last_rx_ts);
//对64位数据移位成两个数字,用来液晶显示
l8_timestamp = last_rx_ts&0xFF;
h32_timestamp= last_rx_ts>>; sprintf(lcd_display_str, "%08X%02X",h32_timestamp,l8_timestamp);
OLED_ShowString(,,(uint8_t *)lcd_display_str);
break;

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

3 基站接收逻辑功能

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

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

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

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

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

TDOA 之 基站接收数据的更多相关文章

  1. 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制

    安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程?  详细代码介 ...

  2. ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

    话不多说,直接进入主题. 需求:基于Http请求接收Json格式数据,返回Json格式的数据. 整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性 ...

  3. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和串口只发送数据不能接收数据问题

    STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085的问题讨论:http://www.rt-thr ...

  4. 010 使用netmap API接管网卡,接收数据包,回应ARP请求

    一.本文目的: 上一节中,我们已经在CentOS 6.7 上安装好了netmap,也能接收和发送包了,这节我们来调用netmap中的API,接管网卡,对网卡上收到的数据包做分析,并回应ARP请求. 二 ...

  5. Qt串口通信接收数据不完整的解决方法

    在使用串口接收数据时,当数据量大的时候会出现数据接收不完整的情况.因为串口数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在串口读到起始标志时立即发送,并不 ...

  6. Ajax例子,views返回,html接收数据

    Ajax例子,views返回,html接收数据 views from django.shortcuts import render,HttpResponse,render_to_response im ...

  7. [Socket网络编程]由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

    原文地址:http://blog.sina.com.cn/s/blog_70bf579801017ylu.html,记录在此方便查看 解决办法: MSDN的说明: Close 方法可关闭远程主机连接, ...

  8. iOS开发- 蓝牙后台接收数据(BLE4.0)

    最近在做一个蓝牙相关的项目, 需要在应用进入后台, 或者手机属于锁屏状态的情况下, 仍然保持蓝牙连接, 并且能正常接收数据. 本来以后会很麻烦, 但是学习了下..发现就2步而已.简单的不能再简单了. ...

  9. delphi SPCOMM 接收数据不完整!该如何解决

    SPCOMM 接收数据不完整!该如何解决   SPCOMM 接收数据不完整!我作了一个 读取地磅数据的程序,是用spcomm接收的! 总共有五台地磅,其他4台地磅数据读取都正常.但是有一台接收数据的时 ...

随机推荐

  1. nohup 后台运行脚本,且可以实时查看日志

    -u加在python上 python命令加上-u(unbuffered)参数后会强制其标准输出也同标准错误一样不通过缓存直接打印到屏幕. 这是因为python的缓存机制所决定的 如果是使用 nohup ...

  2. idea 默认全局配置maven,避免每次新建项目都需要指定自己的maven目录

      版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_28624243/article/details/84199937 File->Oth ...

  3. python 之 数据库(内置函数、流程控制、索引)

    10.17 内置函数 强调:mysql内置的函数只能在sql语句中使用 #数学函数 round(x,y) #返回参数x的四舍五入的有y位小数的值 rand() #返回0到1内的随机值,可以通过提供一个 ...

  4. django修改表数据结构后报错的解决办法

    1.进入数据库删除app之前创建的表,如果删除有关联的表报错的话可以先删除其他表然后再删除因关联关系删除不了的表 2.删除django_migrations表中对应的app记录,删除命令delete ...

  5. BBS项目架构

    数据库设计 用户表(用的是auth_user那张表,通过自定义表继承AbstractUser) phone 电话 avatar 头像 create_time 创建时间#外键 blog 一对一个人站点表 ...

  6. AVR单片机教程——点亮第一个LED

    做了这么多准备,我们终于可以开始用开发板做点事了. 单片机编程与计算机编程有一些不同点.程序都要有零个或多个输入.一个或多个输出,这是两者都有的,但是计算机编程的输入输出主要靠控制台,而单片机没有. ...

  7. IIS不能下载config配置文件的解决方法

    之前作程序升级的时候,需要从服务端下载后缀为config的配置文件,结果程序抛出404异常.后来百度才知道,是IIS禁止下载config文件的原因.在这里记录一下解决方法. 在我的电脑,右键管理,打开 ...

  8. vue的就地复用--- v-for与:key

    v-for遵循的是vue的就地复用原则.文本与数据是绑定的,所以当文本被重新渲染的时候,列表也会被重新渲染. 就地复用只适用于不依赖子组件状态或临时DOM状态的列表渲染输出.[比如表单输入值的列表渲染 ...

  9. [Luogu5327][ZJOI2019]语言(树上差分+线段树合并)

    首先可以想到对每个点统计出所有经过它的链的并所包含的点数,然后可以直接得到答案.根据实现不同有下面几种方法.三个log:假如对每个点都存下经过它的链并S[x],那么每新加一条路径进来的时候,相当于在路 ...

  10. IDEA解决 lombok 编译报错 cannot resolve method set/get 方法

    首先关于lombok的介绍 https://blog.csdn.net/ThinkWon/article/details/101392808 总之,就是通过添加注解的方式,不需要为类编写getter或 ...