蓝牙(BLE)白化运算-非标蓝牙AOA/AOD定位基础

VIP 低功耗蓝牙(BLE)-- 寻向(DIRECTION FINDING)(AOA/AOD)篇 BLE 设备可以通过传输测向功能的数据包(常说的CTE包),让对端设备获得自己的方向。 使用来自多个发射器的方向信息和提供它们位置的profile-level信息,BLE 设备进而可以计算出自己的位置。 注意:仅Uncoded PHY 支持此特性。 1. ANGLE OF ARRIVAL (AOA) BLE 设备可以通过使用单个天线发送带有测向功能的数据包,让对端设备获取方向信息。 由射频开关和天线阵列组成的对端设备在接收部分数据包的同时... 开通可读全文·3.7k 阅读·0 点赞·10 收藏 阅读全文

 

目录

1. BLE收发处理流程

2. 白化技术原理

3. BLE 8位伪随机生成器-C语言实现 

4. 反白化以及应用-非标AOA/AOD定位基础


1. BLE收发处理流程

        在BLE底层的调制技术中使用了GFSK技术,为了比避免连续过长的0或者1序列导致接收器同步失锁,在BLE底层加入了白化技术来解决该问题。如下图所示,在BLE发送数据的最后一步流程是进行白化处理(whitening),接收数据的第一步也是解白化数据处理。当然白化也可以与简单的加密过程与解密过程等价。


BLE 收发位处理流程(来自于BLE规则书)
 

2. 白化技术原理

        白化处理数据具体的实现是将一个随机数与将要发送数据进行异或运算得到最终需要发送的数据,异或运算相当于是一个不带进位的二进制加法,白化运算在数学上也等价于将原数据加上一个随机数得到最终的数据,另外由于异或运算存在对称性的特性(异或原理参考:异或运算的原理以及应用-优快云博客),即对一个数连续异或两次将得到原数---(x \bigoplus y) \bigoplus y=x \bigoplus (y \bigoplus y)=x,该对称性特性可以更好的用于解调。在BLE中这个随机数生成规则如下图所示:

白化实现细节(P0最高位、P6最低位)

 

         在BLE中这个随机数生成器采用了8位的线性反馈移位寄存器(LFSR)来实现随机数序列的生成,每一帧蓝牙数据发送前或者接收数据前,会根据当前信道将该LFSR设定一个初值,初始值被定义为信道值与0x40进行位与运算结果。

3. BLE 8位伪随机生成器-C语言实现 

        以下是根据蓝牙中的LFSR 框图实现的伪随机生成器C语言源码,并没有性能问题:

void bleWhilteningPR(uint8_t chan,uint8_t len) 
{
    #define BIT(n) (0x01 << n)
	int i = 0;
	int j = 0;
	uint8_t pr;
	uint8_t temp = chan|0x40;
	uint8_t bit3,bit0;
	
	for(j=0;j<len;j++)
	{
		pr = 0;
		for(i=0;i<8;i++)
		{           
			pr |= (temp&BIT(0))<<i;
		
            bit0 = temp & BIT(0);
			bit3 = (temp & BIT(3))>>3;

			temp = temp >> 1;

			if(bit3^bit0)
				temp |= BIT(2);
			else
				temp &= ~BIT(2);

			if(bit0)
				temp |= BIT(6);
			else
				temp &= ~BIT(6);

			temp &= 0x7f;
			
            //printf("temp:%02x pn:%02x\r\n",temp,ret);
		}

		printf("chan-index:%d pos:%d \tpseudo-random:%02x \t~pseudo-random:%02x \n",chan,j,pr,(uint8_t)~pr);
	}
}

4. 反白化以及应用-非标AOA/AOD定位基础

        白化的目的是为了防止射频上出现连续的0或者1序列,但在AOA/AOD定位中要求发送一段连续的正弦载波来进行信号相位估计,而这段正弦载波在蓝牙BLE中即为连续的0或者1序列(GFSK调制),在蓝牙5.1标准中正式引入了该模式(允许发连续的0或者1序列),但是在蓝牙5.1标准之前已经可以实现AOA/AOD定位,目前几乎所有主流的BLE AOA/AOD定位仍然使用这种非标准的模式,具体实现是利用了异或运算以下特性,即:

