一、前言
今天分享的话题是在蓝牙spec5.3中有关于“白话”和“去白话”这一名词,做过这方面研究的相信都有所了解,在BLE中bit stream processing的处理流程就有包含这一过程,如下图所示。其最终终目的很简单就是为了让发视和接收的数据不要重复的出现0和1,降低数据的冗余性。例如:0b0000000或0b1111111,那其原理究竟是什么呢,小编头铁非要一探究竟!

二、何为白话
“白化”这个词最早来源于信号处理领域,跟其中最常见的一种噪声——白噪声有很大的联系。在信号处理理论中,白噪声指的是一种在不同频率都有相同功率的随机信号,即其功率谱密度为常数,功率与频率无关。“白噪声”这个名字来源于白光,白光包含了光谱中所有的颜色,其功率谱密度也呈平坦状,类似地,“白噪声”这种噪声中包含了所有频率的噪声,因此被冠上了“白”的称号。其他不满足该功率谱密度特性的噪声也被称为有色噪声,类似于非白光的其他颜色光。
上述关于白色信号(白光,白噪声)的定义是一个通俗的定义,其严格数学定义为:一个随机向量w称为一个白色随机向量当且仅当其平均值函数为0且自相关函数为一个单位矩阵的倍数。简单来讲,就是该信号的平均值为0,且各个分量之间互不相关。
当然这些解释都是网上可以找到的,无非就是信号处理的一种手段,在“机器学习”领域中对数据处理经常会用到,但其实现方式是怎样的呢?不妨看看下图,这是spec里的一种算法,从图中不难理解,是通过线性反馈移位的方式来处理数据,以达到白话效果。
三、白话代码实现方式
那这种算法在代码里是怎么体现的呢,以下是一些白话处理的相关sample,希望对大家理解起来有帮助:
sample1




#includeDatawhitening.h staticunint8_tWhiteningKeyMSB=0x01; staticunint8_tWhiteningKeyLSB=0xFF; voidRadioComputeWhitening(uint8_t*buffer,uint16_tbufferSize) { uint8_ti=0; uint16_tj=0; uint8_tWhiteningKeyMSBPrevious=0; for(j=0;j>5)&0x01); WhiteningKeyLSB=((WhiteningKeyLSB>>1)&0xFF)|((WhiteningKeyMSBPrevious<< 7) & 0x80); } } }
sample2
uint8_tswapBits(uint8_ta)
{
uint8_tv=0;
if(a&0x80)
v|=0x01;
if(a&0x40)
v|=0x02;
if(a&0x20)
v|=0x04;
if(a&0x10)
v|=0x08;
if(a&0x08)
v|=0x10;
if(a&0x04)
v|=0x20;
if(a&0x02)
v|=0x40;
if(a&0x01)
v|=0x80;
returnv;
}
/**
*@briefImplementswhiteningwithLFSR
*@note
*@paramdata:locationofthedatatobewhiten
*len:datalength
*whitenCoeff:whiteningcoefficient
*它是一种7位线性移位反馈样式,并通过等于(channelNum<< 1)+ 1的值进行初始化
* @retval
*/
void bleWhiten(uint8_t *data, uint8_t len, uint8_t whitenCoeff)
{
uint8_t m;
while (len--)
{
for (m = 1; m; m <<= 1)
{
if (whitenCoeff & 0x80)
{
whitenCoeff ^= 0x11;
(*data) ^= m;
}
whitenCoeff <<= 1;
}
printf("0x%x
", *data);
data++;
}
}
-
蓝牙
+关注
关注
114文章
5814浏览量
170221 -
代码
+关注
关注
30文章
4780浏览量
68542 -
机器学习
+关注
关注
66文章
8408浏览量
132580 -
AIoT
+关注
关注
8文章
1406浏览量
30657
原文标题:whitening
文章出处:【微信号:嵌入式开发AIoT,微信公众号:嵌入式开发AIoT】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
求助,关于蓝牙mac地址的批量写入问题求解
【原创视频】白话讲解ADC&剖析影响ADC结果关键因素-2
如何去实现一种基于蓝牙与STM32的智能家居监测系统设计呢
讲述关于蓝牙的基础知识和蓝牙模块的选型介绍
关于蓝牙威廉希尔官方网站 的详细讲述
关于蓝牙模块的简易小车(基于51单片机)

关于蓝牙spec5.3中“白话”和“去白话
评论