MATLAB中使用LimeSDR
作者微信公众号:小卫星
操作系统:Windows 10
编译器:VS2017 community
MATLAB:MATLAB2018a
MATLAB有时候真是没法避免,尤其是MATLAB2018a有了实时运行模式,但是可恶的是帮助文档不再随软件安装,需要注册、序列号等一堆认证才可以查看。
讨论MATLAB用LimeSDR的地方主要有:
https://discourse.myriadrf.org/t/limesdr-matlab-support/381
此外,这个地方也有jocover的文件:
联合开发网:http://www.pudn.com/Download/item/id/3455341.html
https://github.com/jocover/Simulink-MATLAB-LimeSDR/releases
从该处下载所有文件,包括
https://github.com/jocover/Simulink-MATLAB-LimeSDR
如果最关键的 libLimeSuite_thunk_pcwin64.dll下载不下来,好吧
好吧,你只能跟我一样想办法编译了。
目前已有的文件包括:
解压Simulink-MATLAB-LimeSDR-thunk.zip,并进入目录。
进入MATLAB,进入刚才的目录,并使用命令:
help limeSDR.build_thunk
按提示build_thunk,提示找不到命令,输入help limeSDR:
进入limeSDR的can'参考页
发现其实有build_thunk的方法
使用命令:limeSDR.build_thunk
提示缺少:库文件
在该目录下拷入:LimeSuite.h、LimeSuite.dll,根据我不断的
的实践,还需要拷入LMS7002M_parameters.h,继续执行:limeSDR.build_thunk
一大堆的橙色警告,但是非常幸运的是,libLimeSuite_thunk_pcwin64.dll生成了,还有一堆附属的东西。
输入:dev=limeSDR
提示,错误使用
插入LimeSDR mini,再次使用该命令:
板上绿灯亮,但是出现错误:
未定义函数或变量 'gatewareRevision'。
出错 limeSDR (line 170)
obj.info.gatewareRevision=char(dinfo.gatewareRevision);
出错 wyLimeMATLAB (line 2)
dev = limeSDR
注释掉limeSDR.m第170行,
又出现错误:
出错 limeSDR (line 174)
obj.versions.buile_timestamp=char(calllib('libLimeSuite',
'LMS_GetBuildTimestamp'));
出错 wyLimeMATLAB (line 2)
dev = limeSDR
注释掉173、174
%obj.versions.library_version=char(calllib('libLimeSuite', 'LMS_GetLibraryVersion'));
%obj.versions.buile_timestamp=char(calllib('libLimeSuite', 'LMS_GetBuildTimestamp'));
此外,如果是mini,还要注释掉第177、第179行。
运行
clc,clear,close all;
dev = limeSDR
dev.info
得到输出
dev =
limeSDR - 属性:
rx0: [1×1 limeSDR_XCVR]
tx0: [1×1 limeSDR_XCVR]
rx1: []
tx1: []
info: [1×1 struct]
versions: []
>> dev.info
ans =
包含以下字段的 struct:
deviceName: 'LimeSDR-Mini '
expansionName: 'UNSUPPORTED '
firmwareVersion: '5 '
hardwareVersion: '0 '
protocolVersion: '1 '
gatewareVersion: '1.24 '
gatewareTargetBoard: 'LimeSDR-Mini '
>>
可见已经识别mini。
怎么样收数据呢。运行代码:
clc,clear,close all;
dev = limeSDR
dev.info
dev.rx0.frequency = 91.6e6;
dev.rx0.enable;
dev.start;
for k = 1:5
data = dev.receive(1024);
figure,pwelch(data,[],[],[],8e6);
drawnow;
end
dev.rx0.disable;
dev.stop;
好了,久违的图形出现了:
注意,这段代码和jocover的有所区别(他的运行不出来)。
Done!