x \bigoplus x=0\\ x \bigoplus \overline{x}=1

        对于要发送连续0来实现正弦载波发送,可以将原始数据与伪随机数序列设置成一样,这样射频端就可以在通用数据段中发送连续0序列实现正弦载波发送完成AOA或者AOD。使用此方法在BLE广播信道原数数据如下:

37信道:8d d2 57 a1 3d a7 66 b0 75 31 11 48 96 77 f8 e3 46 e9 ab d0 9e 53 33 d8 ba 98 08 24 cb 3b fc 71 a3 f4 55 68 cf

38信道:d6 c5 44 20 59 de e1 8f 1b a5 af 42 7b 4e cd 60 eb 62 22 90 2c ef f0 c7 8d d2 57 a1 3d a7 66 b0 75 31 11 48 96

39信道:1f 37 4a 5f 85 f6 9c 9a c1 d6 c5 44 20 59 de e1 8f 1b a5 af 42 7b 4e cd 60 eb 62 22 90 2c ef f0 c7 8d d2 57 a1

        对于要发送连续1来实现正弦载波发送,可以将原始数据设置成与伪随机生成序列完全相反的数值,原数数据设置成等于伪随机数按位取反结果,使用此方法仍然可以实现连续的正弦载波发送。使用此方法在BLE广播信道原数数据如下: 

37信道:72 2d a8 5e c2 58 99 4f 8a ce ee b7 69 88 07 1c b9 16 54 2f 61 ac cc 27 45 67 f7 db 34 c4 03 8e 5c 0b aa 97 30

38信道:29 3a bb df a6 21 1e 70 e4 5a 50 bd 84 b1 32 9f 14 9d dd 6f d3 10 0f 38 72 2d a8 5e c2 58 99 4f 8a ce ee b7 69

39信道:e0 c8 b5 a0 7a 09 63 65 3e 29 3a bb df a6 21 1e 70 e4 5a 50 bd 84 b1 32 9f 14 9d dd 6f d3 10 0f 38 72 2d a8 5e

VIP 蓝牙RSSI/BLE AOA/UWB室内定位技术哪个好? 因此,对于一个利用信号处理、三边测量和校准的系统,在较短距离内,小空间内的精度通常可以达到1.5米左右,而在较长距离内,精度可以达到5米左右。有两种类型的RSSI定位。2. 蓝牙RSSI值定位在七八年之前作为定位技术已经普及过一次,不仅形成了一个较为完善的产业链,也在众多的应用中有一定的积累与尝试,定位精度更高的蓝牙AoA定位可以对之前的技术形成一定程度的替代。4. 蓝牙AOA定位方案的特性是距离越小,精度越高,所以在室内遮挡多,墙体密集的场景,本身就需要铺设密集的基站,蓝牙AOA就很合适。 开通可读全文·2.4k 阅读·1 点赞·8 收藏 阅读全文

相关推荐

蓝牙白话原理

一文讲清“白话”原理

weixin_46039543的博客 1390

蓝牙技术原理(9)蓝牙AOA/AOD技术原理

蓝牙AOA定位原理

剑影的博客 5499

蓝牙AoA定位技术

大家有没类似经历: 出了车站找不到出口- 停车场里找不到汽车- 商场里面找不到卫生间 蓝牙室内定位技术为解决上诉问题提供了可能,本文将从"原理概述",“主流玩家”,“全栈方案”,“应用领域”,"存在问题"几个方面对BLE AoA进行介绍;蓝牙定位技术简介 蓝牙定位技术主流有两种: 一种是通过信号的强度,即RSSI(Receive Signal Strength Indication)值来估算,...

iotthings的博客 6826

五.BLE反白化

