目前在智能家居行业对于低功耗通信模组的要求越来越高,简要记录下对于低功耗WiFi SoC模组的低功耗模式以及工作流程。
目录
目录
1.术语
1.1 STA和AP模式
STA模式:
STA(Station),它是无线网络中的一个终端站点设备。一般来说,处在STA模式下的设备本身不接受无线的接入,该设备连接到AP节点进行网络访问,STA模式下的设备之间的通信可以通过AP进行转发实现。
当WIFI模块工作在STA模式时,可以连接到路由器的无线网络中去,手机或电脑通过无线网络实现对带WIFI模块设备的远程控制。当连接丢失,无线网络恢复后,WIFI模块可以自动连接到之前保存记住的接入点中去。
AP模式:
AP(Access Point),即无线接入点,它是一个无线网络的中心节点。它作为一个网络的中心节点,提供无线接入服务,其他的无线设备允许接入该节点,所有接入该节点设备的无线信号数据都要通过它才能进行交换和互相访问。一般的无线路由器、网关、热点就是工作在AP模式下。
当Wi-Fi模块工作在AP模式时,可以用手机或者其他作为sta的Wi-Fi设备连接上Wi-Fi模块直接与模块通信,现在有许多智能家居设备会使用AP配网。
1.2 TIM & DTIM
TIM(Traffic Indication Message)&DTIM(Delivery Traffic Indication Message)是Wi-Fi通信中很重要的两个概念,它们是beacon帧里的一个field,DTIM只是TIM的一个特殊情况,下面简单说说它们的区别。
TIM:每一个Beacon的帧中都有一个TIM 信息元素 ,它主要用来由AP通告它管辖下的哪个STA有信息现在缓存在AP中,而在TIM中包含一个 Bitmap control 字段,它最大是251个字节,每一位映射一个STA,当为1时表示该位对应的STA有信息在AP中。
DTIM:这个是TIM的特殊情况,当发送几个TIM之后(可在AP侧设置DTIM的间隔,即多少个TIM后发送一个DTIM),就要发送一个DTIM,其除了缓存单播信息,也同时指示AP缓存的组播或广播信息,一旦AP发送了DTIM, STA就必须处于清醒,因为广播或组播无重发机制,不醒来数据就收不到了。
如何保证STA在接收到DTIM时立即醒来呢?
-
STA在省电模式下通常会在大部分时间处于睡眠状态,以节省电量。然而,STA会周期性地醒来以接收Beacon帧。
-
STA会根据DTIM Interval计算出何时会发送DTIM,并在DTIM Beacon发送时醒来。
2.Wi-Fi模组低功耗模式
IoT Wi-Fi模组一般有两种低功耗模式:
①浅睡模式:
-
功耗:
-
浅睡模式的功耗比正常工作模式低,但比深睡模式高。
-
通常功耗在几毫瓦(mW)到几十毫瓦之间。
-
-
唤醒时间:
-
唤醒时间非常短,通常在几毫秒(ms)以内。
-
设备可以快速恢复到正常工作状态。
-
-
功能保持:
-
设备的部分功能(如部分外设、内存数据等)仍然保持。
-
②深睡模式:
-
功耗:
-
深睡模式的功耗极低,通常在微瓦(μW)级别。
-
设备的大部分电路被关闭,仅保留必要的低功耗电路(如RTC,实时时钟)。
-
-
唤醒时间:
-
唤醒时间较长,通常在几十毫秒到几秒之间。
-
-
功能保持:
-
内存数据可能会丢失(除非使用额外的低功耗内存保存数据)。
-
3.Wi-Fi模组低功耗模式下数据交互的工作流程
在Wi-Fi网络中,AP会以固定的时间间隔(通常为100ms或200ms)发送Beacon帧。Beacon帧中包含一个TIM字段,用于通知处于省电模式(PS Mode)的STA是否有缓存数据等待接收。
- AP定期发送Beacon帧,其中包含TIM字段。
-
TIM字段是一个bitmap,每个bit对应一个连接到AP的STA。如果某个STA有缓存数据,对应的bit会被设置为1;否则为0。
-
当STA进入低功耗模式后,会关闭接收模块(RX)以节省电量。
-
STA会以设定的监听间隔(以Beacon Interval为单位)周期性唤醒,接收Beacon帧并检查TIM字段。
-
监听间隔越大:STA更省电,但接收数据的延迟增加。
-
监听间隔越小:STA接收数据的延迟减少,但功耗增加。
-
-
STA唤醒后,接收Beacon帧并解析TIM字段:
-
如果TIM字段中对应STA的bit为1,表示AP中有缓存数据。
-
STA会向AP发送PS-Poll帧,请求AP发送缓存的数据。
-
-
AP收到PS-Poll帧后,会将缓存的一个数据帧发送给STA。
-
如果AP中有多个缓存数据帧,会在返回的数据帧的MAC Header中将More Data bit设置为1,通知STA还有更多数据。
-
STA会继续发送PS-Poll帧,直到接收完所有缓存数据。
-
-
如果TIM字段中对应STA的bit为0,STA会关闭RX模块,继续休眠,等待下一个监听间隔后再次唤醒。