BLE1M TX测试代码示例与结果记录

0 下载量 49 浏览量 更新于2024-08-03 收藏 52KB TXT 举报
本篇代码是针对蓝牙低功耗(Bluetooth Low Energy, BLE) 1M传输模式(1Mbps)的完整测试脚本,它使用了Rohde & Schwarz (R&S)蓝牙SIG库以及RsInstrument库来执行测试。测试涵盖了以下几个关键部分: 1. **库导入**: - 从`RsCmwBluetoothSig`库导入了必要的模块,用于与Rohde & Schwarz仪器通信。 - `RsInstrument`库用于创建和配置硬件接口。 - `os`, `time`, `openpyxl`库用于文件操作、时间管理和Excel数据记录。 - `LineChart`, `Reference`, `Series`, 和 `spreadsheet_drawing` 是openpyxl库中的图表相关模块,用于生成测试结果可视化。 - `loguru`用于日志记录。 2. **函数定义**: - `BLE1M_TX_Test`函数接受多个参数,如: - `instrument_rst`:仪器复位状态。 - `inquiry_enable`:是否启用查询功能。 - `Instrument_address`:目标设备地址。 - `plot_figure`:是否生成图表。 - `Test_PVT`、`Test_Modulation`、`Test_ACPR`:分别针对PVT(Power-Voltage-Time)、调制方式和ACPR(Adjacent Channel Power Ratio)等不同测试项目。 - `test_channel_step`:测试频道步长。 - `log_record`:是否记录日志。 - `commport_num`:通信端口编号。 - `input_external_att`和`output_external_att`:输入和输出外部增益。 - `RF_PORT`:射频端口名称。 - `exp_power`:预期功率值。 3. **测试步骤**: - 定义测试频道范围,按`test_channel_step`递增。 - 创建一个名为`test_results`的Excel工作簿,用于存储测试结果,保存文件名包含当前日期和时间。 - 在指定路径创建或打开结果文件,并删除默认的工作表。 4. **日志管理**: - 使用`loguru`创建一个日志记录器,用于跟踪函数执行过程中的信息和可能的错误。 这个脚本的主要目标是对BLE1M的发射(TX)性能进行一系列测试,包括但不限于功率、调制质量、ACPR等指标,并将结果以Excel表格的形式保存。测试过程可能涉及仪器设置、数据采集和处理,以及结果的可视化。通过设置不同的参数,用户可以根据实际需求调整测试的精度和范围。同时,日志记录功能有助于调试和故障排查。

将下列代码中的基带8-PSK更换为4-PSK:clear all nsymbol=10000; %每种信噪比下的发送符号数 T=1; %符号周期 fs=100; %每个符号的采样点数 ts=1/fs; %采样时间间隔 t=0:ts:T-ts; %时间向量 fc=10; %载波频率 c=sqrt(2/T)*exp(j*2*pi*fc*t); %载波信号 c1=sqrt(2/T)*cos(2*pi*fc*t); %同相载波 c2=-sqrt(2/T)*sin(2*pi*fc*t); %正交载波 M=8; %8-PSK graycode=[0 1 2 3 6 7 4 5]; %Gray编码规则 EsN0=0:15; %信噪比,Es/N0 snr1=10.^(EsN0/10); %信噪比转换为线性值 msg=randint(1,nsymbol,M); %消息数据 msg1=graycode(msg+1); %Gray映射 msgmod=pskmod(msg1,M).'; %基带8-PSK调制 tx=real(msgmod*c); %载波调制 tx1=reshape(tx.',1,length(msgmod)*length(c)); spow=norm(tx1).^2/nsymbol; %求每个符号的平均功率 for indx=1:length(EsN0) sigma=sqrt(spow/(2*snr1(indx))); %根据符号功率求噪声功率 rx=tx1+sigma*randn(1,length(tx1)); %加入高斯白噪声 rx1=reshape(rx,length(c),length(msgmod)); r1=(c1*rx1)/length(c1); %相关运算 r2=(c2*rx1)/length(c2); r=r1+j*r2; y=pskdemod(r,M); %PSK解调 decmsg=graycode(y+1); [err,ber(indx)]=biterr(msg,decmsg,log2(M)); %误比特率 [err,ser(indx)]=symerr(msg,decmsg); %误符号率 end ser1=2*qfunc(sqrt(2*snr1)*sin(pi/M)); %理论误符号率 ber1=1/log2(M)*ser1; %理论误比特率 semilogy(EsN0,ber,'-ko',EsN0,ser,'-k*',EsN0,ser1,EsN0,ber1,'-k.'); title('8-PSK载波调制信号在AWGN信道下的性能') xlabel('Es/N0');ylabel('误比特率和误符号率') legend('误比特率','误符号率','理论误符号率','理论误比特率')

2023-05-27 上传