1 结论先行

  • 模组初始化系统和RF驱动后电流在24mA左右
  • 在扫描时电流最高40mA

2 测试数据

2.1 EMC3029-样本1

EMC3029-scan-No1-1.wmv (6.72MB)EMC3029-scan-No1-2.wmv (4.41MB)EMC3029-scan-No1-3.wmv (6.33MB)

2.2 EMC3029-样本2

EMC3029-scan-No2-1.wmv (7.02MB)EMC3029-scan-No2-2.wmv (6.83MB)EMC3029-scan-No2-3.wmv (6.21MB)

3 模组固件

WiFi模组上电后,每3s启动一次扫描,扫描完成后打印结果

3.1 固件

demos.wifi.scan@emc3020.zip

  1. 文件名: demos.wifi.scan@emc3020.all.bin
  2. 文件大小: 2064400 字节
  3. MD5: 46CA9F9ACB1F06B7777DDC3259E4F6B0
  4. SHA1: 978B43273C3B3C05353ABFD5033EE453CF1DA70B
  5. CRC32: A025CB5C
  6. 文件名: demos.wifi.scan@emc3020.ota.bin
  7. 文件大小: 328360 字节
  8. MD5: 922C60882468968B640DC74D29B84634
  9. SHA1: 4676ACAB4D3835C3C68218C220A4A2ACF86E73BD
  10. CRC32: 833488A0

3.2 源代码

3.2.1 代码说明

基于mxos-demos中的wifi.scanos两个部分改编而成
mxos是在cube分支,commit号为fea46a888a9a77c676076080823993e42f165159

3.2.2 应用层代码

scan.zip

  1. #include "mxos.h"
  2. #define app_log(M, ...) MXOS_LOG(CONFIG_APP_DEBUG, "APP", M, ##__VA_ARGS__)
  3. static void wifi_scan_notify(int num, mwifi_ap_info_t *ap_list);
  4. static mos_semphr_id_t sem;
  5. #define SEM_COUNT 10
  6. static void semrx_thread(void *arg)
  7. {
  8. int fd;
  9. fd_set rd;
  10. int ret;
  11. fd = mos_event_fd_new(sem);
  12. app_log("event fd: %d", fd);
  13. while (1)
  14. {
  15. FD_ZERO(&rd);
  16. FD_SET(fd, &rd);
  17. select(fd + 1, &rd, NULL, NULL, NULL);
  18. if (FD_ISSET(fd, &rd))
  19. {
  20. ret = mos_semphr_acquire(sem, 1);
  21. mos_sleep(3);
  22. app_log("RX sem ret %d", ret);
  23. mwifi_scan(NULL);
  24. }
  25. else
  26. {
  27. app_log("RX sem timeout");
  28. break;
  29. }
  30. mos_msleep(100);
  31. }
  32. mos_event_fd_delete(fd);
  33. app_log("semrx_thread exit");
  34. mos_thread_delete(NULL);
  35. }
  36. int main(void)
  37. {
  38. /* Initialize network(Wi-Fi, TCP/IP) */
  39. mxos_network_init();
  40. /* Register Wi-Fi scan notification */
  41. mxos_system_notify_register(mxos_notify_WIFI_SCAN_COMPLETED, wifi_scan_notify, NULL);
  42. sem = mos_semphr_new(SEM_COUNT);
  43. mos_thread_new(5, "rx", semrx_thread, 0x500, NULL);
  44. app_log("Start scan, please wait...");
  45. mwifi_scan(NULL);
  46. return 0;
  47. }
  48. static void wifi_scan_notify(int num, mwifi_ap_info_t *ap_list)
  49. {
  50. int i = 0;
  51. app_log("AP number: %d", num);
  52. for (i = 0; i < num; i++)
  53. {
  54. app_log("AP%d: SSID=%s, RSSI=%ddBm", i, ap_list[i].ssid, ap_list[i].rssi);
  55. }
  56. mos_semphr_release(sem);
  57. }