基于GNURadio的USRP开发教程(4):基本开发案例 No.2/2

目录

同志!

前言

1. USRP初始配置

(1)配置IP

(2)设备连接

(3)ping IP

(4)查找USRP设备

(5)查看设备信息

2. 基于USRP硬件设备的案例

(1)创建频谱分析仪

(2)创建FM接收机

(3)AM信号收发

常见问题

(1)uhd_usrp_probe报错

(2)und_find_devices找不到设备,但可以ping通

(3)GRC运行时显示找不到设备

(4)“假砖”问题

参考链接


同志!

        从新手的角度快速入门USRP,我采用的是面向对象的思想来学习,试图用较短的时间完成重要部分知识的构建,从而在短时间内可以实现一条基于USRP的完整链路。秉承着先完成再完善的原则,文中若有错误/更好的实现办法,欢迎同志们留言讨论!qq:2283814012

前言

        本系列包括环境配置(Ubuntu系统安装、UHD驱动配置、GNURadio安装)、软件无线电设备介绍、基本开发案列、进阶开发四个方面。 

        本节将结合USRP设备(USRP 2922/N210、USRP 2954/x310)实现一些基本的开发案例,包括前期关于USRP的配置问题以及在实际操作过程中粉丝碰到的几类问题和解决方案,助力同志们尽早上手USRP。

注意:本节介绍的案例是基于单台USRP设备,关于收发功能使用的是同一台设备的收、发通道;下一期将介绍如何使用多台USRP设备进行一发一收操作。

 本系列往期教程传送:

基于GNURadio的USRP开发教程(0):环境配置No.1/2icon-default.png?t=N7T8https://blog.csdn.net/weixin_45232144/article/details/134040963?spm=1001.2014.3001.5501基于GNURadio的USRP开发教程(1):环境配置No.2/2icon-default.png?t=N7T8https://blog.csdn.net/weixin_45232144/article/details/134083626?spm=1001.2014.3001.5501基于GNURadio的USRP开发教程(2):深入认识USRP设备icon-default.png?t=N7T8https://blog.csdn.net/weixin_45232144/article/details/134364966?spm=1001.2014.3001.5501基于GNURadio的USRP开发教程(3):基本开发案例 No.1/2icon-default.png?t=N7T8https://blog.csdn.net/weixin_45232144/article/details/134913245?spm=1001.2014.3001.5501

1. USRP初始配置

        这里以USRP 2922/N210的初始配置为例,其他USRP设备的配置几乎相同。其实关于USRP设备的配置信息通常在该型号的USRP技术文档中已经标明,一定要耐心读懂它的技术文档。

        参考链接1和参考链接2为USRP 2954和2922的官方技术文档。

(1)配置IP

        在连接设备之前需要配置主机的静态IP

        USRP设备的默认IP为192.168.10.2(如下图),Windows系统下指定Internet协议版本 4 (TCP/IPv4) 的静态IP地址如下,实际上主机IP地址不是必须为192.168.10.1,.3/4/5...都可。

        Ubuntu系统下网络配置截图如下,其余部分均为默认项。

(2)设备连接

        将设备按照教程(2)中“硬件连接”一节的连接方式连接,打开设备电源,该设备需要15秒才可以完全启动。注意这里采用的是网口(RJ45)连接,USRP 2954R设备的第一种连接方式不适合本节教程。基于GNURadio的USRP开发教程(2):深入认识USRP设备文章浏览阅读572次,点赞3次,收藏7次。本系列包括环境配置(Ubuntu系统安装、UHD驱动配置、GNURadio安装)、软件无线电设备介绍、基本开发案列、进阶开发四个方面。本篇将深入认识USRP设备,为后续开发做硬件准备。关于该部分内容主要参考NI官网提供的相关手册,其中参考链接1为《USRP-2950/2952/2953/2954/2955 Getting Started Guide》,也是本节的主要参考依据,参考链接2为《USRP-2920/2921/2922 Getting Started Guide》。_usrp2954rhttps://blog.csdn.net/weixin_45232144/article/details/134364966?spm=1001.2014.3001.5501

(3)ping IP

        启动后通过ping IP方式确认设备是否正确连接。打开Ubuntu系统终端,并输入ping 192.168.10.2(注意:USRP的默认IP基本都是这个,但 USRP 的 IP 是可以后期更改的,因此新手如果拿的是别人使用过的USRP,注意IP地址有可能被别人更改了,可以通过NI-USRP Configuration Utility进行IP地址查询),正确连接下将出现如下界面:

        注意:ping 的是USRP的地址,不是主机IP。

(4)查找USRP设备

        运行und_find_devices,查看是否可以检测到USRP设备,如下图所示。

(5)查看设备信息

        运行und_usrp_probe以查看该USRP的设备信息,但出现下面报错:

        从图中红色部分可以得知,这时由于没有更新该设备的固件和FPGA images,此时需要切换到Windows系统,利用NI-USRP Configuration Utility这个软件对设备进行更新。注意,该更新的内容是储存在USRP的设备中,不是主机环境配置错误引起的。

        该步骤(链接3)参照NI官网提供的教程:《如何更新NI USRP 292x和N2xx的固件和FPGA镜像》。更新固件后再次运行und_usrp_probe,得到下图内容。

        可以发现下半部分图中展示内容即为USRP设备的详细信息,但是上半部分图中的内容主要分为若干个WARNING和一个EnviromentError

        通常,警告内容不影响系统操作,运行警告内容中的提示命令即可解决这些警告。

        但环境错误应当引起重视。根据该错误提示的内容来看,是因为当UHD产生新线程时,它可能会尝试提高线程的调度优先级。如果设置新的优先级失败,UHD软件将向控制台打印警告。该警告是无害的。它只是意味着线程将保留正常或默认的调度优先级。若非要解决,可以参考链接4。

