博通的WiFi模组算是业界中比较稳定的了,目前项目中产品加入了电池,需要考虑下系统的整机功耗问题. 首先从最耗电的入手,CPU与WiFi是如何配合的. CPU 与 WiFi 通过SDIO接口连接,用于传输数据,而要考虑功耗的事情,就需要通过 WL_HOST_WAKE : WLAN to wake-up HOST来实现的.
其中 WL_REG_ON 主要用于上电,休眠的时候,请保持GPIO上电,否则会丢失WiFi内部的状态,导致WiFi唤醒失败; WL_HOST_WAKE 主要用于WiFi设备有数据的时候,唤醒CPU,进入中断.
其中引脚的电平要看CPU如何配置的,如果配置的是高电平有效,那么默认情况下是低电平,当WiFi有数据过来的时候就拉高,直到主控这边把数据拿完再拉低,如果主控一直没有来拿数据就一直是高电平.
通过WL_HOST_WAKE中断实现当有网络数据的时候,才唤醒CPU,平时CPU处于Standby状态下, 达到低功耗的第一步.
[RK3399] SDIO 接口 Wifi 驱动流程分析 (AP6354) Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析 wifi 移植过程 How to use GPIO_0 (WL_HOST_WAKE) on CYW43438? linux & android平台WIFI休眠唤醒问题 BCM43353 WIFI模块网络部分在TC83xx平台的移植 WIFI低功耗模式说明 Android Wifi 省电模式基本概念 BCM43353 WIFI模块网络部分在TC83xx平台的移植