零死角玩转stm32-高级篇之WIFI

作者:
上传时间为: 2013-09-22 10:18 PM
2013-09-22
阅读:

9、WIFI

9.1资料与工具下载

为了更好地理解和使用Wi-Fi模块的各项功能,您首先需要下载和学习以下资料,这些文档资料需要通过Internet下载:

提供下载地址:

《AN0003_EMW_DataTransferExample.pdf》:透明传输模块使用范例,详细描述了模块在各种模式下的透明传输的使用方法

《RM0001_EMW3280》:EMW模块使用说明,详细描述了模块的各项功能

《RM0002_EMWToolBox》:EMW模块配置软件使用说明,详细描述了如何配置模块的各项参数

《DS001_EMW3280_V2.pdf》:EMW模块的电气特性及引脚定义封装说明。

《RM0001_EMW3280_V02060288》:EMW模块的工作模式及命令控制集

需要的工具软件:

EMW Tool Box: PC端配置Wi-Fi模块参数工具软件

TCP/UDP测试工具:用于在PC端与WiFi模块建立TCP/UDP连接,实现数据收发串口调试助手或者超级终端:用于配合WiFi数据收发调试工具软件

9.2实验描述

该实验讲解了如何运用Mxchip提供的EMSP_API函数来配置Wi-Fi模块的参数,连接无线网络,与同网段中的PC建立TCP连接,并打开PC端安装TCP/UDP测试工具。TCP/UDP测试工具发送的数据,野火STM32开发板通过Wi-Fi将接收到的数据返回给PC,达到回显的功能。

9.2.1实验现象

读取到Wi-Fi模块的配置参数,并且显示到LCD屏

读取搜索到的周围的无线网络和信号强度

野火STM32开发板接收到PC端TCP/UDP测试工具发送的数据,通过Wi-Fi模块发送给PC,达到回显的功能

9.2.2硬件连接图

串口连接说明

RXD - PA9

TXD - PA10

CTS - PA12

RTS - PA11

STATUS - PB12 状态脚

Wake up - PB13 唤醒脚

IO1 - PB14 帧控制

SPI接口说明

PA4 - SPI_CS

PA5 - SPI_CLK

PA6 - SPI_MISO

PA7 - SPI_MOSI

PC7 - INT

PC6 - RECV

PB12 - STATUS

PB13 - Wakeup

SPI接口模块的WiFi例程暂时没有,等到以后做了之后会发布

PS:引脚的具体定义及功能请参考“datasheet”文件夹中的EMW3280_V2.pdf文档

9.2.3 EMSP_API函数

EMSP_API接口函数提供了一系列API函数,用户通过调用这些函数可以轻松地在各种嵌入式设备上实现对EMW系列Wi-Fi模块的控制和数据传输。现在该接口函数随和WiFi资料随野火STM32开发板例程一并提供:

如果大家购买了野火STM32开发板和Mxchip EMW系列Wi-Fi模块,就可以在开发板上调试这些例程。

EMSP_API函数库由标准C编写而成,可以直接加入到常用的嵌入式开发环境,如KEIL,IAR等。

EMSP_API函数由以下三个C语言文件及其对应的头文件构成。

emw38x_hal.c

该代码实现了EMW系列模块和嵌入式设备之间的硬件接口。用户需要根据自己的硬件环境实现相应的函数

EMSP.c

该代码实现了EMSP命令的协议处理。

EMSP_API.c

该代码提供给用户用于操控模块的API函数,用户只需调用这些函数,就可以实现对模块的配置和操作。

9.2.4 API函数一览
      函数名        vs8 EM380C_Init(void)          
功能 用于初始化模块,和与模块通讯的UART接口,并使模块处于能够响。
返回值 -1 :  执行命令失败0  :  执行命令成功
      函数名          vs8 EM380C_Get_ver(u32* version)    
功能 用于获得EMW系列模块的固件版本号。
返回值 -1 :  执行命令失败0  :  执行命令成功
       函数名      vs8 EMSP_Get_status(EM380C_status_TypeDef* EM380C_status)   
功能 用于获得Wi-Fi模块的网络连接状态。
输入 用于存放Wi-Fi的网络连接状态结构体地址typedef struct{EM380C_TCPstatus_TypeDef TCPstatus; EM380C_WiFistatus_TypeDef  WiFistatus; } EM380C_status_TypeDef;
返回值 -1 :  执行命令失败0  :  执行命令成功
          函数名          vs8 EM380C_Get_APList(EM380C_APLst_TypeDef* EM380C_APLst)   
