AT模块 8: 低功耗功能 AT 命令(Low Power Function AT Commands)
Low power function AT command
指令列表
| 指令 | 描述 |
|---|---|
AT+PWR_
|
配置电源模式 |
AT+SLWKIO_
|
配置 GPIO 作为唤醒源 |
AT+DEWKIO_
|
删除 GPIO 作为唤醒源 |
AT+SLWKTIMER_
|
配置定时器作为唤醒源 |
AT+SLWKDTIM_
|
配置 DTIM |
AT+SLCLDTIM_
|
删除 DTIM 配置 |
AT+TWT_PARAM_
|
设置 TWT 参数 |
AT+TWT_SLEEP_
|
进入 TWT 低功耗模式 |
AT+TWT_TEARDOWN_
|
拆除 TWT |
AT+GET_CLOCK_
|
获取当前时钟源 |
AT+SET_CLOCK_
|
设置系统时钟源 |
---
Low power AT command description
AT+PWR
功能: 配置电源模式
Execute Command
命令:
AT+PWR=<power mode>[,<level>]
响应:
OK
Parameters
- <power mode>:
* 0: normal mode(正常模式) * 1: hibernate mode(休眠模式) * 2: standby mode(待机模式)
- [<level>]: 在休眠模式下,电源等级 0-2; 在待机模式下,1 - 启用接收广播包
Example
AT+PWR=0 // Normal mode AT+PWR=1,0 // Hbn mode, level 0. AT+PWR=2 // Standby mode AT+PWR=2,1 // Standby mode, enable receive broadcast package
---
AT+SLWKIO
功能: 配置 GPIO 作为唤醒源
Execute Command
命令:
AT+SLWKIO=<wakeup io>,<trigger mode>
响应:
OK
Parameters
- <wakeup io>: GPIO 唤醒 IO 编号,仅支持 gpio 16 或 gpio 28
- <trigger mode>: 唤醒触发模式
* 0: 高电平唤醒
注意: 当前实现使用五线 SPI 低功耗方案,因此唤醒方式不可配置,仅支持高电平唤醒。
---
AT+DEWKIO
功能: 删除 GPIO 作为唤醒源
Execute Command
命令:
AT+DEWKIO=<io>
响应:
OK
Parameters
- <io>: GPIO 唤醒 IO 编号
---
AT+SLWKTIMER
功能: 配置定时器作为唤醒源
Set Command
命令:
AT+SLWKTIMER=<mode>,<timeouts>
响应:
OK
Parameter
- <mode>: 0, standby mode(待机模式), 1 hibernate mode(休眠模式)
- <timeouts>: 设置唤醒持续时间,单位为毫秒。一次性唤醒定时器,唤醒后不会再次进入睡眠(除非重新配置新的唤醒定时器)
Example
AT+SLWKTIMER=0,5000 //Standby mode, Wake up once next 5000ms
---
AT+SLWKDTIM
功能: 配置 DTIM 作为唤醒源
Set Command
命令:
AT+SLWKDTIM=<dtim>
响应:
OK
Parameter
- <dtim>: 设置唤醒 DTIM
Example
AT+SLWKDTIM=10 // Set ditm10 for wakeup.
---
AT+SLCLDTIM
功能: 删除 DTIM 配置
Set Command
命令:
AT+SLCLDTIM
响应:
OK
Example
AT+SLCLDTIM
---
AT+TWT_PARAM
功能: 设置 TWT 参数
Set Command
命令:
AT+TWT_PARAM=<setup type>,<flow type>,<exponent>,<wakeup duration>,<wake interval mantissa>
响应:
OK
Parameter
- Setup type (s): 0:REQUEST(请求), 1:SUGGEST(建议), 2:DEMAND(要求)
- Flow type (t): 0:ANNOUNCED TWT(宣告式 TWT), 1:UNANNOUNCED TWT(非宣告式 TWT)。仅支持非宣告式 TWT
- Wake Interval Exponent: 指定唤醒间隔指数
- Wake Duration (n): 最小唤醒持续时间,单位为微秒
- Wake Interval Mantissa (m): 用于精确间隔调整的尾数值
- Service Period (SP): SP = WakeDuration * 256us
- Wakeup Interval: Wakeup Interval = wake_int_mantissa << WakeIntervalExponent us
Example
AT+TWT_PARAM=1,1,13,128,1000 //SP = 32.768 ms, Wake Interval = 8.192 seconds:
Note
- REQUEST Setup type: TWT 元素的目标唤醒时间字段设置为 0,由响应的 STA/AP 指定目标唤醒时间值。其他字段由请求 STA 建议。
- SUGGEST Setup type: TWT 请求 STA 将在设置期间建议目标唤醒时间和其他参数。响应 STA 可能/可能不接受建议值。TWT 连接仍将被接受,使用请求 STA 建议的值或响应 STA 提供的值。
- DEMAND Setup type: TWT 请求 STA 将在设置期间要求目标唤醒时间和其他参数。如果响应 STA 无法接受建议值,TWT 设置将失败。
- 计算服务周期的公式: Service Period (SP) =( <wakeup duration>/10 ) msec
- 示例: AT+TWT_PARAM=1,1,13,128,1000 : SP = (128/10) = 12.8 msec
- 计算 TWT 唤醒间隔的公式: TWT Wake Interval = ((2^<exponent>)/<wake interval mantissa>)sec
- 示例: AT+TWT_PARAM=1,1,13,128,1000 : TWT Wake Interval = ((2^12)/1000) = 8.192s
---
AT+TWT_SLEEP
功能: 进入 TWT 低功耗模式
Set Command
命令:
AT+TWT_SLEEP
响应:
OK
Example
AT+TWT_SLEEP
---
AT+TWT_TEARDOWN
功能: 拆除目标唤醒时间 (TWT) 会话
Set Command
命令:
AT+TWT_TEARDOWN=<neg_type>,<all_twt>[,<flow_id>]
响应:
OK
或
ERROR
Parameters
- <neg_type>: TWT 协商类型
* 0: 单独协商(将对指定的 TWT 流执行 TWT 拆除) * 1: 在下一个唤醒 TBTT(目标信标传输时间)协商 TWT 拆除。目前不支持
- <all_twt>: 指定是否拆除所有 TWT 流
* 0: 仅拆除指定的 TWT 流(由 <flow_id> 参数指定) * 1: 拆除所有现有的 TWT 流
- <flow_id>: 要拆除的 TWT 流 ID。当 <all_twt> 设置为 0 时,此参数是必需的
Notes
- 内部 RC 错误可能导致唤醒间隔不准确(例如,30 秒内 60 毫秒的偏差)
- 外部晶振要求: 必须在带有外部晶振的板上进行测试,以最大限度地减少 RTC 时钟偏差
- 路由器兼容性: 使用支持 TWT 的路由器进行测试(例如 TP-Link AX5400)
- 目前,仅支持单独协商类型(0)
- 当 <all_twt>=1 时,不需要 <flow_id> 参数
- 设备必须在使用此命令之前处于 TWT 模式
Example
// Teardown a specific TWT flow with ID 1 AT+TWT_TEARDOWN=0,0,1 // Teardown all TWT flows AT+TWT_TEARDOWN=0,1
---
AT+GET_CLOCK
功能: 获取当前时钟源
Execute Command
命令:
AT+GET_CLOCK
响应:
+GET_CLOCK:<source> OK
Parameters
- <source>: 当前时钟源 ID
* 1: RC 作为 RTC 时钟源 * 2: 无源晶振作为 RTC 时钟源 * 3: 有源晶振作为 RTC 时钟源
Example
AT+GET_CLOCK // Response +GET_CLOCK:1 OK
---
AT+SET_CLOCK
功能: 设置系统时钟源
Execute Command
命令:
AT+SET_CLOCK=<source>
响应:
OK
Parameters
- <source>: 要设置的时钟源
* 1: RC 作为 RTC 时钟源 * 2: 无源晶振作为 RTC 时钟源 * 3: 有源晶振作为 RTC 时钟源
Notes
- 更改时钟源可能会影响系统性能和功耗
- 某些时钟源在某些电源模式下可能不可用
Example
AT+SET_CLOCK=1 // Response OK
---