BLE反白化 白化 先前我们知道白化的过程是这样的 uint8_t bleWhitenStart(uint8_t chan) { //use left shifted one //最高位一定要是1 return reverseBits(chan) | 2; } /*白化,LFSR的方式进行白化*/ void bleWhiten(uint8_t* data, uint8_t len, uin...

Trstary的博客 2713

2021-8-9 白化 蓝牙 blewhiten

用法 : bleWhiten(pdu,adv_dataLen,bleWhitenStart(38)); 在github 上找的,原理不清楚。 白化数据一调用,变成非白化数据。 非白化数据一调用,就变成白化数据 uint8_t swapBits(uint8_t a) { uint8_t v = 0; if (a & 0x80) v |= 0x01; if (a & 0x40) v |= 0x02; if (a &...

s0nail的博客 1105

从零开始:手把手教你理解UBOOT的BL0、BL1、BL2启动流程

本文详细解析了嵌入式系统中UBOOT启动流程的核心三阶段:BL0、BL1和BL2。BL0作为芯片固化的ROM代码,负责最基础的硬件初始化和加载BL1;BL1(SPL)作为二级程序加载器,在SRAM中运行并初始化DRAM,为加载BL2铺路;BL2则是完整的UBOOT主体,运行于DRAM,负责最终的外设初始化和操作系统引导。文章通过代码示例和流程图,手把手教你理解从芯片上电到系统就绪的完整接力过程。

qsc901234567的博客 1143

基于BLE的多节点AoA室内定位

AOA定位原理 AOA(Arrival of Angle)定位方法是通过计算目标发射的信号到达AP(Access Point)的角度,根据到达的角度可以推测出以基站为起点的射线的斜率,射线必定经过目标点,由两个或者两个以上的基站便可以得到目标的位置。 节点空间部署 实验关键参数设置 ...

dreamerhan的博客 4080

Cadence元件库介绍

Cadence安装完之后,在安装目录下,会有默认自带的一些常用元件库。例如,我的Candece安装目录为: D:\Cadence\Cadence_SPB_17.2-2016 元件库所在目录为: D:\Cadence\Cadence_SPB_17.2-2016\tools\capture\library 各个元件库对应的内容如下: AMPLIFIER.OLB 共 182 个零件,存放模拟放大器 IC,如 CA3280,TL027C,EL4093 等。 ARITHMETIC.OLB 共 182 个零件,存放

年少时的棉花糖 1万+

BLE蓝牙广播包的比特流处理之白噪化和CRC校验

目标: 1. 通过蓝牙协议了解BLE蓝牙的广播帧结构 2.了解蓝牙比特流处理流程 3.使用matlab重现白噪化和CRC校验 1.蓝牙的广播帧结构: 通过蓝牙BLE协议我们可以看到,蓝牙的广播帧结构如下: 这是非编码类型的广播帧结构,在实际学习中,我们可以用wireshark软件来对蓝牙抓包,进而分析协议,wireshark的使用可以参考以下文章: 使用nRF52832开发板用作dongle抓取蓝牙数据包 - 简书 (jianshu.com) ...

qq_44462015的博客 5857

【学习笔记】计算机网络 第八章 无线局域网(WLAN)

计算机网络 第八章 无线局域网(WLAN)

Vera_shsf的博客 1243

软件项目质量管理

识别项目中涉及质量管理的不同角色,如项目经理、质量经理、测试人员等,明确每个角色的职责和任务,包括负责哪些质量管理活动和决策。1、编制软件项目的质量管理计划,包括确定项目的质量标准和要求,以及制定质量控制和质量保证策略等。2、编制软件项目的质量管理计划,包括确定项目的质量标准和要求,以及制定质量控制和质量保证策略等。测试用例表是质量控制过程中的关键工具,确保所有功能和场景都被验证,减少项目中的缺陷。1、理解项目质量管理的基本过程,包括质量计划、质量保证、质量控制和质量改进;明确质量管理活动中的角色和职责。

weixin_51996255的博客 1260

一文看懂Bluetooth 5.1 AoA到达角度位置服务实现原理

文章版权归为微信公众号 无线技术联盟,转载请注明出处. 作者:XCODER -------------------------------------------------------------------------------------------------------- 这是第三篇文章写关于Bluetooth AoA(到达角度)位置服务算法的原理及其应用,经过半年的市场观察...

weixin_42583147的博客 4万+

实战指南(一)SCAPS-1D太阳能电池模拟软件从零到一:模型构建与参数解析

本文详细介绍了SCAPS-1D太阳能电池模拟软件的使用方法,从模型构建到参数解析,帮助用户快速掌握这一免费且功能强大的工具。特别适合用于单结/多结电池的电学性能分析,涵盖钙钛矿电池等常见结构的模拟实践,并提供参数调试和收敛性问题处理的实用技巧。

weixin_30588675的博客 445

【蓝牙开发】BLE中的AOA、AOD全称

AOA -> Angle of Arrival Angle of Arrival is the relative direction at which a prop-agating RF wave that was transmitted by a single antenna is incident on an antenna array. AOD-> Angle of Departure Angle of Departure is the relative direction from

love131452098的博客 2256

ABAP 后台作业里的消息机制:把 MESSAGE 写对,避免作业莫名取消

SAP后台作业消息处理机制解析 本文深入剖析了SAP系统中后台作业的消息处理机制,揭示了前台与后台执行环境的关键差异。核心发现包括: 后台作业对消息的处理规则: 所有消息写入Job log而不显示 根据消息类型决定是否继续执行 W警告在列表处理阶段会被自动转为E错误 关键异常处理: 通过error_message可捕获E/A类型消息 A类型消息会触发隐式数据库回滚 未被捕获的E/A消息将导致作业中断 实用解决方案: 将业务提示改为S或I类型 使用DISPLAY LIKE保持前台体验 通过error_mess

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2218

85-Halcon-- gen_cam_par_area_scan_division 函数功能(生成面阵相机镜头参数)

Halcon的gen_cam_par_area_scan_division算子用于生成面阵相机的镜头参数,支持除法畸变模型。该算子输出包含9个参数的元组,包括焦距(Focus)、畸变系数(Kappa)、像素尺寸(Sx,Sy)、主点坐标(Cx,Cy)和图像尺寸。文中详细解析了各参数含义、数学原理(包括畸变矫正公式和坐标转换),并提供了三个工业应用案例:高精度芯片尺寸测量、机器人焊接引导和大视野汽车表面检测。最后给出了完整的相机标定流程,涵盖参数生成、畸变校正和标定配置步骤,适用于工业视觉系统的精确标定需求。

weixin_45590420的博客 915

蓝牙数据白化算法 Bluetooth Whitening Algorithm

通过加白噪声来增强蓝牙数据抗干扰能力的方法。这一方法的提出起源于时钟的同步:为了同步发射信号和接受信号的时钟,可以利用数据来对两者的时钟进行微调,而数据中0和1 交替出现频率越大,微调的效率就越高,如果出现长串的0或者1,对准时钟自然就比较困难。那么如果出现连续的0或者1,就可以通过白化算法来生成0和1 尽可能均匀出现的序列。 具体参考: 蓝牙数据白化算法 Bluetooth Whitening Algorithm - 知乎 (zhihu.com) ...

joris30的博客 1946

ROS2入门到精通—— 1-1 Linux和ROS2基础

本文介绍了Linux的一般指令以及ROS2的常见理论和操作

BigDavid123的博客 3804

蓝牙AoA高精度定位技术:原理、应用与未来展望

其核心原理基于相位差测量:当蓝牙信号从发射端(如智能手机或标签)传播到接收端的天线阵列时,由于不同天线间的物理间距(通常小于蓝牙波长12.5 cm),信号到达各天线的路径差异会导致相位差。相较于传统蓝牙RSSI(基于信号强度)定位技术3-5米的精度局限,蓝牙5.1协议引入的AoA将精度提升至0.3-0.5米,部分场景甚至可达10厘米级。2020年发布的《蓝牙AOA高精度定位技术白皮书》为技术标准化奠定基础,未来需推动跨行业协议统一,加速智慧城市、工业4.0等场景的规模化落地。1. 技术融合与生态扩展。

OctoNey169的博客 1876

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

BLE(低功耗蓝牙)学习笔记(1)

低功耗蓝牙自学笔记,参考书籍《低功耗蓝牙开发权威指南》

qq_37420672的博客 2435

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

蓝牙aoa定位技术与uwb定位区别

在1200平米、天花板3米的空旷环境中,UWB-AOA的基站数量少于蓝牙AOA,但UWB-AOA的单基站覆盖半径大于蓝牙AOA,且对安装高度无要求,而蓝牙AOA的单基站覆盖半径仅为安装高度的1~2倍‌。‌定位精度‌:UWB定位的精度可以达到厘米级,甚至在理想条件下可以达到几厘米,而蓝牙AOA的定位精度一般在1到5米之间,取决于环境和设备的数量与配置。相比之下,蓝牙技术无法区分直达和反射路径,测得的是包含墙壁等障碍物反射后的混叠信号,在复杂环境下定位精度低、稳定度差‌。

OctoNey169的博客 1050

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

适用BLE5.1的AoA定位射频发射前端芯片MG223

MG223的创新表现在与普通8位机相匹配实现BLE广播发射功能,适用于蓝牙广播扩展(长广播)和LongRange广播包发射。MG223是一种面向传感信号无线发射应用的独特芯片,成本低,室内定位独特功能

EVERSPIN的博客 645

蓝牙 AoA高精度基站的实现-Bluetooth 5.1 AoA到达角度位置服务实现原理

本文通过解析蓝牙AoA高精度基站的实现原理,为国内厂家在高精度蓝牙AoA定位的实现上超越处于垄断的Quuppa提供的启迪:欢迎与本文作者进行探讨: +关注 这是第三篇文章写关于Bluetooth AoA(到达角度)位置服务算法的原理及其应用,经过半年的市场观察,目前Bluetooth AoA可以有两种不同的应用场景,第一,室内位置定位;第二,无钥匙进入,我们一一叙述,今天只讲第一种。 1...

AoA18918935218的博客 1万+

蓝牙aoa定位技术介绍

2. **信号接收和角度测量**:带有多个天线的接收器接收信号,测量信号到达每个天线的时间差,从而计算出到达角度。3. **位置计算**:利用至少两个这样的接收器的角度信息,通过几何计算来确定发射源的确切位置。3. **信号处理和计算单元**:分析接收到的信号,计算到达角度,并据此确定发射源位置。2. **带有多个天线的接收器**:用于捕捉同一信号源的信号,从而产生到达角度。- **设备和成本**:部署带有阵列天线的接收器可能涉及额外的成本和技术挑战。1. **信号发射**:蓝牙设备发出信号。

www_tlj的专栏 1679

BLE controller LL层bit流处理(CRC/数据白化/去白化)

低功耗蓝牙(BLE)的比特流处理过程根据物理方案分为两类:未编码方案(LE1MPHY/LE2MPHY)仅处理PDU和CRC部分,而编码方案(LECodedPHY)需处理除前导码外的所有数据包部分。关键处理环节包括:1)CRC校验,采用24位多项式计算;2)数据白化/去白化,使用x^7+x^4+1的LFSR实现,初始化值由物理信道索引确定。处理过程遵循小端格式,LSB优先传输。示例代码验证了CRC计算(0x555555初始化)和白化处理(信道索引38)的正确性。这些处理在芯片中通常由FPGA实现,确保数据可靠

朝气蓬勃 1865
上一篇: 矩阵求逆的几种方法
下一篇: 在嵌入式中如何对对数log函数加速
老Z先生
博客等级 码龄4年 417粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值