3.14. 外挂WiFi模组

Overview

AC79支持以SDIO接口外挂WiFi模组,目前已支持WiFi模组型号:RTL8189E / RTL8822ES_10M / RTL8822CS。参考工程demo_ext_wifi

3.14.1. 配置说明

- (1)添加库文件

库文件说明如上。 同时,需要在编译选项中加入对应WiFi模组的全局宏:CONFIG_RTL8189E_ENABLE / CONFIG_RTL8822ES_10M_ENABLE / CONFIG_RTL8822CS_ENABLE。

  • (2) 板级文件配置

配置参数如下:

struct wifi_platform_data {
enum WIFI_MODULE module;
u32 sdio_parm;
int wakeup_port;
int cs_port;
int power_port;
};
  • 1)WiFi模组名称配置

module配置对应的模组名称。

  • 2)SDIO引脚配置

SDIO_GRP_x和SDIO_PORT_x用于配置SDIO引脚,引脚定义顺序(cmd/clk/data0/data1/data2/data3),引脚定义如上。

  • 3)SDIO数据位配置 SDIO支持1Bit和4Bit,使用1Bit数据宽度配置为SDIO_1_BIT_DATA,使用4Bit数据宽度则配置为SDIO_4_BIT_DATA。

  • 4)SDIO数据接收方式配置 SDIO支持中断方式和轮询方式接收数据,使用中断方式配置为SDIO_DATA1_IRQ,使用轮询方式配置为SDIO_POLLING。

  • 5)SDIO时钟配置 SDIO时钟配置项:SDIO_CLOCK_80M / SDIO_CLOCK_40M / SDIO_CLOCK_26M / SDIO_CLOCK_20M / SDIO_CLOCK_16M / SDIO_CLOCK_8M / SDIO_CLOCK_4M / SDIO_CLOCK_2M,根据需要选配。

  • 6)WiFi引脚配置 wakeup_port / cs_port / power_port与WiFi模组引脚对应,若这些引脚接固定电平,则无需配置

  • (3) LWIP配置

进入LWIP工程,在lwip.c文件中打开宏”HAVE_EXT_WIRELESS_NETIF”,以增加支持外挂WiFi模组,Rebuild工程。

  • (4) WiFi基本配置

在apps/common/net/ext_wifi_conf.c文件中,提供了AP模式下的配置hostapd_config_file,STA模式下的配置wps_hostapd_config_file,可根据需要修改相应的配置文件。

3.14.2. WiFi事件状态

在WiFi工作工程中,驱动会将WiFi当前的事件状态通过回调函数返回至应用层,用户可以在回调函数中添加事件状态的自定义处理,demo_wifi_ext/ext_wifi_app_task.c->network_user_callback(),WiFi事件状态定义如上。

3.14.3. WiFi控制

在板级文件中,已将外挂WiFi模组注册到系统设备列表中,因此可通过设备控制指令对WiFi模组进行操作,示例如下:

static void *wifi_dev = NULL;
struct cfg_info info = {0};
wifi_dev = dev_open("wifi", NULL);
info.cb = network_user_callback;
info.net_priv = NULL;
dev_ioctl(wifi_dev, DEV_SET_CB_FUNC, (u32)&info);
dev_close(wifi_dev);

WiFi模组控制指令定义如上。