功能 用于获得区域内无线APSSID号和相应的信号强度。
输入 用于存放无线的APSSID号和相应的信号强度的线性表的起始                             地址typedef struct{char   AP_NAME[20]; float     AP_signal; } EM380C_APLst_TypeDef;
返回值 -1 :  执行命令失败>=0:执行命令成功,获得的AP信息的数量
           函数名 vs8 EM380C_Startup(void)
功能 启动Wi-Fi模块的TCP/IP网络连接。
返回值 -1 :  执行命令失败0  :  执行命令成功
               函数名            vs8 EM380C_Get_RF_POWER(EM380C_RF_POWER_TypeDef*RF_POWER)
功能 用于获得Wi-Fi模块当前的配置参数。
输入 参数结构体的地址,成功执行命令后,模块当前的参数会写入这个地址。参数结构体如下。typedef struct{// WIFI u8 wifi_mode; //Wlan802_11IBSS(0), Wlan802_11Infrastructure(1) u8 wifi_ssid[32]; // u8 wifi_wepkey[16]; // 40bit and 104 bit u8 wifi_wepkeylen; // 5, 13 // TCP/IP u8 local_ip_addr[16]; u8 remote_ip_addr[16]; // if em380 is server, it is NOT used; if em380 is client, it is server's IP u8 net_mask[16]; // 255.255.255.0 u8 gateway_ip_addr[16];        // gateway ip address u8 portH; // High Byte of 16 bit u8 portL; // Low Byte of 16 bit u8 connect_mode; // 0:server  1:client u8 use_dhcp; // 0:disale, 1:enable u8 use_udp; // 0:use TCP,1:use UDP // COM u8 UART_buadrate; // 0:9600, 1:19200, 2:38400, 3:57600, 4:115200 u8 DMA_buffersize; // 0:2, 1:16, 2:32, 3:64, 4:128, 5:256, 6:512 u8 use_CTS_RTS; // 0:disale, 1:enable u8 parity; // 0:none, 1:even parity, 2:odd parity u8 data_length; // 0:8, 1:9 u8 stop_bits; // 0:1, 1:0.5, 2:2, 3:1.5 // DEVICE // u8 device_num; // 0 - 255 u8 IO_Control; // 0 - 255 u8 sec_mode;        // 0 = wep, 1=wpa psk, 2=none u8 wpa_psk[32]; } EM380C_parm_TypeDef;
返回值 -1 :  执行命令失败0  :  执行命令成功
            函数名          vs8 EM380C_Set_Config(EM380C_parm_TypeDef* EM380C_Parm)     
功能 用于设置Wi-Fi的配置参数。
输出 参数结构体的地址,成功执行命令后,会将该地址上的数据写入到WiFi模块里面去。结构体与上面GetConfig参数一致。
返回值 -1 :  执行命令失败0  :  执行命令成功
          函数名          u32 EM380C_Send_Data(u8* Data,u32 len)     
功能 用于通过Wi-Fi模块发送数据
输出1 保存发送数据的内存空间的起始地址
输出2 发送的数据长度
返回值  >0:执行命令成功,返回发送的数据长度0  :  执行命令成功
       函数名   vs8 EM380C_Set_Mode(EM380C_mode_TypeDef mode)
功能 设置Wi-Fi模块模式,命令模式和透传模式
输入 用于存放Wi-Fi模块的模式结构体typedef enum{ config_mode = 0x0,  //命令模式 DTU_mode = 0x1,   //透传模式 } EM380C_mode_TypeDef;  
返回值 -1 :  执行命令失败0  :  执行命令成功

9.2.5 MAIN函数讲解

第一步,初始化硬件接口(其实这一部拉低STATUS引脚,初始化号相应硬件接口即可)

第二步,设置Wi-Fi模块参数

设置模块参数,并通过EMSP_SET_CONFIG命令发送给Wi-Fi模块。

模块详细的功能可参考"Wi-Fi模块datasheet"文件夹EMW_DataTransferExamples.pdf,里面详细介绍了各种模式的数据透传。

第三步,重启Wi-Fi模块,模块的参数配置好之后,需要重启Wi-Fi模块才能生效

第四步,启动Wi-Fi模块,通过发送EMSP_CMD_START命令,此时模块内部TCP/IP协议栈已经跑启,模块上红灯常亮

第五步,拉高STATUS引脚,模块进入透传模式

PS:直接拉高STATUS引脚可直接启动Wi-Fi,跳过第四步

9.3其他说明:

EMSP详细命令可参考“datasheet”文件夹中EMW3280.pdf文档。

模块还可通过PC端的配置工具EMW Tool Box配置模块参数,具体使用可参考“datasheet”文件夹中EMWToolBox2.pdf文档。

9.4技术支持

整个WiFi的例程讲解到这里就结束了,大家如果想要更详细的资料可以跟Fire或者Mxchip公司联系。技术问题请到论坛发帖。

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示