mxchipWNet Library
mxchipWNet Library 基础版
使用说明
使用 mxchipWNet 基础版软件库开发嵌入式 Wi-Fi 应用
316x0001.027
Date:2014-5-22
Reference manual
概述
mxchipWNetTM library 是运行在 MXCHIP 公司开
发的 EMW316x 系列嵌入式 Wi-Fi 模块上的 TCP/IP 协
议栈、Wi-Fi 射频驱动、运行环境以及相关示例程序,
是构建嵌入式 Wi-Fi 应用的完整解决方案。
该软件库专门为嵌入式 Wi-Fi 应用设计,拥有快速
的联网速度,高实时性的事件处理机制,低消耗、可配
置的硬件资源管理等特性,并且在 EMW316x 模块上可
以实现最高 20Mbps 的超高速传输速率。
User application
TCP/IP management
FTP, HTTP, SMTP...
Wi-Fi
control
mxchipWNet
Library
TCP/IP Stack
TCP/UDP socket, IPv4,
DHCP, ARP, DNS...
同时该软件库采用标准的 BSD socket API 为基础,
配合简单易用的无线网络配置 API,开发者可以很方便
地在 EMW316x 模块上开发各种嵌入式 Wi-Fi 应用程序。
该软件库的易用性能大大缩短开发周期,提高产品上市
进度。
主要功能:
802.11 TX/RX Wi-Fi
Security Supplicant Soft AP,
Dual WLAN, WPS...
802.11MAC Baseband RF
EMW316x
包含引导程序,应用程序和驱动程序
提供 73k 字节的可以自由分配的内存空间
TCP/IP features:
提供多达 720k 字节的可用 Flash 空间
符合 BSD socket 接口定义
支持 OTA 无线升级的系统架构
DHCP 客户端和服务器
内置的功能测试模式
提供多种支持工具
Wi-Fi features:
DNS, mDNS (bonjour)服务
提供阻塞或非阻塞式的调用方式
支持 12 个 TCP socket 和 2 个 UDP socket
支持 IEEE 802.11 b/g/n@2.4GHz
支持 SSL 加密的 socket 连接
支持 Station 和 Soft AP 模式
HTTP、FTP、SMTP 等应用范例
支持 WEP,WPA/WPA2 加密方式
支持 IEEE 802.11 power save 模式
内存管理和调试功能
上海庆科信息技术有限公司
无线网络开发部
目录
MXCHIPWNET 软件库简介 ................................................................................... 5
主要功能 ............................................................................................................................................. 5
运行环境 ............................................................................................................................................. 5
硬件平台 .............................................................................................................................................................. 5
FLASH 和 SRAM 空间的使用 .......................................................................................................................... 5
已使用的处理器资源.......................................................................................................................................... 7
软件库内容和开发环境 ..................................................................................................................................... 8
基本运行模型 .................................................................................................................................... 11
功能描述和 API 详解 ............................................................................................ 13
数据类型 ........................................................................................................................................... 13
软件库初始化、功能块 ...................................................................................................................... 13
常量 ..................................................................................................................................................................... 13
数据类型 ............................................................................................................................................................ 13
函数 ..................................................................................................................................................................... 15
Wi-Fi 无线网络的扫描,控制,连接和状态返回 ................................................................................ 17
数据类型 ............................................................................................................................................................ 17
函数 ..................................................................................................................................................................... 20
基本网络服务 .................................................................................................................................... 25
常量 ..................................................................................................................................................................... 25
数据结构 ............................................................................................................................................................ 25
函数 ..................................................................................................................................................................... 26
2
类 BSD Socket 网络数据传输 ........................................................................................................... 28
常量 ..................................................................................................................................................................... 28
数据结构 ............................................................................................................................................................ 30
函数 ..................................................................................................................................................................... 31
STM32 的外部中断配置和使用 ......................................................................................................... 39
常量 ..................................................................................................................................................................... 39
函数 ..................................................................................................................................................................... 39
工具 .................................................................................................................................................. 41
数据格式转换 .................................................................................................................................................... 41
定时相关 ............................................................................................................................................................ 42
调试工具 ............................................................................................................................................................ 43
其他 ..................................................................................................................................................................... 43
功能实现和应用范例 ............................................................................................. 44
Demo1: Wi-Fi 网络的搜索、连接、切换 .......................................................................................... 44
功能 ..................................................................................................................................................................... 44
用户操作 ............................................................................................................................................................ 44
Demo2: TCP UDP 网络数据传输 ..................................................................................................... 45
功能 ..................................................................................................................................................................... 45
用户操作 ............................................................................................................................................................ 45
Demo3: WPS 和 EasyLink 配置 .................................................................................................... 47
功能 ..................................................................................................................................................................... 47
用户操作 ............................................................................................................................................................ 47
3
Demo4: 网页服务器和 OTA 远程升级 .............................................................................................. 48
功能 ..................................................................................................................................................................... 48
用户操作 ............................................................................................................................................................ 48
Demo5 :mDNS_bonjour 零配置局域网搜索服务 ............................................................................ 49
功能 ..................................................................................................................................................................... 49
用户操作 ............................................................................................................................................................ 49
Demo6:SSL_https 访问 SSL 加密网页 .......................................................................................... 50
功能 ..................................................................................................................................................................... 50
用户操作 ............................................................................................................................................................ 50
应用范例: mxchipWNet-HA 家庭智能设备通讯协议范例 ................................................................ 51
默认配置 ............................................................................................................................................................ 51
模块工作流程 .................................................................................................................................................... 51
数据包格式 ........................................................................................................................................................ 52
用户操作 ............................................................................................................................................................ 57
升级历史 .............................................................................................................. 61
SALES INFORMATION ...................................................................................... 64
TECHNICAL SUPPORT ...................................................................................... 65
4
mxchipWNet 软件库简介
主要功能
mxchipWNet 软件库(下称“软件库”)是运行在 MXCHIP 公司开发的 EMW316x 系列嵌入式 Wi-Fi 模块上的 TCP/IP 协
议栈、Wi-Fi 射频驱动、运行环境以及相关示例程序,是构建嵌入式 Wi-Fi 应用的完整解决方案。
该软件库专门为嵌入式 Wi-Fi 应用设计,拥有快速的联网速度,高实时性的事件处理机制,低消耗、可配置的硬件资源管理
等特性,并且在 EMW316x 模块上可以实现最高 20Mbps 的超高速传输速率。
同时该软件库采用标准的 BSD socket API 为基础,配合简单易用的无线网络配置 API,开发者可以很方便地在 EMW316x
模块上开发各种嵌入式 Wi-Fi 应用程序。该软件库的易用性能大大缩短开发周期,提高产品上市进度。
运行环境
硬件平台
基于软件库的应用可以运行在 EMW316x 嵌入式 Wi-Fi 模块上的 STM32 微控制器上。该微控制器主频 120MHz,包含 1M
字节 flash 空间和 128k 字节的 SRAM。
可以从以下网站获得相关的模块信息:
EMW3161:http://www.mxchip.com/product.php?class_id=15&id=2
EMW3162:http://www.mxchip.com/product.php?class_id=15&id=41
FLASH 和 SRAM 空间的使用
Flash 的使用
STM32 的 1M 字节 Flash 空间按照如下列表分配给各个功能块:
表 1.1 FLASH 的分区
起始地址
结束地址
类型
大小(字节)
0x08000000
0x08003FFF
0x08004000
0x0800BFFF
0x0800C000
0x08060000
0x08060000
0x080C0000
0x080C0000
0x080FFFFF
各个功能块的主要功能描述:
1. 引导程序:
B
P
A
-
D
16k
32k
336k
384k
256k
内容
引导程序
OTA信息,用户参数
用户应用程序
OTA升级数据的暂存空间
射频芯片驱动程序
STM32 上电或者复位后会自动运行这部分代码,程序根据 BOOT 引脚的状态决定是否引导应用程序还是进入引导程序的主
菜单,用户可以在引导程序的主菜单下通过不同的命令来更新 Flash 中各个分区的内容。同时,引导程序也会根据 Flash 中区域
的 OTA 信息决定是否使用 OTA 升级数据的暂存空间中的数据来替换其他分区的数据,以便实现 Flash 中数据的自动升级。
BOOT 引脚定义:EMW3162 PIN16(PB1)EMW3161 PIN36(PE6)
表 1.2 BOOT 引脚的功能
BOOT 引脚
0(低电平)
1(高电平)
引导状况
进入引导程序主菜单
正常引导应用程序
使用引导程序进行 Flash 内容更新的功能请参考应用笔记:
http://www.mxchip.com/uploadfiles/soft/EMW/AN0002E_FirmwareUpdate_V3.pdf
同时,引导程序在运行时,会检查“OTA 升级数据的暂存空间”中的数据状况,当不需要执行 OTA 升级时,或者 OTA 升级
已经完成的情况下,引导程序会自动擦除这块区域的所有数据,这个功能的主要目的是:应用程序在接收到 OTA 数据时能够尽
快地写入“OTA 升级数据的暂存空间”,而不需要执行擦除操作,提高了 OTA 操作的执行效率。
注意:以上功能用户都可以通过修改引导程序的源代码进行修改。
5
2. 启动信息,用户参数
这部分 Flash 空间可以用来存储系统运行的参数,比如模块启动时自动连接的无线网网络名称、密码等,除了一部分软件库
明确定义的参数结构以外,所有的 Flash 空间都可以由用户应用程序自由组织,擦除和编程。这部分已经定义的参数结构称为
OTA 信息,用户在操作这部分存储空间时,应保证这部分区域不被破坏。
OTA 信息的存储地址:0x08004000,也就是这个存储区域的头部,可以用一个结构体描述这个 OTA 信息块,该结构体定已
在 mxchipWNET.h 头文件中的 boot_table_t 结构体中。OTA 信息的结构如下:
表 1.3 OTA 信息的结构:
名称
类型
长度
内容
START ADDRESS
32位数据
LENGTH
VERSION
TYPE
UPDATE
32位数据
字符
字符
字符
REVERSED
8位数据
1
1
8
1
1
6
OTA数据的存储地址(当前固定为0x08060000)
OTA数据的长度
版本信息(当前未提供实际功能)
OTA数据的类型(’B’,’P’,’A’,’D’)
升级标志(‘U’)
保留
OTA 数据的类型表明了 OTA 暂存数据的数据类型,用于表明引导程序用 OTA 数据刷新目标区块的位置。这个类型和表 1.1
中的“类型”是匹配的,如写入字符 A 时,引导程序就会使用 OTA 数据来刷写 A 区域的数据,也就是用户的应用程序。
UPDATE 字符用于声明是否需要使用引导程序执行刷新的操作,当 OTA 数据已经准备好,应用程序就可以在这个位置写入
字符 U,并且软件重启模块,由引导程序使用 OTA 数据刷新目标存储区域。
所以,应用程序实现 OTA 功能的主要流程是:
-将接收到的升级数据写入地址 0x08060000 开始的 OTA 数据暂存空间。
-写入正确的 OTA 信息。
-软件重新启动模块,由引导程序完成刷新操作。
-引导程序完成 Flash 内存的更新后,将 OTA 信息恢复到初始状态,并擦除 OTA 数据暂存区域的数据
-正常引导用户应用程序
3. 用户应用程序
用于实现模块功能的可执行程序的存储区域,由于这个区域的起始地址不是 STM32 的 Flash 起始地址,所以用户在编译链
接时,应该设置程序的链接地址为 0x0800C000,同时将 STM32 的中断向量表重映射到这个地址。
4. OTA 升级数据的暂存空间
临时保存的 OTA 数据,如果用户在引导程序中关闭 OTA 升级功能,或者采用外部存储保存 OTA 数据,这部分存储空间可以
合并到用户应用程序块中,这样就可以存放更庞大的用户应用程序。
5. 射频芯片驱动程序
用于存放模块上的射频芯片的固件,这个固件是固定的,不能修改的,任何对这个区域的修改都会导致系统不能正常运行。
一旦这个区域的数据被破坏,就只能通过仿真工具重新写入数据,或者在引导程序的主菜单下,通过命令“driverupdate”命令
来重新写入数据。
SRAM 的使用
STM32F2 提供 128k 字节的内存空间,一旦软件库初始化完成,软件库中的 Wi-Fi 驱动和网络协议栈会占用一部分内存空间,
并且为 UDP socket 分配 8k 字节静态内存,剩下的可用内存约为 73kbytes 字节。这些剩余的内存空间可以用于用户的应用程
序,并且为每一个 socket 分配发送缓冲区(WRBUF)和接收缓冲区(RDBUF)的大小,需要注意的是 socket 的发送缓冲区和接收
缓冲区的大小和网络传输速度息息相关,比较大的缓冲区能够提供更加高速的传输速度,但是总内存大小的限制又使得缓冲区的
大小不能无限增加。所以在编程时,应该将传输速度,连接数量,应用的内存占用综合起来考虑。
软件库中,UDP socket 连接的内存分配采用静态方式,协议栈最多允许创建 2 个 UDP 连接,每一个 UDP 占用 4k 字节,
6
一共占用 8k 字节内存,此外,用于监听的 TCP socket 仅占用 256 字节的动态内存。
在软件库中,提供了两种方式来管理 TCP socket 连接的内存占用。在协议栈初始化之前因对这两种管理方式进行选择。
1. 静态分配(默认)
协议栈完成初始化后,立即分配一段静态的 48k 字节的内存空间,用于 socket 的发送缓冲和接收缓冲,每一个 socket 的发
送缓冲和接收缓冲的大小都固定为 2k 字节,所以一共可以建立 12(48/4)个 socket 连接。除此之外,每一个 socket 连接建
立时仍然会动态分配 256 字节的内存。
使用静态分配之后,用于应用的可用空间约 23k 字节左右。在该情况下,用户仅需要管理好用户应用中的内存消耗即可。
在静态分配的情况下,软件库可建立的最大的 TCP 连接数和每一个 TCP 连接的缓冲区大小可以在软件库初始化之前进行设
置,以改变默认值。
2. 动态分配
协议栈完成初始化后,不会再分配额外的内存空间,协议栈在创建每一个 socket 连接时,根据用户设定的参数动态的分配
内存,并且在 socket 关闭时释放。这些参数参数可以使用 setsockopt 函数来进行设置。由于用户自行设定 socket 的缓冲区大
小,所以协议栈总共可以建立 socket 的连接数量不是固定的。如果剩余的内存空间不能满足新增的一个 socket 连接时,
如果调用 connect 函数来创建一个 socket,connect 函数会返回错误,
当用户使用一个 socket 监听 TCP 客户端的连接时,协议栈会直接拒绝新的客户端的连接请求,不会将客户端的连接
事件提交给这个监听的 socket。
使用动态分配,用户要管理好 socket 连接的内存分配和用户应用程序的内存分配,并且防止内存碎片的产生,比静态分配
的方式要复杂一些。为此,软件库提供了一些内存分析和管理的 API 函数,详情请参阅章节:2.7.1 内存调试
已使用的处理器资源
软件库在运行时会使用 STM32 的一些外设资源,现列出如下,在开发应用程序中引避免使用这些外设,或者使用软件库提
供的 API 接口来操作这些外设。
外设
已使用的功能
SystemTick及其
为协议栈运行产生时基,设置的
中断
SDIO
时钟周期是: 1ms
用于和Wi-Fi射频芯片通讯
DMA2 Stream 3
用于和Wi-Fi射频芯片通讯
模块
所有
所有
所有
EXTI Line13
用于和Wi-Fi射频芯片通讯
EMW3162
注释
请勿修改该外设参数,但仍可在其中断
处理函数中增加简单功能。
PC2
看门狗信号输出
EMW3162
须通过lib_config函数开启看门狗输出
EXTI Line0
用于和Wi-Fi射频芯片通讯
EMW3161
PB14
看门狗信号输出
EMW3161
须通过lib_config函数开启看门狗输出
当使用软件库中提供的 UART 相关函数时,如 SetUartPara, OpenUART 等。
外设
UART1
PA8, PA9,
PA10, PA11
已使用的功能
模块
注释
模块的UART功能
EMW3162
仅在使用UART相关API时启用,
UART功能使用的引脚
EMW3162
使用模块引脚PIN20, 21, 22, 23
DMA2 Stream 2
模块的UART接收DMA功能
EMW3162
仅在使用UART相关API时启用
UART2
模块的UART功能
EMW3161
仅在使用UART相关API时启用
PA0, PA1,
PA2, PA3
UART功能使用的引脚
EMW3161
使用模块引脚PIN45, 46, 47, 48
DMA1 Stream 5
模块的UART接收DMA功能
EMW3161
仅在使用UART相关API时启用
当使用软件库中提供的 NFC 相关函数时,如 OpenConfigmodeNFC 等。
外设
IIC1
已使用的功能
模块
注释
用于和NFC模块EMF2104通讯
所有
仅在使用NFC功能时启用
PB6, PB7, PB14 用于和NFC模块EMF2104通讯 EMW3162
使用模块引脚PIN1,2,13
EXTI Line14
用于和NFC模块EMF2104通讯 EMW3162
仅在使用NFC功能时启用
7
PB6, PB7, PB15 用于和NFC模块EMF2104通讯 EMW3161
使用模块引脚PIN6,28,29
EXTI Line15
用于和NFC模块EMF2104通讯 EMW3161
仅在使用NFC功能时启用
软件库内容和开发环境
使用 mxchipWNet 软件库进行开发时,硬件的连接方法如下:
MXCHIP 提供的 mxchipWNet 软件包中包含如下的文件夹
Demos 文件夹中包含了基于 mxchipWNet 软件库开发的多个示例程序,用于演示软件库的各种功能,为用户提供参考。
HAL 目录中包含了独立于 mxchipWNet 软件库功能以外的与平台相关的硬件配置,常用功能实现。
Library 目录中包含了可以在各个开发环境中使用的 mxchipWNet 软件库,及其头文件。
Projects 目录中包含了在常用的开发环境中可以直接打开的,配置好的示例工程。
STM32……目录中包含了 ST 提供的用于操作 STM32 外设的 API 接口函数及其源代码,mxchipWNet 软件库会调用某些接
口函数。
可以使用 KEIL(RVMDK)或者 IAR 开发基于该软件库的应用程序。用户可以打开/Projects 文件夹,打开相应的工程文件。
以 KEIL 为例:
8