1.连接Andriod手机或者平板(I.MXRT1060 USB作为主机)
手机上USB共享功能可以用来完全访问互联网。I.MXRT1060的USB做Host主机,MCUXpresso SDK中提供的USB主机RNDIS和LWIP示例,通过打开USB共享功能手机访问互联网。USB完成了MAC层的Socket内容,通过手机转发出去。下图是MK66 MCU连接手机上网的示意图。I.MXRT1060可以代替 MK66实现该方案。
I.MXRT1060配套的测试例程如下。
2.连接电脑 (I.MXRT1060 USB作为从机)
如下展示的是一个将EVK连接到以太网电缆,通过USB转网口网桥适配器。这意味着MIMXRT1060-EVK需要作为相应的USB主机类运行。主机需要使用的USB类取决于它所连接的确切适配器,有些可以使用USB-RNDIS,另一些可以使用USB-ECM或USB-EEM。然而,实际上,许多使用的适配器将使用未指定的供应商特定USB类,因此,如果需要支持这样一个定义的USB类,则需要进行逆向工程。NXP SDK包括一个简单的USB 设备示例,没有使用以太网类的USB主机示例,由于需要指定需要使用的适配器(以确保其类在i.MX RT系统中得到支持),因此它通常不是最理想的解决方案。简单的USB电缆连接(设备)更简单、更高效,也不需要外部硬件。只需将USB设备连接器连接到PC并安装RNDIS驱动程序, 这使得任何USB处理器都可以充当PC的网络,而无需执行USB以太网适配器功能。
测试使用的RNDIS demo例程,MCUXpresso SDK USB RNDIS & LWIP User Guide and the lwip_dhcp_usb SDK demo
意味着将I.MXRT1060 USB设备模拟为网卡,SDK演示基于EVK板,使用USB连接到网络。如果想使用WIFI或者 4G模块连接网络,应该修改RNDIS演示的应用层.
I.MX RT1060 EVK SDK中有一个SDK示例evkbmimxrt1060_lwip_dhcp_usb_bm。在文档中提到的三部手机将USB连接到互联网。但如果用户想使用USB 4G模块,而不是指南中列出的手机,可以连接到互联网,这个例子可能在这种情况下无法工作。然后我们必须将这个例子应用于新的USB 4G模块。
该文档Connect i.MX RT1060 to USB 4G Module (RNDIS Mode) (nxp.com.cn)讨论了当终端变成像Quectel的EC200A-CN这样的USB 4G模块,然后用这个USB 4G模块连接到互联网时实现适配。官方默认的 SDK 参考RNDIS示例 lwip_dhcp_usb。
SDK_2_10_0_EVK-MIMXRT1060\boards\evkmimxrt1060\lwip_examples\lwip_dhcp_usb
此演示演示了LwIP TCP/IP和USB协议栈上的DHCP和ping演示。另请参阅文档:MCUXpresso SDK USB主机RNDIS和LWIP。它在文件夹 SDK_2_10_0_EVK-MIMXRT1060\boards\evkmimxrt1060\lwip_examples\lwip_dhcp_usb\freertos下。介绍了如何使用MCUXpresso SDK中提供的USB主机RNDIS和LWIP示例,通过打开USB共享功能的手机访问互联网。
当在RT1060上运行lwip_dhcp_usb_bm/freertos示例时,使用UGREEN OTG USB主机模式使用电缆将手机USB设备连接到华为Mate40 Pro时,无法检测到手机设备。(https://item.jd.com/27995995406.html)。注意:试过使用SSK OTG usb电缆,效果很好。在另一部移动电话(Smartisan T1)上尝试过这种UGREEN USB OTG电缆,这个效果很好。此外,还尝试了其他几根UGREEN USB OTG电缆在Mate40 Pro上运行此测试,但都未能检测到手机,所以认为这应该是兼容性问题,而不是由一根有缺陷的USB电缆引起的。
RNDIS使用USB-CDC类作为其操作的基础。它添加了封装的命令和响应,以建立虚拟网络连接,该连接可用于将以太网控制器连接到主机,或允许主机使用网络协议与连接的设备通信。可以作为虚拟网络设备与主机通信的设备的一个有用特性是,它们可以使用基础设施,如Web浏览器和FTP服务器,以允许与它们交换数据,还允许在不需要物理以太网接口的情况下实现用户接口。这允许制造商的产品在基于以太网的设备(具有以太网控制器的设备)和更简单的基于USB的接口(为了节省成本和功耗而没有以太网的设备)之间共享此类接口。例如,可以对所有部件使用标准的基于web浏览器的配置和控制工具,而不必使用不同的程序。RNDIS设备可以轻松激活并与其他复合设备共享,包括一个或多个USB-CDC VCOM连接。允许RNDIS在任何i.MX RT板上联网(带或不带RNDIS到以太网桥接),并允许RNDIS设备和RNDIS主机(例如,当HS USB主机连接器上连接有支持RNDIS的WiFi或蜂窝调制解调器时)以及各种其他WiFi连接,以实现运行时可配置的多网络和多接口解决方案(例如,通过RNDIS连接的PC可以将其用作多个网络上的以太网、WiFi、蜂窝连接的桥接器——有些允许访问iMX RT TCP/IP堆栈功能,有些则与之隔离)。如果进行相应配置,iMX RT也可以显示为具有多个设备的多个网络。虚拟NIC项目是一个基于MCUXpresso SDK的简单演示程序。它被枚举为网络适配器。用户可以通过正确配置此网络适配器来访问网络。构建一个USB CDC类的设备来实现RNDIS协议,并为进一步的开发提供一个简单的项目。
项目路径:<MCUXpresso_SDK_Install>/boards/<board>/usb_examples/usb_device_cdc_vnic/<rtos>/toolchain
轻量级软件版本路径:
<MCUXpresso_SDK_Install>/boards/<board>/usb_examples/usb_device_cdc_vnic_lite/<rtos>/<toolchain>.
备注:<rtos> is Bare Metal 或者FreeRTOS OS
如果实际使用中,只需要将USB设备当作终端,PC端需要枚举成网口设备通信,通过RNDIS协议进行通信,并不需要经过实际网络进入到局域网后台通信,那么采用主机或者从机模式都是可以实现的。