MATLAB连接USRP实现数据采集

本文主要针对USRP 2955设备进行数据接收。2955由X310进行封装,可以实现数据的收发。

1、USRP连接电脑需要修改IP地址。USRP中的IP地址默认为192.168.10.2。因此电脑端需要修改IP地址为192.168.10.1 ,子网掩码为255.255.255.0。

2、MATLAB2018中的UHD版本为3.9.7,MATLAB2019中的UHD版本为3.13。USRP官网目前的最新版本为3.14。要保证MATLAB能够连接上USRP需要两个的版本一致,因此使用MATLAB2019和USRP的3.13。其中MATLAB2019中需要下载Communications Toolbox Support Package for USRP Radio功能包。

3、官网下载uhd_3.13.1.0-release_Win32_VS2014。将路径添加到环境变量中,该软件需要pip和python2.7的支持。因此需要先安装python,python2.7.8以上的版本才自带pip。因此需要安装python2.7.8。

4、安装完成后断开网络修改IP,连接USRP,首先执行uhd_find_devices确定是否发现设备,若通过网线连接,网口灯不亮,则利用VIVADO烧写bit文件。

5、uhd_usrp_probe 命令,使用探针工具若检测到如下问题(固件有问题需要更新):


Error: RuntimeError: Expected FPGA compatibility number 35, but got 33:
The FPGA image on your device is not compatible with this host code build.
Download the appropriate FPGA images for this version of UHD.
As an Administrator, please run:
"C:\Program Files\UHD\lib\uhd\utils\uhd_images_downloader.py"
Then burn a new image to the on-board flash storage of your
USRP X3xx device using the image loader utility. Use this command:
"C:\Program Files\UHD\bin\uhd_image_loader" --args="type=x300,addr=192.168.10.2"


6、连接外网,CMD中执行"C:\Program Files\UHD\lib\uhd\utils\uhd_images_downloader.py"会自动下载固件 

7、下载完成后执行"C:\Program Files\UHD\bin\uhd_image_loader" --args="type=x300,addr=192.168.10.2进行镜像文件的烧写

8、完成后,打开MATLAB,执行findsdru命令,若status显示not compatible则需要烧写MATLAB的镜像,使用getSDRuDriverVersion()  查看驱动版本

9、执行druload('Device','X310')烧入image重启后执行findsdru,statu显示success

10、参考代码:

%首先查找设备findsdru
%参数说明1:https://ww2.mathworks.cn/help/supportpkg/usrpradio/ug/comm.sdrureceiver-system-object.html#bun592c-29
%参数说明2: https://ww2.mathworks.cn/help/dsp/ref/dsp.signalsink-system-object.html?s_tid=doc_ta
%% SDRuReceiver
% 1.ChannelMapping 通道映射:1,2or[1 2] channels 1 and 2 of the radio with IP address 192.168.10.3.
% 2.CenterFrequency:2.45e9
% 3.LocalOscillatorOffset:0 本地振荡器(LO)偏移频率
% 4.Gain:default:8 硬件接收器数据路径的总体增益
% 5.ClockSource:'Internal' (default) | 'External' 时钟源
% 6.DecimationFactor 512 (default) | integer 数据接收器的抽取系数
% 7.TransportDataType int16 
% 8.OutputDataType 'Same as transport data type' (default) | 'double'   接收信号的数据类型
% 9.SamplesPerFrame 362 每帧数据的样本
% 10.EnableBurstMode false not run in real time
% 11.NumFramesInBurst 100
% 12.MasterClockRate default:200e6 120e6 186.32e6 200e6
% 13.PPSSource :Internal 
%% dsp.SignalSink
% 1.BufferLength:default:inf Maximum number of input frames to log
% 2.Decimation:default;1 抽取因子
% 3.FrameHandlingMode:Output dimensionality for frame-based inputs
% default:2-D array
% 4.Buffer:logged data

clear;close all;
rx_SDRu = comm.SDRuReceiver('Platform','X310','IPAddress','192.168.10.2','CenterFrequency',700e6,'OutputDataType','double','LocalOscillatorOffset',650e6 );
% info(rx_SDRu)  

%%进行一次数据的采集,第一次是buffer置0,第二次才是是未知数据,第三次才是正式数据
%默认buffer大小为362

% [Y1,datalen]=step(rx_SDRu);
% subplot(221);plot(real(Y1));title('空数据');
% pause(3);
% [Y2,datalen]=step(rx_SDRu);
% subplot(222);plot(real(Y2));title('未知数据');
% [Y3,datalen]=step(rx_SDRu);
% subplot(223);plot(real(Y3));title('正式数据1');
% [Y4,datalen]=step(rx_SDRu);
% subplot(224);plot(real(Y4));title('正式数据2');

%%利用SignalSink采集数据
rx_log = dsp.SignalSink('Decimation',1);
data1 = rx_SDRu();
rx_log(complex(data1));%第一轮采集的是实数0,后面为复数,因此强制转换,或者后面的数据存放新的变量里面
subplot(121);
log=rx_log.Buffer;
plot(real(log));title('空数据');
pause(3);
data2 = rx_SDRu();
rx_log(complex(data2));%第二轮采集的是未知
subplot(122);
log=rx_log.Buffer;
plot(real(log(362:end)));title('未知数据');

%正式数据
for counter = 1:20
  data = rx_SDRu();
  rx_log(data);
end
log=rx_log.Buffer;
figure;
plot(real(log(722:end)));title('正式数据');
release(rx_SDRu)

 

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要在Matlab连接USRP,需要进行一些参数配置。首先,您需要使用10Gb SFP或光纤电缆将USRP连接到主机计算机的SFP端口0/1。然后,您可以使用命令uhd_usrp_probe来获取USRP设备的详细信息。这个命令将为您提供有关USRP设备的信息,例如设备的序列号、硬件版本和固件版本等。 在连接USRP设备之前,您还需要进行网络配置。根据所提供的手册,您可能需要进行串口连接(对于N321设备可以忽略此步骤)。具体的网络配置步骤可以在手册中找到。 总结起来,要在Matlab连接USRP,您需要完成以下步骤: 1. 使用10Gb SFP或光纤电缆将USRP设备连接到主机计算机的SFP端口0/1。 2. 运行命令uhd_usrp_probe来获取USRP设备的详细信息。 3. 根据设备手册中提供的指导进行网络配置,包括串口连接(对于N321设备可以忽略)。 完成这些步骤后,您就可以在Matlab中配置和使用USRP设备了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [USRP N321上手](https://blog.csdn.net/KillTheGood/article/details/114585422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值