主要内容

使用SDR的蓝牙BR / EDR波形生成和传输

这个例子展示了如何使用蓝牙协议的Communications Toolbox™库来生成和传输蓝牙BR/EDR波形。您可以使用ADALM-PLUTO无线电发送蓝牙BR/EDR波形或写入基带文件(*.bb)。

接收发送的蓝牙BR/EDR波形,参考蓝牙BR/EDR接收器的例子,并实现任何一个这些设置:

  • 两个SDR平台连接到同一台运行两个MATLAB会话的主机。

  • 两个SDR平台连接到两个主机,运行两个单独的MATLAB会话。

要配置您的主机使其与ADALM-PLUTO无线电的支持包一起工作,请参阅金宝app引导主机无线电硬件设置ADALM-Pluto模拟设备通信工具箱支持包金宝app

需要硬件

要实时传输信号,您需要ADALM-PLUTO无线电和相应的支持包:金宝app

有关通信工具箱支持SDR平台的完整列表,请参阅支持的硬件部分金宝app软件定义无线电(SDR)发现页面

蓝牙BR / EDR收音机规格

蓝牙(1是一种短距离无线个人区域网络(WPAN)技术,在全球未经许可的工业、科学和医疗(ISM)频段运行,频率范围为2.4 GHz至2.485 GHz。在蓝牙技术中,数据被分成多个包。每个数据包在79个指定蓝牙通道中的一个上传输。每个通道的带宽为1mhz。由于不同类型的无线网络运行在同一未授权频段,两个不同的网络可能相互干扰。为了减轻干扰,蓝牙采用跳频扩频(FHSS)方案,利用发射器和接收器都知道的伪随机序列在多个频率通道之间切换载波。

蓝牙标准规定了以下物理层(PHY)模式:

基本率(BR)- 强制模式,使用高斯频移键控(GFSK)调制,数据速率为1 Mbps。

增强数据速率(EDR)-可选模式,使用相移键控(PSK)调制与这两种变体:

  • EDR2M:使用PI / 4-DQPSK,数据速率为2 Mbps。

  • EDR3M:采用8-DPSK,数据速率为3mbps。

数据包格式

PHY模式的空中接口包格式包括这些字段:

访问代码:每个数据包以一个接入码开头。如果后面是报文头,则接入码长度为72位,否则为68位。访问代码由以下字段组成:

  • 前导码:前导码是固定的零一个图案的四个符号。

  • 同步字:同步字是从蓝牙设备地址的24位下地址部分(LAP)导出的64位代码字。

  • 预告片:预告片是一个固定的0 - 1模式的四个符号。

包的头:标题包括链接控制信息,由这些字段组成:

  • LT_ADDR:3位逻辑传输地址。

  • TYPE: 4位类型码,指定传输的报文类型。它可以是{ID, NULL, POLL, FHS, HV1, HV2, HV3, DV, EV3, EV4, EV5, 2-EV3, 2-EV5, 3-EV3, 3-EV5, DM1, DH1, DM3, DH3, DM5, DH5, AUX1, 2-DH1, 2-DH3, 2-DH5, 3-DH1, 3-DH3, 3-DH5}。

  • FLOW: 1位流量控制。

  • ARQN:1位确认指示。

  • SEQN: 1位序列号。

  • HEC:8位标题错误检查。

有效载荷:有效负载包括可选的有效载荷标题,有效负载体和可选的CRC。

警卫:对于EDR数据包,保护时间允许蓝牙无线电准备调制从GFSK到DPSK的变化。保护时间必须在4.75到5.25微秒之间。

同步:对于EDR包,同步序列包含一个参考符号和十个DPSK符号。

预告片:对于EDR包,尾位必须为两个符号的全零模式,pi/4-DQPSK为{00,00},8DPSK为{000,000}。

该图显示了BR模式下的报文格式

该图显示了EDR模式的数据包格式

蓝牙BR/EDR波形的产生和传输

这个例子展示了如何根据蓝牙规范生成蓝牙BR/EDR波形。利用频谱分析仪对生成的蓝牙BR/EDR波形进行了频谱和谱图显示。您可以使用ADALM-PLUTO无线电或将生成的波形写入基带文件(*.bb)。

检查支持包是否安装金宝app

%检查“蓝牙协议的通信工具箱库”已安金宝app装%支持包。comm金宝appSupportPackageCheck ('蓝牙');

蓝牙BR/EDR基带波形生成与可视化

要为基本速率传输配置蓝牙波形发生器,请使用bluetoothWaveformConfig对象。

cfg = bluetoothWaveformConfig;cfg。模式=“品牌”;%传输方式作为BR,EDR2M和EDR3M之一cfg.packettype ='FHS';%数据包类型cfg.samplespersymbol = 60;每个符号的抽样百分比cfg.whteninitialization = [0; 0; 0; 0; 0; 1; 1];%美白初始化

为了生成蓝牙BR/EDR波形,使用BluetoothwaveformGenerator.函数。使用getPayloadLength.确定给定配置所需的有效载荷长度。然后使用有效载荷长度来创建随机有效载荷进行传输。

payloadLength = getPayloadLength (cfg);%有效载荷长度以字节为单位OctetLength = 8;数据项= RANDI([0 1],PAYLOADLENGH * octetLength,1);%生成随机有效载荷位txWaveform = bluetoothWaveformGenerator (dataBits cfg);%创建蓝牙波形

您可以配置此功能Helperbluetoothpacketduration.m.获得与生成的蓝牙符号对应的蓝牙包持续时间。

packetDuration = helperBluetoothPacketDuration (cfg.PacketType cfg.Mode payloadLength);

comm.phasefrequencyoffset.系统对象用于基于频道号对蓝牙BR / EDR波形执行频移。在此示例中,使用该示例可视化波形dsp.SpectrumAnalyzer从0到60的范围内选择随机信道号的系统对象,本例中使用的采样率为60mhz。

SymbolRate = 1E6;%符号率sampleRate = symbolRate * cfg.SamplesPerSymbol;numChannels = 10;%渠道数量%创建并配置频率偏移系统对象卵圆孔未闭= comm.PhaseFrequencyOffset ('采样率', sampleRate);创建并配置频谱分析仪系统对象范围= dsp.SpectrumAnalyzer (“ViewType”,'频谱和谱图','timere金宝搏官方网站solutionsource','财产',“TimeResolution”1 e-5'采样率',采样率,'timespansource','财产','时间跨度',2e-3,'surformresolutionmethod','windowlength','windowlength', 512,'axeslayout',“水平”,'ylimits',[ -  40 25]);在使用频移的通道数量上循环为了packetIdx = 1:numChannels channelNum = randsrc(1,1,0:60);%生成随机通道号freqindex = channernum  -  39;%以可视化为双面频谱pfo.frequencyOffset = freqIndex * symbolrate;%频率偏移hoppedWaveform =卵圆孔未闭(txWaveform (1: packetDuration * cfg.SamplesPerSymbol));范围。Title = (“蓝牙频谱”cfg.Mode,'信道数波形= 'num2str (channelNum)];范围(hoppedWaveform);结尾%释放系统对象释放(范围);

释放(卵圆孔未闭);

发射机处理

将信号接收器指定为“File”或“ADALM-PLUTO”。

  • 文件:使用comm.BasebandFileWriter写入基带文件的系统对象。

  • adalm-pluto.:使用sdrtxADALM-Pluto模拟设备通信工具箱支持包金宝app功能创建一个comm.sdrtxpluto.ADALM-Pluto模拟设备通信工具箱支持包金宝app系统对象,用来传输来自SDR硬件的实时信号。

初始化信号接收所需的参数txCenterFrequency =2445000000;Hz的百分比,在2.402E9至2.480E中变化,具有1E6间距txFrameLength =长度(txWaveform);txNumberOfFrames = 1 e4;bbFileName =“bluetoothBRCaptures.bb”;默认的信号接收器是'File'signalSink ='文件';如果比较字符串(signalSink'文件')sigsink = comm.basebandfilewriter('中心罚款'txCenterFrequency,“文件名”,bbfilename,'采样率', sampleRate);sigSink (txWaveform);%写入基带文件“bluetoothbrcapture .bb”别的'Adalm-pluto'的百分比%检查Pluto硬件支持包(HSP)是否已安装金宝app如果isempty ((“plutoradio.internal.getRootDir”)) 错误信息(“comm_demos:常见:NoSupp金宝apportPackage”,“ADALM-PLUTO无线电通信工具箱支持包”金宝app,('“adalm-pluto-radio。来自通信工具箱的adm - pluto无线电支持金宝app')));结尾connectedRadios = findPlutoRadio;%发现与计算机连接的Adalm-Pluto收音机radioID = connectedRadios (1) .RadioID;sigSink = sdrtx ('pluto',“RadioID”,镭射'中心罚款',txcenter罚款,“获得”0,'samplesperframe'txFrameLength,'BaseBandsamplerate', sampleRate);%基带数据传输到SDR硬件的封装在一个% try / catch块。这意味着如果错误发生在% transmission, SDR系统使用的硬件资源% object被释放。叫做= 1;试一试尽管CurrentFrame <= TxnumberOfframes%数据传输sigSink (txWaveform);%更新计数器currentFrame = currentFrame + 1;结尾抓住我释放(sigsink);Rethrow(我);结尾结尾%释放信号宿释放(sigSink);

在此示例中,您可以通过使用adalm-pluto或通过将波形写入基带文件来生成和传输蓝牙BR / EDR波形。通过使用频谱分析仪可视化生成的蓝牙BR / EDR波形的频谱和派系。

进一步的探索

您可以通过更改传输模式来使用此示例来传输EDR数据包。该示例使用Helperbluetoothpacketduration.m.辅助功能返回蓝牙数据包持续时间。

解码本例中生成的蓝牙BR/EDR波形,请参考本例中的蓝牙BR/EDR接收器。

故障排除

关于诊断SDR硬件和adm - pluto无线电通信工具箱支持包的一般提示可以在金宝app常见问题及修复ADALM-Pluto模拟设备通信工具箱支持包金宝app

选定的书目

  1. 蓝牙特殊兴趣组(SIG)。核心系统包[BR/EDR控制器卷]。蓝牙核心规范。5.1版,第2卷。www.bluetooth.com