这个示例演示了如何使用用于蓝牙协议的通信工具箱™库生成和传输蓝牙®BR/EDR波形。您可以通过使用ADALM-PLUTO无线电或写入基带文件(*.bb)传输蓝牙BR/EDR波形。
要接收传输的蓝牙BR/EDR波形,请参阅蓝牙BR/EDR接收器示例,并实现以下任一设置:
两个SDR平台连接到同一台主机,运行两个MATLAB会话。
两个SDR平台连接到两个主机运行两个单独的MATLAB会话。
要配置您的主机以使用ADALM-PLUTO Radio的支持包,请参阅金宝app引导主机无线电硬件设置(模拟设备通信工具箱支持包ADALM-Pluto金宝app无线电).
要实时传输信号,您需要Adalm-pluto无线电和相应的支持包:金宝app
有关“通信工具箱支持的SDR平台”的完整列表,请参阅“支持的硬件”一节金宝app软件定义无线电(SDR)发现页面.
蓝牙(1]是一种短距离无线个人区域网(WPAN)技术,在全球范围内未经许可的工业、科学和医疗(ISM)频段2.4 GHz至2.485 GHz范围内运行。在蓝牙技术中,数据被分成包。每个数据包在79个指定的蓝牙通道中传输。每个信道的带宽为1 MHz。由于不同类型的无线网络在同一未经许可的频带内运作,两个不同的网络可能会相互干扰。为了减轻干扰,蓝牙采用跳频扩频(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 - 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波形的频谱和频谱图可视化。您可以通过使用ADALM-PLUTO无线电或将它们写入基带文件(*.bb)来传输生成的波形。
%检查“蓝牙协议的通信工具箱库”安装金宝app%支持包。comm金宝appSupportPackageCheck ('蓝牙');
要配置蓝牙波形发生器进行基本速率传输,请使用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],PayloadLength * OctetLength,1);%生成随机有效负载位txWaveform = bluetoothWaveformGenerator (dataBits cfg);%创建蓝牙波形
您可以配置该功能Helperbluetoothpacketduration.m.获取生成的蓝牙符号对应的蓝牙包持续时间。
packetDuration = helperBluetoothPacketDuration (cfg.PacketType cfg.Mode payloadLength);
的comm.phasefrequencyOffset.
系统对象用于基于频道号对蓝牙BR / EDR波形执行频移。在此示例中,通过使用该波形来可视化dsp。简介
系统对象选择一个从0到60的随机通道数作为本例中使用的采样率是60mhz。
SymbolRate = 1E6;%符号率sampleRate = symbolRate * cfg.SamplesPerSymbol;numChannels = 10;%通道数%创建并配置频率偏移系统对象卵圆孔未闭= comm.PhaseFrequencyOffset ('采样率', sampleRate);%创建和配置频谱分析仪系统对象= dsp范围。简介(“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。模式,...'通道号的波形= 'num2str (channelNum)];范围(hoppedWaveform);结尾%释放System对象释放(范围);
释放(卵圆孔未闭);
指定信号接收器为'File'或'ADALM-PLUTO'。
文件:使用comm.BasebandFileWriter
写入基带文件的系统对象。
adalm-pluto.:使用sdrtx
(模拟设备通信工具箱支持包ADALM-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 .html">ADALM-PLUTO Radi金宝appo Support From Communications Toolbox')));结尾connectedRadios = findPlutoRadio;%发现与计算机连接的Adalm-Pluto收音机radioID = connectedRadios (1) .RadioID;sigSink = sdrtx ('pluto',...“RadioID”,镭,...'中心罚款',txcenter罚款,...“获得”0,...'samplesperframe'txFrameLength,...'BaseBandsamplerate', sampleRate);%将基带数据传输到SDR硬件的转移括起来% try / catch块。这意味着,如果在%传输时,SDR系统使用的硬件资源对象被释放。叫做= 1;试一试尽管CurrentFrame <= TxnumberOfframe%数据传输sigSink (txWaveform);%更新计数器currentFrame = currentFrame + 1;结尾抓住我发布(sigsink);Rethrow(我);结尾结尾%释放信号宿释放(sigSink);
在此示例中,您可以通过使用Adalm-Pluto或通过将波形写入基带文件来生成和传输蓝牙BR / EDR波形。通过使用频谱分析仪可视化生成的蓝牙BR / EDR波形的频谱和派系。
您可以使用此示例来通过更改传输模式来传输EDR数据包。该示例使用Helperbluetoothpacketduration.m.帮助函数返回蓝牙数据包持续时间。
要解码本例中产生的蓝牙BR/EDR波形,请参考蓝牙BR/EDR接收器示例。
用于ADALM-PLUTO无线电的SDR硬件和通信工具箱支持包的故障排除的一般提示可以在金宝app常见问题及修复(模拟设备通信工具箱支持包ADALM-Pluto金宝app无线电).
蓝牙特殊兴趣组(SIG)。核心系统包[BR/EDR控制器卷]。蓝牙核心规范.5.1版,第2卷。www.bluetooth.com