这个示例演示了如何使用用于蓝牙协议的通信工具箱™库生成和传输蓝牙®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)调制,数据速率为1mbps。
增强数据速率(EDR)-可选模式,使用相移键控(PSK)调制与这两种变体:
EDR2M:采用pi/4-DQPSK,数据速率为2mbps。
EDR3M:采用8-DPSK,数据速率3mbps。
PHY模式的空中接口包格式包括以下字段:
访问代码:每个数据包以一个访问码开始。如果后面跟着报头,则接入码长度为72位,否则接入码长度为68位。访问代码由以下字段组成:
序言:序言是由四个符号组成的固定的0 - 1模式。
同步字:同步字是蓝牙设备地址的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位报头错误检查。
有效载荷: Payload包括一个可选的Payload header,一个Payload body和一个可选的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。WhitenInitialization = [0, 0, 0, 0, 0, 1, 1);%美白初始化
要生成蓝牙BR/EDR波形,请使用bluetoothWaveformGenerator
函数。使用getPayloadLength
来确定给定配置所需的有效载荷长度。然后使用有效载荷长度创建一个用于传输的随机有效载荷。
payloadLength = getPayloadLength (cfg);%有效负载长度,以字节为单位octetLength = 8;dataBits = 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 = 1 e6;%符号率sampleRate = symbolRate * cfg.SamplesPerSymbol;numChannels = 10;%通道数%创建并配置频率偏移系统对象卵圆孔未闭= comm.PhaseFrequencyOffset (“SampleRate”, sampleRate);%创建和配置频谱分析仪系统对象= dsp范围。简介(“ViewType”,光谱和光谱图,...“TimeRe金宝搏官方网站solutionSource”,“属性”,“TimeResolution”1 e-5...“SampleRate”sampleRate,“TimeSpanSource”,“属性”,...“时间间隔”2 e - 3“FrequencyResolutionMethod”,“WindowLength”,...“WindowLength”, 512,“AxesLayout”,“水平”,“YLimits”25 [-40]);%循环通道的数量,以显示频率的移动为packetIdx = 1:numChannels channelNum = randsrc(1,1,0:60);%生成随机通道数freqIndex = channelNum - 39;想像成双面光谱卵圆孔未闭。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.480e9,间距为1e6txFrameLength =长度(txWaveform);txNumberOfFrames = 1 e4;bbFileName =“bluetoothBRCaptures.bb”;%默认信号接收器是“File”signalSink =“文件”;如果比较字符串(signalSink“文件”) sigSink = comm.BasebandFileWriter(“CenterFrequency”txCenterFrequency,...“文件名”bbFileName,...“SampleRate”, sampleRate);sigSink (txWaveform);%写入基带文件' bluetoothbrcapture .bb'其他的%的“ADALM-PLUTO”%检查是否安装了pluto硬件支持包金宝app如果isempty ((“plutoradio.internal.getRootDir”)错误(消息(“comm_demos:常见:NoSupp金宝apportPackage”,...“ADALM-PLUTO无线电通信工具箱支持包”金宝app,...[' < a href = " //www.tatmou.com/hard金宝appware-support/ '...' ADALM-PLUTO Radio .html">ADALM-PLUTO Radi金宝appo Support From Communications Toolbox')));结束connectedRadios = findPlutoRadio;%发现ADALM-PLUTO无线电连接到您的计算机radioID = connectedRadios (1) .RadioID;sigSink = sdrtx (“冥王星”,...“RadioID”radioID,...“CenterFrequency”txCenterFrequency,...“获得”0,...“SamplesPerFrame”txFrameLength,...“BasebandSampleRate”, sampleRate);将基带数据传输到SDR硬件的过程包含在一个% try / catch块。这意味着,如果在%传输时,SDR系统使用的硬件资源对象被释放。叫做= 1;试一试而叫做< = txNumberOfFrames%数据传输sigSink (txWaveform);%更新计数器currentFrame = currentFrame + 1;结束抓我释放(sigSink);重新抛出(我);结束结束%释放信号接收器释放(sigSink);
在这个例子中,您可以通过使用ADALM-PLUTO生成和传输蓝牙BR/EDR波形,或者通过将波形写入基带文件。利用频谱分析仪对生成的蓝牙BR/EDR波形进行频谱和谱图可视化。
本例中可以通过改变传输方式来实现EDR报文的传输。示例使用helperBluetoothPacketDuration.mhelper函数返回蓝牙报文的持续时间。
要解码本例中产生的蓝牙BR/EDR波形,请参考蓝牙BR/EDR接收器示例。
用于ADALM-PLUTO无线电的SDR硬件和通信工具箱支持包的故障排除的一般提示可以在金宝app常见问题及修复(模拟设备通信工具箱支持包ADALM-Pluto金宝app无线电).
蓝牙特殊兴趣组(SIG)。核心系统包[BR/EDR控制器卷]。蓝牙核心规范.5.1版,第2卷。www.bluetooth.com