1 结论先行
- 模组初始化系统和RF驱动后电流在
24mA
左右 - 在扫描时电流最高
40mA
2 测试数据
2.1 EMC3029-样本1
2.2 EMC3029-样本2
3 模组固件
WiFi模组上电后,每3s启动一次扫描,扫描完成后打印结果
3.1 固件
文件名: demos.wifi.scan@emc3020.all.bin
文件大小: 2064400 字节
MD5: 46CA9F9ACB1F06B7777DDC3259E4F6B0
SHA1: 978B43273C3B3C05353ABFD5033EE453CF1DA70B
CRC32: A025CB5C
文件名: demos.wifi.scan@emc3020.ota.bin
文件大小: 328360 字节
MD5: 922C60882468968B640DC74D29B84634
SHA1: 4676ACAB4D3835C3C68218C220A4A2ACF86E73BD
CRC32: 833488A0
3.2 源代码
3.2.1 代码说明
基于mxos-demos
中的wifi.scan
和os
两个部分改编而成mxos
是在cube
分支,commit
号为fea46a888a9a77c676076080823993e42f165159
3.2.2 应用层代码
#include "mxos.h"
#define app_log(M, ...) MXOS_LOG(CONFIG_APP_DEBUG, "APP", M, ##__VA_ARGS__)
static void wifi_scan_notify(int num, mwifi_ap_info_t *ap_list);
static mos_semphr_id_t sem;
#define SEM_COUNT 10
static void semrx_thread(void *arg)
{
int fd;
fd_set rd;
int ret;
fd = mos_event_fd_new(sem);
app_log("event fd: %d", fd);
while (1)
{
FD_ZERO(&rd);
FD_SET(fd, &rd);
select(fd + 1, &rd, NULL, NULL, NULL);
if (FD_ISSET(fd, &rd))
{
ret = mos_semphr_acquire(sem, 1);
mos_sleep(3);
app_log("RX sem ret %d", ret);
mwifi_scan(NULL);
}
else
{
app_log("RX sem timeout");
break;
}
mos_msleep(100);
}
mos_event_fd_delete(fd);
app_log("semrx_thread exit");
mos_thread_delete(NULL);
}
int main(void)
{
/* Initialize network(Wi-Fi, TCP/IP) */
mxos_network_init();
/* Register Wi-Fi scan notification */
mxos_system_notify_register(mxos_notify_WIFI_SCAN_COMPLETED, wifi_scan_notify, NULL);
sem = mos_semphr_new(SEM_COUNT);
mos_thread_new(5, "rx", semrx_thread, 0x500, NULL);
app_log("Start scan, please wait...");
mwifi_scan(NULL);
return 0;
}
static void wifi_scan_notify(int num, mwifi_ap_info_t *ap_list)
{
int i = 0;
app_log("AP number: %d", num);
for (i = 0; i < num; i++)
{
app_log("AP%d: SSID=%s, RSSI=%ddBm", i, ap_list[i].ssid, ap_list[i].rssi);
}
mos_semphr_release(sem);
}