1、实验内容
前面第五章里面我们给大家展示了如何通过网线将LabVIEW Linux RT程序部署下载到下位机ZYNQ芯片的PS端ARM里面运行,中间必须要有一根千兆网线,但是用过NI cRIO或者myRIO的用户知道,其实我们还可以通过WiFi无线的方式将上位机编写好的Linux RT部署到ZYNQ里面,这样做的好处是可以摆脱了有线网的距离限制;同时也可以将多个ZYNQ设备连到同一个WiFi热点,这样上位机就能同时管理这些ZYNQ硬件,摆脱了路由器端口数量不够的局限性。
另外,现在很多笔记本电脑越做越薄,基本不带RJ45网口,比如,联想ThinkPad里面通常只有P系列和T系列才有网口,其他的电脑都取消了RJ45网口,用户只能买一个TypeC雷电转网口扩展坞来解决这个问题。
针对以上这些问题,有必要拓展一下我们My FPGA ZYNQ Pro20软件工具包,让其具备WiFi通信和部署的能力,这样用户就能基于我们My FPGA ZYNQ开发出来类似NI无线cRIO的产品了。
2、实验目标
本节实验我们需要学会利用LabVIEW编写一个USB WiFi配置Linux RT程序,下载到ZYNQ芯片的PS端ARM里面去运行,让下位机ZYNQ芯片能够具备连上路由器WiFi热点或者手机创建出来的WiFi热点,复习并熟练掌握ZYNQ平台PS(ARM)端的LabVIEW Linux RT程序开发过程和原理。
3、硬件介绍
本节实验需要用到两个硬件,一是USB WiFi模块,二是正点原子领航者ZYNQ开发板,Xilinx JTAG下载器本节实验用不上。
3.1:USB WiFi无线网卡介绍
关于USB WiFi模块就是大家平时用的那种很便宜的指甲盖大小的能上网的模组,比如前几年很火的360 WiFi无线模块,能让没有无线网卡的台式机轻松上网。
这里推荐用户两种性价比超高的不同芯片厂商的USB WiFi通信小模块,一是基于联发科设计的MT7601这款芯片的GRIS免驱动USB无线网卡小模块,如图2-1所示;另外一款是基于瑞昱设计的RTL8187L+6691H大功率USB无线网卡,如图2-2所示。这两款USB WiFi模块淘宝上都有卖的,价格很便宜,大家可以自行采购。
图2-1:基于联发科MT7601芯片设计的USB WiFi无线网卡模块
图2-2:基于瑞昱RTL8187L+6691H大功率USB 无线网卡模块
这两种USB WiFi模块编者都买了,如图2-3所示。
图2-3:买回来的两种不同芯片设计的USB WiFi无线网卡模块(实物图)
后续实验现象环节里面,我们会给大家具体演示一下运行效果。有条件的用户可以两种都买来测试一下,第一种便于集成体积小,第二种体积大一些,带独立天线,发射和接收功率强一些,适合更远距离的WiFi通信,后续做项目或者产品的时候,大家可以根据实际工况选择适合自己的USB WiFi无线模块。
3.2:正点原子领航者ZYNQ开发板上的USB接口
与以往单片机或者STM32不同的时候,对于拥有766MHz/866MHz主频ARM内核的ZYNQ芯片来说,一般很少会跑裸机程序,因为裸机无法发挥出来ZYNQ芯片里面PS端ARM处理器的优势以及Linux开源生态的便利性。
而且对于跑裸机的单片机、ARM、DSP这类芯片来说,要想搞定一个USB Slave设备的驱动开发,就要精通嵌入式芯片主机端也就是Host驱动开发,简直要了半条命。
好在ZYNQ芯片PS端ARM可以运行Linux系统,这样一来,很多常用的外设驱动,Linux系统本身就集成了,就算没有集成,只要让Linux系统联网,就能在全世界的服务器上执行一条安装命令就可以寻找到对应的驱动软件,非常方便。
比如,本节实验我们要用到的USB WiFi无线网卡驱动,Linux系统里面就自带了,而且,除了上面我们实验过的两款WiFi芯片外,Linux系统里面还有很多其他厂家的PHY芯片驱动,比如博通的、Intel的等等,这里不再展开了,感兴趣的用户可以借助前面介绍过的MobaXterm软件到ZYNQ Linux RT系统里面相应的网卡驱动目录下看一下。
既然ZYNQ PS端的Linux RT系统里面自带了USB WiFi无线网卡驱动,那么我们只需要将买回来的USB WiFi模块随便找一个USB Host口怼进去即可。
注意:USB Host主机端口,因为USB WiFi模块相当于Slave从机从设备。
正点原子领航者ZYNQ开发板上有4路USB Host端口,都是A型口,如图2-4所示。本质上是通过一个USB HUB芯片将ZYNQ芯片的一路USB Host扩展出来变成4路USB Host,这样就极大的增强了ZYNQ板子的USB外设拓展能力,比如,可以同时接入鼠标、键盘、U盘、蓝牙模块、WiFi模块等。而其他ZYNQ开发板为了省钱,很少会同时扩展出4路USB Host,这也是我们选择正点原子ZYNQ开发板的原因之一。
图2-4:正点原子领航者ZYNQ开发板上的4路USB Host接口(A型口)
4、原理图介绍
正点原子ZYNQ领航者开发板上的USB Host原理图,如图2-5所示,采用的USB HUB芯片是经典的GL850,以后大家自己基于ZYNQ芯片做板子的话,也可以采用这颗GL850 USB HUB芯片,然后参考这里的原理图设计多路USB口出来。
图2-5:基于经典的GL850 USB HUB芯片扩展出来的多路USB口(来自正点原子领航者ZYNQ开发板)
5、驱动VI函数讲解
正式开始采用LabVIEW编写ZYNQ PS端Linux RT WiFi配置程序之前,我们先来了解一下本节实验要用到的Linux RT驱动VI函数功能。
为了方便用户使用,我们提前将底层USB WiFi无线网卡的通信配置函数封装到了LabVIEW Linux RT环境里面,变成一个小图标,直观醒目。
这个WiFi配置VI位于“PowerGod-RIO-RT”函数选板里面,如图2-6所示。将其拖拽出来,然后双击打开这个“PS_Wifi_Set(SubVI).vi”WiFi配置函数,如图2-7所示。
图2-6:神电测控研发的“PowerGod-RIO-RT”函数选板里面的WiFi配置函数
图2-7:打开后的WiFi无线通信配置VI函数前面板
可以看出,这个函数本身很简单,用户只需要输入需要连接的WiFi热点名称和密码就可以了,执行以后,如果链接成功会得到动态分配的IP地址等信息,如果链接识别也会有提示具体链接失败的原因,一目了然。