如何使用EMSP_API函数库配置Wi-Fi参数
实验描述:
该实验讲解了如何运用Mxchip提供的EMSP_API函数来配置Wi-Fi模块的参数,连接无该实验讲解了如何运用Mxchip提供的EMSP_API函数来配置Wi-Fi模块的参数,连接无线网络,与同网段中的PC建立TCP连接,并打开PC端安装TCP/UDP测试工具。
实验现象:
读取到Wi-Fi模块的配置参数,并且显示到LCD屏
读取搜索到的周围的无线网络和信号强度
野火STM32开发板接收到PC端TCP/UDP测试工具发送的数据,通过Wi-Fi模块发送给PC,达到回显的功能
WiFi硬件连接图:
串口连接说明
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文档
EMSP_API函数:
EMSP_API接口函数提供了一系列API函数,用户通过调用这些函数可以轻松地在各种嵌入式设备上实现对EMW系列Wi-Fi模块的控制和数据传输。现在该接口函数随和WiFi资料随野火STM32开发板例程一并提供:
如果大家购买了野火STM32开发板和Mxchip EMW系列Wi-Fi模块,就可以在开发板上调试这些例程。
EMSP_API函数库由标准C编写而成,可以直接加入到常用的嵌入式开发环境,如KEIL,IAP等。
EMSP_API函数由以下三个C语言文件及其对应的头文件构成。
1. emw38x_hal.c
该代码实现了EMW系列模块和嵌入式设备之间的硬件接口。用户需要根据
自己的硬件环境实现相应的函数
2. EMSP.c
该代码实现了EMSP命令的协议处理。
3. EMSP_API.c
该代码提供给用户用于操控模块的API函数,用户只需调用这些函数,就可
以实现对模块的配置和操作。
API函数一览
vs8 EM380C_Init(void)
函数功能:用于初始化模块,和与模块通讯的UART接口,并使模块处于能够响
应EMSP命令的状态
返回值:-1 : 执行命令失败
0 : 执行命令成功
vs8 EM380C_Get_ver(u32* version)
函数功能:用于获得EMW系列模块的固件版本号
参数1(IN) :用于存放获得的EMW的固件版本号的地址
返回值:-1 : 执行命令失败
0 : 执行命令成功
vs8 EMSP_Get_status(EM380C_status_TypeDef* EM380C_status)
函数功能:用于获得Wi-Fi模块的网络连接状态
参数1(IN):用于存放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)
函数功能:用于获得区域内无线AP的SSID号和相应的信号强度
参数1(IN):用于存放无线的AP的SSID号和相应的信号强度的线性表的起始
地址
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的射频功率
recv函数参数1:用于存放获得模块的Wi-Fi功率最小值,最大值和当前值
返回值:-1:执行命令失败
0:执行命令成功
vs8 EM380C_Get_Config(EM380C_parm_TypeDef* EM380C_Parm)
函数功能:用于获得Wi-Fi模块当前的配置参数
参数1(IN):参数结构体的地址,成功执行命令后,模块当前的参数会写入这个
地址。参数结构体如下。
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的配置参数
参数1(OUT):参数结构体的地址,成功执行命令后,会将该地址上的数据写入到
WiFi模块里面去。结构体与上面GetConfig参数一致。
返回值:-1:执行命令失败
0:执行命令成功
u32 EM380C_Send_Data(u8* Data,u32 len)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论