2. 基于USRP硬件设备的案例

(1)创建频谱分析仪

        利用GNURadio创建一个实时的频谱分析,这是一个用软件实现的无线电频谱分析仪,利用它能够验证硬件是否工作正常,参考链接8。

        注意:要注意你使用设备和天线的工作频段!

        首先创建一个软件频谱分析仪,如下图所示。

        运行后可以通过调节freq即可观察到不同频率下的频谱分析图,例如WIFI的频段为2.4GHz,下图展示了该频段下的频谱。但奇怪的是,当把检测频率的中心设置在2.4GHz时,其表现的峰值并不明显并伴有跳动,而将中心频率设置在2.39GHz/2.41GHz时,在检测带宽(20MHz)的边缘部分却有来自2.4GHz下稳定的峰值。

        关于这个问题我初步认为是天线的工作频段导致的,2.39G属于是工作频段范围之外,2.4G属于是工作频段的边界,但具体它是如何影响幅值变化的希望有看法的同志在评论区交流讨论!

(2)创建FM接收机

        注意:由于USRP-2922的接收频率范围最低为400MHz,已经超出了FM广播的频段,所以理论上USRP-2922是无法作为FM接收机的,但USRP-2954R的最低接收频率为10MHz,可以实现FM信号接收。

        由于实验室购置的天线型号为Vert2450,其支持的接收频率为2.4-2.5和4.9-5.9GHz,所以无法接收FM广播信号。如条件满足,可参考链接 9 搭建FM接收机。

(3)AM信号收发

        该案例写于开发初期,根据AM信号的表达式,下面实例中演示的并非严格的AM信号,该流图一方面演示了Rational Resamper和Repeat模块的使用方法,另一方面可以通过USRP实现信号的收发,有助于快速熟悉物理链路搭建的基本流程。

下图展示了发送天线在不同增益下的信号接收情况:

下图展示了发送频率和接收频率对准/未对准时的情况:

常见问题

        在本节案例中可能会出现下面几种常见问题:

(1)uhd_usrp_probe报错

        通过 uhd_find_devices可以查找到设备,但运行uhd_usrp_probe报错,出现下图所示:

        这个问题的解决已经写在了本文的配置教程中,不再赘述。

(2)und_find_devices找不到设备,但可以ping通

        这个问题和上面问题的本质也是相同的,有时候可能固件更新了但是FPGA的镜像没有更新,有时候是二者都没有更新,这个问题还可能出现:在windows上可以正常使用,但在Ubuntu中却找不到设备。解决的办法依然是参考链接3中NI官网提供的解决方案:《如何更新NI USRP 292x和N2xx的固件和FPGA镜像》,在烧录的时候务必选好固件版本和FPGA镜像版本,且在烧录过程中一定不要断电,否则将变成“假砖”,如果真不小心变成“假砖”,解决方案在下面有写。

        关于NI-USRP Configuration Utility在Win系统中的的安装就不再赘述,这个网上都有,很简单。

(3)GRC运行时显示找不到设备

        und_find_devices和uhd_usrp_probe都正常,但运行GRC流图时却显示找不到设备。这个问题说来也很荒唐,我自己也碰到过,最后的问题让我哭笑不得。 und_find_devices和uhd_usrp_probe都正常说明环境配置等等都没问题,问题是 GNURadio中 USRP模块的“地址”格式写的不规范。这个问题我在上一期博客中已经写到了,如下图:

其实在GNURadio的开源平台中(参考链接5)也已经规范了它的格式:

        注意:这里用的是“=”,不是“:”,你如果直接复制uhd_find_devices出现的内容,那里面用的是“:”!

(4)“假砖”问题

        当连接好硬件设备之后可能会出现USRP面板上的ETH口/网口指示灯不亮,说明设备此时并没有被主机检测到。首先检查主机的以太网配置是否和USRP的默认IP(192.168.10.2)在同一网段,如果不是该原因造成可能是由于在使用Windows系统下使用NI-USRP Configuration Utility进行FPGA镜像文件更新时出现了断电/卡机的情况,按照参考链接6和7即可拯救“假砖”。

注:建议使用虚拟机,如果使用现有的Linux系统下安装Vivado,请注意系统内存是否足够。

参考链接

1. https://www.ni.com/docs/zh-CN/bundle/usrp-295x-getting-started/page/overview.html

2. https://www.ni.com/docs/zh-CN/bundle/usrp-292x-getting-started/page/overview.html

3. 如何更新NI USRP 292x和N2xx的固件和FPGA镜像 - NI

4. USRP Host Performance Tuning Tips and Tricks - Ettus Knowledge Base

5. USRP Source - GNU Radio

6. USRP_X310_Device_Recovery手册_usrpx310 huifu-CSDN博客

7. USRP X310变砖恢复/救砖/设备恢复教程

8. GNU Radio培训_入门培训_USRP中文网站

9. GNU Radio + USRP B210 实现FM接收机、FM发射机_gunradio usrp 发送fm-CSDN博客

  • 31
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bazooka_hxp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值