×
嵌入式 > 技术百科 > 详情

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

发布时间:2020-06-08 发布时间:
|

9、WIFI

9.1资料与工具下载

为了更好地理解和使用Wi-Fi模块的各项功能,您首先需要下载:

需要的工具软件:

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公司联系。技术问题请到论坛发帖。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Semtech的LoRa技术携手Chipsafer将牧场连接至云端