NXP

WinCE平台高速WiFi实现方法

2019-07-12 13:53发布

ETA6210简介     ETA6210是一款标准mini PCIe尺寸的WiFi通讯模块,模块核心芯片为NXP的iMX6UL和AP6181 WiFi芯片。ETA6210主要是与英创公司WINCE工控主板配套使用,实现高速WiFi通讯,模块支持应用程序WinSock编程。英创工控主板是通过mini PCIe上的USB接口来操作ETA6210模块的。在实际应用中,ETA6210是插在客户底板的mini PCIe插座上使用。开发评估阶段,可插在英创的ESMARC EVB评估底板的mini PCIe插座上使用,也可利用ETA303模块转换成标准USB接口使用。   eta6210 wifi模块.png ETA6210高速WiFi模块     ETA6210本身预装有完整的操作系统,在上电后自动进行WiFi连接。并同时打开2路虚拟串口COM17、COM18与WINCE工控主板进行通信:COM17用AT指令进行参数设置,模块控制等;COM18用于网络数据传输。     ETA6210网络模式与常规WiFi模块略有区别。ETA6210直接连入WiFi网络,同时作为路由器接受嵌入式主板的连接。ETA6210将WiFi网络中的数据直接传给嵌入式主板,所以对于嵌入式主板而言,与直接连入WiFi网络没有区别,只是无法直接调用API函数获得WiFi网络中的IP、掩码、网关,而是需要通过AT指令访问ETA6210获得。     连接到WiFi网络后,可以使用SOCKET编程访问网络。   安装     对英创ESMARC主板,ETA6210可直接插入到英创ESMARC 评估底板上的mini PCIe插座,就可进行操作。连接形式如下图所示:   WinCE平台高速WiFi实现方法.png ESMARC底板 + ESM6802 + ETA6210     对其他主板,则可以通过ETA303模块转接标准USB接口上使用。   eta303正面.png ETA6210 + ETA303     英创工控主板将在最新内核中支持ETA6210,用户可以接上主板后直接使用。使用原内核的客户可以联系英创工程师获得ETA6210驱动安装程序。   ETA6210的AT指令简介     ETA6210具有自动管理WiFi连接功能的模块,其内部USB接口可响应WINCE 主控板的访问。在英创的产品中,将USB连接的接口映射为两个串口,一个用于发送AT指令,一个用于支持PPP拨号连接。     ETA6210支持的AT指令格式必须以AT大写作为开头,并加上’ ’作为结束符,如:“AT ”,以下为各个AT指令的响应及相应的参数说明。   指令 描述 AT 测试AT启动 AT+LINK? 查询WiFi连接状态,响应为 +LINK:UP/OFF AT+IP? 查询WiFi的IP地址,响应为 +IP: string AT+IP=... 设置WiFi的IP地址,参数为IP地址 AT+GW? 查询WiFi的网关地址,响应为 +GW: string AT+GW=... 设置WiFi的网关地址,参数为地址 AT+NETMASK? 查询WiFi的子网掩码,响应为 +NETMASK: string AT+NETMASK= 设置WiFi的子网掩码,参数为地址 AT+SSID? 查询WiFi的SSID,响应为 +SSID:string AT+SSID=…. 设置WiFi的SSID,参数为SSID string AT+PSK=…. 设置WiFi的密码,参数为密码 string AT+CSQ? 查询WiFi的信号强度,响应为 +CSQ:Number AT+CNT 启动WiFi的连接 AT+DNT 断开WiFi的连接 AT+RST 重启ETA6210模块   使用方法     为了方便客户的使用,英创的WINCE工控板卡在系统内部放置了两个工具程序: RASEntry.exe和wt.exe,其中RAREntry.exe用于自动创建基于ETA6210的拨号连接,wt.exe用于对于ETA6210模块进行WiFi的参数配置和基本的测试。这个两个程序的运行可以通过telnet登录连接到英创的WINCE工控板,可以在命令提示行下运行。     以下介绍在ETA6210在英创的WINCE工控板上的使用方法,这里以ESM6802作为WINCE主控板。   网络连接     1、运行RASEntry.exe建立拨号连接,该程序目前设置的缺省状态是建立ETA6210的连接。   WinCE平台高速WiFi实现方法.png     此时在ESM6802的界面上可以看到建立成功的ETA6210连接。   WinCE平台高速WiFi实现方法.png     RASEntry.exe一般只需要运行一次。     2、运行wt.exe配置ETA6210 WiFi参数。   wt.exe共支持9个命令,可以直接运行wt获取这个9个命令的相关帮助和说明。   WinCE平台高速WiFi实现方法.png     配置WiFi参数可以通过 “wt -c”来实现,可通过一个文本文件来配置ETA6210 WiFi的SSID和密码,这个文本文件的格式如下:   [WIFI]   SSID="Emtronix.20"   PSK="0987654321"     这部分内容可以独立保存为一个txt文件,也可以增加到英创板卡使用的userinfo.txt文件中,这里是将以上内容保存为一个eta6210.txt的文件,并放置到ESM6802的EDISK目录下。     运行 >wt -c EDISKeta6210.txt   WinCE平台高速WiFi实现方法.png     将WiFi的SSID和相应的密码设置成功。对于在一个确定的WiFi环境下,该命令只需执行一次即可。     WiFi参数配置成功后,可调用 “wt -l” 来检查WiFi的连接状态,如果处于link up的状态,即可进行后一步的拨号连接了。   WinCE平台高速WiFi实现方法.png     运行 “wt -i” 、“wt -g” 可以获得WiFi模块的IP地址以及网关地址。     3、拨号连接。   拨号的方式有两种,一种为手动模式,可以用于测试;一种是通过程序来实现。   手动方式可在ESM6802的显示界面上双击ETA6210连接,即可实现WiFi模块的自动连接。   WinCE平台高速WiFi实现方法.png     程序实现的方式根据所建立的连接名称(ETA6210),直接调用标准的拨号函数RasDial(…)即可,在wt工具程序中,我们提供了拨号功能以及相应的挂断功能。     拨号连接:“wt -d”, 拨号之前建议先检查WiFi的连接状态,WiFi处于UP状态才进行拨号操作。   WinCE平台高速WiFi实现方法.png     挂断拨号:执行“wt -h”即可挂断当前连接。   WinCE平台高速WiFi实现方法.png     以下为拨号连接和挂断连接的部分代码:   HRASCONN Dial( ) {     DWORD                     dwRet = 0;     RASDIALPARAMS     RasDialParams;     DWORD                     dwSize;     HRASCONN        hRasConn=0;       dwSize = sizeof(RASDIALPARAMS);     ZeroMemory(&RasDialParams, dwSize);     memset ((char *)&RasDialParams, 0, sizeof(RasDialParams));     RasDialParams.dwSize = sizeof(RasDialParams);       wcscpy(RasDialParams.szEntryName, L"ETA6210");     wcscpy(RasDialParams.szPhoneNumber, L"");     wcscpy(RasDialParams.szUserName, L"");      wcscpy(RasDialParams.szPassword,L"");       dwRet = RasDial( NULL, NULL, &RasDialParams, NULL, NULL, &hRasConn);     if( dwRet == 0 )        {               wprintf( L"%s RasDial successful, hRasConn = 0x%08X ", RasDialParams.szEntryName, hRasConn);               SavehRasConn( hRasConn );               return hRasConn;        }     else if( hRasConn )               RasHangUp(hRasConn);        return NULL; }   BOOL HangUpDial( ) {          HRASCONN  hRasConn=0;                 hRasConn = ReadhRasConn( );          if( hRasConn )          {                 wprintf( L"%s RasHangUp, hRasConn = 0x%08X ", L"ETA6210", hRasConn);                 if(hRasConn) RasHangUp(hRasConn);                 DeleteFile(  _T("\hRasconn.bin") );                 return TRUE;           }           else           {            wprintf( L"No Ras connection ");                  return FALSE;           } }   网络测试     ETA6210连接成功后,可以运行ipconfig来查看网络参数:   WinCE平台高速WiFi实现方法.png     这里我们看到ETA6210 WiFi的IP地址为“192.168.1.2”,这个地址ETA6210 WiFi模块内部网络的一个固定IP,并不是真正代表了通过WiFi接入网络的IP地址,对外真正的IP是通过AT指令来获取的。在本文上面介绍中ETA6210 WiFi 连接成功后,获取到的IP地址为:192.168.201.102,网关地址为:192.168.201.20。   WinCE平台高速WiFi实现方法.png     从上图中可以看到在ENET1、ENET2均断开的情况下,可以通过ping 网关地址来测试该网络的通讯。同时也可以反过来通过telnet登录“192.168.201.102”,显示是连入到ESM6802上的。   WinCE平台高速WiFi实现方法.png     英创可提供了RASEntry和wt这个两个程序源代码,客户可以参考其中相关部分放入到自己的应用程序中,有需要的客户可以联系英创工程师获得。           成都英创信息技术有限公司 http://www.emtronix.com         原文链接 http://www.emtronix.com/article/article20181114.html