查看: 3344|回复: 0

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

[复制链接]
  • TA的每日心情
    慵懒
    2015-5-29 12:01
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-9-22 22:18:23 | 显示全部楼层 |阅读模式
    分享到:
    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{// WIFIu8 wifi_mode; //Wlan802_11IBSS(0), Wlan802_11Infrastructure(1)u8 wifi_ssid[32]; //u8 wifi_wepkey[16]; // 40bit and 104 bitu8 wifi_wepkeylen; // 5, 13// TCP/IPu8 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 IPu8 net_mask[16]; // 255.255.255.0u8 gateway_ip_addr[16];        // gateway ip addressu8 portH; // High Byte of 16 bitu8 portL; // Low Byte of 16 bitu8 connect_mode; // 0:server  1:clientu8 use_dhcp; // 0:disale, 1:enableu8 use_udp; // 0:use TCP,1:use UDP// COMu8 UART_buadrate; // 0:9600, 1:19200, 2:38400, 3:57600, 4:115200u8 DMA_buffersize; // 0:2, 1:16, 2:32, 3:64, 4:128, 5:256, 6:512u8 use_CTS_RTS; // 0:disale, 1:enableu8 parity; // 0:none, 1:even parity, 2dd parityu8 data_length; // 0:8, 1:9u8 stop_bits; // 0:1, 1:0.5, 2:2, 3:1.5// DEVICE// u8 device_num; // 0 - 255u8 IO_Control; // 0 - 255u8 sec_mode;        // 0 = wep, 1=wpa psk, 2=noneu8 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公司联系。技术问题请到论坛发帖。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-18 22:04 , Processed in 0.123302 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.