WIOTA ASYNC AT
1 文档介绍
1.1 文档范围
本手册详细介绍了UC8288 WIOTA异步终端模块提供的AT指令集。
1.2 命令语法
1.2.1 命令格式
本手册中所有命令行必须以”AT”或”at”作为开头,以回车(
1.2.2 命令类型
通常命令可以有如下表所示的四种类型中的一种或多种形式。
类型 | 格式 | 说明 |
---|---|---|
测试命令 | AT+<cmd>=? | 用于查询设置命令或内部程序设置的参数及其取值范围 |
查询命令 | AT+<cmd>? | 用于返回参数的当前值 |
设置命令 | AT+<cmd>=<...> | 用于设置用户自定义的参数值 |
执行命令 | AT+<cmd> | 用于读取只读参数或不需要额外参数的情况 |
1.2.3 参数类型
命令参数虽然多种多样,但是都可以简单地归结为整数类型和字符串类型(包括不带双引号的字符串和带双引号的字符串)这两种基本的类型,如下表所示。
类型 | 示例 |
整数类型 | 123 |
字符串类型 | abc |
"hellow ,world" |
1.2.4 注意事项
- AT串口输入时不支持回删键(backspace)功能。
- 本文档+ERROR指+CME ERROR或者+EXT ERROR。
2 基础 AT命令详细说明
2.1 AT
&AT测试命令。
Command | Possible response(s) |
AT | OK ERROR |
2.2 AT+RST 重启
系统重启。
Command | Possible response(s) |
+RST | OK ERROR |
watchdog重启,执行RST返回OK后,1s后watchdog重启。
2.3 ATE 回显
AT指令回显功能。
Command | Possible response(s) |
ATE<value> | OK ERROR |
-
<value>:默认AT回显关闭。
-
0: 关闭回显。
-
1: 打开回显。
2.4 AT&L 查询AT列表
查询支持的AT列表。
Command | Possible response(s) |
AT&L | OK ERROR |
2.5 AT+UART UART0配置
UART0配置。
Command | Possible response(s) |
AT+UART= <baudrate>, <databits>, <stopbits>, <parity>, <flow_control> | OK ERROR |
- <baudrate>:波特率,最大理论支持的波特率为6000000(6M),RS232建议设置为115200,RS485建议设置为9600。
- <databits>:有效数据长度。
- <stopbits>:停止位。
- <parity>:奇偶检验。
- <flow_control>: 流控。不支持流控。
上图为波特率支持情况,黄色的两个波特率为理论支持,但由于串口工具不支持,暂未测试,红色的两个波特率,偏差超过5%,会出现乱码情况,不建议使用,其他波特率能保证基本通信。
2.6 AT+YMODEM 进入Ymodem刷机模式
进入Ymodem串口刷机模式。
Command | Possible response(s) |
AT+YMODEM | OK ERROR |
2.7 系统上报
Command | Mean |
+CHOOSEMODEM:D | 等待2S输入'D'进入Ymodem下载模式 |
+SYSTEM:START | 启动RT-THREAD系统 |
3 WITOA AT命令详细说明
3.0 AT CMD LIST
-
3.1 WIoTa系统资源
初始化协议栈 AT+WIOTAINIT
启动/关闭协议栈 AT+WIOTARUN
版本信息查询 AT+WIOTAVERSION
系统配置 AT+WIOTACONFIG
用户身份标识 AT+WIOTAUSERID
WIOTA当前状态 AT+WIOTASTATE
子系统ID配置 AT+WIOTASUBSYSID
暂停/恢复协议栈 AT+WIOTACTL
模组ID查询 AT+WIOTAMODULEID -
3.2 射频相关
发送功率设置 AT+WIOTAPOW
通信频率设置 AT+WIOTAFREQ
快速扫频 AT+WIOTASCANFREQ
频偏DCXO设置 AT+WIOTADCXO
有源晶体设置 AT+WIOTAOSC
无线信息 AT+WIOTARADIO
校准模式配置 AT+WIOTADJUST
功率发送模式设置 AT+WIOTATXMODE
外部32K晶振设置 AT+WIOTAOUTERK -
3.3 低功耗相关
低功耗模式设置 AT+WIOTALPM
pagingTX配置 AT+WIOTAPAGINGTX
pagingRX配置 AT+WIOTAPAGINGRX
paging rx的第二个唤醒id配置 AT+WIOTAPAGINGRXANO
获取唤醒原因 AT+WIOTAWAKEN
设置扩展ID模式 AT+WIOTAPAGINGMODE -
3.5 数据收发
传输速率配置 AT+WIOTARATE
数据发送配置 AT+WIOTASEND
数据接收上报 +WIOTARECV
校验CRC设置 AT+WIOTACRC
连续发送模式 AT+WIOTACONTINUESEND
非全接收模式 AT+WIOTAINCRECV
接收模式 AT+WIOTARECVMODE
检测时间 AT+WIOTADETECTIME
设置广播轮数 AT+WIOTABCROUND
设置单播重传次数 AT+WIOTAUNIFAIL -
3.6 调试相关
协议栈LOG AT+WIOTALOG
统计信息 AT+WIOTASTATS
吞吐量统计 AT+WIOTATHROUGHT
指示灯配置 AT+WIOTALIGHT
内存使用量统计 AT+WIOTACKMEM -
3.7 其他
静态数据保存 AT+WIOTASAVESTATIC
3.1 WIoTa系统资源
3.1.1 初始化协议栈 AT+WIOTAINIT
初始化WIoTa终端的资源。
Command | Possible response(s) |
+WIOTAINIT | OK ERROR |
- 举例:
发送:
AT+WIOTAINIT
回显:
OK
3.1.2 启动/关闭协议栈 AT+WIOTARUN
启动/关闭WIoTa协议栈
启动wiota系统,进入空闲状态。
关闭wiota后,回收系统资源。
Command | Possible response(s) |
+WIOTARUN=<state> | OK ERROR |
- <state>:
0: 关闭协议栈,回收WIoTa资源。
1: 启动协议栈,进入空闲状态。 - 举例:
发送: AT+WIOTARUN=1
回显: OK
3.1.3 版本信息查询 AT+WIOTAVERSION
查询当前wiota库的版本号、git 信息、编译生成库的时间。
Command | Possible response(s) |
+WIOTAVERSION? | +WIOTAVERSION:<VERSION>
+GITINFO:<GITINFO> +TIME:<maketime> +CCEVERSION:<cceversion> OK |
-
WIOTAVERSION:
当前WIoTa库版本号。 -
GITINFO:
当前库的git信息。 -
TIME:
当前库的生成时间。 -
CCEVERSION:
CCE版本号。
- 举例:
发送:
AT+WIOTAVERSION?
回显:
+WIOTAVERSION:v0.10_iote
+GITINFO:Fri Apr 15 14:20:26 2022
+TIME:Apr 20 2022 11:42:23
+CCEVERSION:b5aac93
OK
3.1.4 系统配置 AT+WIOTACONFIG
Command | Possible response(s) |
+WIOTACONFIG=<id_len>,<symbol>,<band>,<pz>,<bt>,<spec_idx>,<systemid>,<subsystemid> | OK ERROR |
+WIOTACONFIG? | +WIOTASYSTEMCONFIG:<id_len>,<symbol>,<band>,<pz>,<bt>,<spec_idx>,<systemid>,<subsystemid> OK |
- <id_len>: user_id长度,取值0,1,2,3代表2,4,6,8字节,默认四字节,IOTE该变量需要与AP保持一致,现在只支持设置为1,即四字节。
- <symbol>: 帧配置,取值0,1,2,3代表128,256,512,1024。
- <band>: bandwidth,带宽,取值0,1,2,3,4分别代表400K(暂不支持),200K(默认),100K,50K,25K。
- <pz>: 帧头相关配置,默认值为8,低功耗功能开启时目前需要修改为4,其余它请勿设置!
- <bt>: 该值和调制信号的滤波器带宽对应,BT越大,信号带宽越大,取值0,1代表BT配置为1.2和BT配置为0.3,bt_value为1时,代表使用的是低阶mcs组,即低码率传输组。bt_value为0时,代表使用的是高mcs组,即高码率传输组(symbol_length为2或者3时,bt_value不能配置为0)。
- <spec_idx>: 使用的频段序列号,默认为3,即470-510M。
- <systemid>: 系统id,每个id是1-0xFFFFFFFF,16进制格式输入,不需要0x。 预留值,必须设置,但是不起作用。备注:v2.9版本中,在查询返回时,该参数固定返回0x0
-
<subsystemid>: 子系统id, 每个id是1-0xFFFFFFFF ,16进制格式输入,不需要0x。(子系统的识别码,相同子系统ID下的终端才能相互通信)。V3.03版本开始,subsystem_id 的高12bit,内部默认固定为0x214, 32bit的整体默认值仍为0x21456981,举例:如果配置subsystem_id为 0x12345678,则会被内部修改为 0x21445678。
-
举例:
发送:
AT+WIOTACONFIG=1,1,1,8,1,3,11223344,21456981
回显:
OK
发送:
AT+WIOTACONFIG?
回显:
+WIOTASYSTEMCONFIG=1,1,1,8,1,3,0x11223344,0x21456981
OK
(以下为v2.9版本返回) 回显:
+WIOTASYSTEMCONFIG=1,1,1,8,1,3,0x0,0x21456981
OK
3.1.5 用户身份标识 AT+WIOTAUSERID
设置终端userid。获取用户id,此id为终端唯一标识。在初始化系统之后,在系统启动之前调用,否则无法生效。 目前只支持4字节长度的user id。
Command | Possible response(s) |
+WIOTAUSERID=<id0> | OK ERROR |
+WIOTAUSERID? | +WIOTAUSERID:<id0> OK |
-
<id0>: 获取用户id,此id为终端唯一标识。长度为4个字节。id是0x1-0xFFFFFFFF (16进制格式输入,不需要0x) 。
-
举例:
发送:
AT+WIOTAUSERID=ae81c452
回显:
OK
发送:
AT+WIOTAUSERID?
回显:
+WIOTAUSERID=0xae81c452
OK
3.1.6 WIOTA当前状态 AT+WIOTASTATE
获取帧长信息,返回结果包括广播帧长(单位ms),单播帧长(单位ms),子帧长度(单位ms),单播的第一子帧应用数据量(单位byte)。
Command | Possible response(s) |
+WIOTASTATE? | +WIOTASTATE:3 OK |
typedef enum
{
UC_STATUS_NULL = 0,
UC_STATUS_RECV_TRY,
UC_STATUS_RECVING,
UC_STATUS_SENDING,
UC_STATUS_SLEEP,
UC_STATUS_ERROR,
} UC_WIOTA_STATUS;
UC_STATUS_NULL:启动协议栈之前或者关闭协议栈后,或者启动协议栈后未开始自动检测接收时,处于该状态。
UC_STATUS_RECV_TRY:启动协议栈后,自动开始检测帧头,处于该状态。
UC_STATUS_RECVING: 协议栈检测到其他节点的数据后,开始接收,处于该状态。
UC_STATUS_SENDING: 协议栈收到应用数据开始发送数据,处于该状态。
UC_STATUS_SLEEP:协议栈休眠时,处于SLEEP状态,该状态暂未支持。
UC_STATUS_ERROR:其他错误状态。
- 举例:
发送:
AT+WIOTASTATE?
回显:
+WIOTASTATE:1
3.1.7 子系统ID配置 AT+WIOTASUBSYSID
设置子系统ID。获取子系统ID。(此接口为v3.00新增接口)
子系统ID, 每个id是0x1-0xFFFFFFFF ,16进制格式输入,不需要0x。(子系统的识别码,相同子系统ID下的终端才能相互通信)
在初始化系统之后,在系统启动之后均可调用。(注意与系统配置中的子系统ID为相同配置,需注意覆盖问题)。
注意:V3.03版本开始,subsystem_id 的高12bit,内部默认固定为0x214, 32bit的整体默认值仍为0x21456981,举例:如果配置subsystem_id为 0x12345678,则会被内部修改为 0x21445678。
Command | Possible response(s) |
+WIOTASUBSYSID=<subsysid> | OK ERROR |
+WIOTASUBSYSID? | +WIOTASUBSYSID:<subsysid> OK |
-
<subsysid>: 获取子系统ID,id是1x1-0xFFFFFFFF (16进制格式输入,不需要0x) 。
-
举例:
发送:
AT+WIOTASUBSYSID=ae34c47c
回显:
OK
发送:
AT+WIOTASUBSYSID?
回显:
+WIOTASUBSYSID=0xae34c47c
OK
v3.03之后版本: +WIOTASUBSYSID=0x2144c47c
OK
3.1.8 暂停/恢复协议栈 AT+WIOTACTL
(v3.01新增接口)
暂停/恢复WIoTa协议栈
暂停wiota系统,进入空闲状态。用于避免wiota运行和读写flash的冲突。
恢复wiota系统,进入默认接收状态。
Command | Possible response(s) |
+WIOTACTL=<mode> | OK ERROR |
- <state>:
0: 暂停协议栈,进入空闲状态。
1: 恢复协议栈,进入默认接收状态。 - 举例:
发送: AT+WIOTACTL=0
回显: OK
3.1.3 模组ID查询 AT+WIOTAMODULEID
查询模组ID,v4.1版本新增接口。
Command | Possible response(s) |
+WIOTAMODULEID? | +WIOTAMODULEID=<MODULEID> OK |
-
MODULEID:
模组ID,字符串,18个字符。 -
举例:
发送:
AT+WIOTAMODULEID?
回显:
+MODULEID=861340000000A89AE3
OK
3.2 射频相关
3.2.1 发送功率设置 AT+WIOTAPOW
发射功率配置
Command | Possible response(s) |
+WIOTAPOW=<mode>,<power> | OK ERROR |
- <mode>:
- 0:设置当前发射功率。
- 1:设置最大发射功率。
- 2:设置是否开启自动ack功率,此时power为0/1,代表关闭/开启,默认打开时,ack功率比发送端功率高0~5dbm,关闭时,使用本地配置功率。(mode2为v3.01新增模式)
- <power>:发射功率。范围-16 ~ 21dbm(V2.9版本更新为 -18 ~ 22 dbm)。实际需要设置的功率加20则为输入值,例如想要设置功率-10dbm,则 at+wiotapow=0,10;想要设置功率20dbm,则 at+wiotapow=0,40。
- 如果设置当前功率值为正常范围值,则设置成该功率,并且关闭自动功率模式;如果参数为127(at+wiotapow=0,127),则代表恢复自动功率模式,暂不支持自动功率。
注意:设置最大功率,是为了限制自动功率的范围,设置当前功率也不能超过最大发射功率。
- 举例:
发送:
AT+WIOTAPOW=0,40
回显:
OK
3.2.2 通信频率设置 AT+WIOTAFREQ
锁频
设置频点,各节点需要设置相同频点才能相互通信。在初始化系统之后,在系统启动之前调用,否则无法生效。
目前的默认频带是470M-510M,每间隔带宽为一个频点。 V2.9版本以及之后版本,间隔为带宽,V2.9之前版本,间隔为默认的200K。
当默认为200K带宽时,频点1代表 470.2 MHz;
当带宽为25K时,频点1代表 470.025 MHz。
带宽即为系统参数配置中的bandwidth。
Command | Possible response(s) |
+WIOTAFREQ=<freqpint> | OK ERROR |
+WIOTAFREQ? | OK ERROR |
-
<freqpint>:频点idx,范围0~200,代表频点(470M+0.2*idx)。
-
举例:
发送:
AT+WIOTAFREQ=115
回显:
OK
发送:
AT+WIOTAFREQ?
回显:
+WIOTAFREQ=115
OK
3.2.3 快速扫频 AT+WIOTASCANFREQ
在wiota启动后扫描频点信息,可扫一组频点和全扫,返回扫频结果,执行该命令后需要在窗口工具的发送区输入长度为dataLen(dataLen只能等于或大于输入的字符串长度,不能小于否则会获取字符串失败),个数为freqNum的字符串,并点击发送。
Command | Possible response(s) |
+WIOTASCANFREQ =<timeout>,<round>,<dataLen>,<freqNum> ; | +WIOTASCAFREQ:(freq,rssi) OK > ERROR |
- <timeout>:扫描超时时间,单位ms。默认超时时间是1分钟。
- <round>:扫频轮数,理论上来说,扫频轮数越多,越可能扫出潜在的信号,同时扫频时间也会更长。如果scan_round设为0,则使用默认值5。
- <dataLen>: 发送字符串的总长度+2(即\r\n),比如要扫描的频点为1,2,3,4,5这五个频点。
1)执行at命令AT+WIOTASCANFREQ=10000,0,11,5。
2)当出现>时十秒钟内在串口工具的发送区内输入字符串1,2,3,4,5。
3)点击发送。
4)等待扫频结果返回,结果会通过串口打印出来。 - <freqNum>: 频点个数,该参数为0时为全扫。
上报信息:
- freq:频点信息。
-
rssi:信号强度。
-
举例:
发送:
AT+WIOTASCANFREQ=60000,3,17,4
>
119,115,118,120回显:
OK
+WIOTASCANFREQ:
115,-83
120,-79
119,-80
118,-84
OK
3.2.4 频偏DCXO设置 AT+WIOTADCXO
设置终端频偏。在初始化系统之后,在系统启动之前调用,否则无法生效。
Command | Possible response(s) |
+WIOTADCXO=<dcxo> | OK ERROR |
+WIOTADCXO? (v4.1新增) | +WIOTADCXO=<dcxo> OK |
- <dcxo>:
-
硬件的频偏参数,输入参数是16进制。有源晶体不能设置。dcxo的范围为0x20000~0x3F000(只有中间bit13~18为有效位共6bit数值改变!,范围是0~63,即dcxo_idx),如果设置0x40000,表示开启自动dcxo功能,协议栈会在每次收发切换时,重新根据温度计算对应的温度曲线,读温度会耗时16ms。 如果设置0x41000,则会根据温度设置一次dcxo。关闭自动dcxo功能,只能通过设置一次dcxo值为0x20000~0x3F000!
-
举例:
发送:
AT+WIOTADCXO=20000
回显:
OK
发送:
AT+WIOTADCXO?
回显:
+WIOTADCXO=0x20000
OK
3.2.5 有源晶体设置 AT+WIOTAOSC
硬件如果是有源晶体,需要设置为有源晶体。此项设置与DCXO设置互斥,如果设置了有源晶体,就不能再设置DCXO。
Command | Possible response(s) |
+WIOTAOSC=<mode> | OK > ERROR |
+WIOTAOSC? | +WIOTAOSC=1 OK |
-
<mode>:0: 设置非有源晶体, 1: 设置有源晶体。如果设置大于1,内部也处理成有源晶体。
-
举例:
发送:
AT+WIOTAOSC=1
回显:
OK
3.2.6 无线信息 AT+WIOTARADIO
无线状态
只有在wiota收发数据成功时才能查询wiota无线状态信息,否则数据没有任何参考意义。
Command | Possible response(s) |
+WIOTARADIO? | +WIOTARADIO=<temp>,<rssi>,<<ber>,<snr>,<cur_pow>,<min_pow>,<max_pow>,<cur_mcs>,<max_mcs>,<frac_offset> OK ERROR |
无线状态数据 :
- temp: 当前芯片温度。
- rssi: 信号强度,正常均为负值,例如 - 30,单位dbm,暂不支持。
- ber: 误码率,暂不支持。
- snr: 信噪比,范围 -25dB ~ 30dB,暂不支持。
- cur_pow: 当前发射功率,范围 -16~21dBm。(V2.9版本更新为 -18 ~ 22 dbm)
- min_pow: 最小发射功率,范围 -16~21dBm。(V2.9版本更新为 -18 ~ 22 dbm)
- max_pow: 最大发射功率,范围 -16~21dBm。(V2.9版本更新为 -18 ~ 22 dbm)
- cur_mcs: 当前数据发送速率级别,范围 0~7。
- max_mcs: 截止目前最大数据发送速率级别,范围 0~7。
-
frac_offset: 基带同步频偏,仅供参考,可判断此时同步是否正常,-1500 ~ 1500都属于正常,暂不支持。
-
举例:
发送:
AT+WIOTARADIO?
回显:
+WIOTARADIO=31,-22,0,20,-16,-16,21,5,5,220
OK
3.2.7 校准模式配置 AT+WIOTADJUST
校准测试。在初始化系统之后,在系统启动之前调用,否则无法生效。
Command | Possible response(s) |
+WIOTADJUST=<mode> | OK ERROR |
- <mode>:
- 校准模式UC_ADJUST_MODE。有源晶体不需要校准。
typedef enum {
ADJUST_MODE_SEND = 0, // 发送方,开启后会一直发送信号
ADJUST_MODE_RECV = 1, // 接收者,根据接收信号与发送方校准频偏
} UC_ADJUST_MODE;
接收方的频偏需要跟发送方对齐,所以在通信之前需要校准,具体流程如下:
- 发送方初始化,设置ADJUST_MODE_SEND,启动协议栈,使用默认配置可不需要系统配置;
- 接收方初始化,设置ADJUST_MODE_RECV,启动协议栈,使用默认配置可不需要系统配置,启动后,等待10帧时间查询协议栈状态,如果是UC_STATUS_RECVING,则校准成功,此时关闭协议栈。
-
所有接收方均校准完成后,关闭发送方的协议栈。(正常通信时,不再需要修改收发双方的dcxo,内部会有校准好的dcxo数据,请勿破坏)
-
举例:
发送:
AT+WIOTADJUST=0
回显:
OK
3.2.8 功率发送模式设置 AT+WIOTATXMODE
设置功率发送模式。在初始化系统之后,在系统启动之前调用,否则无法生效。
Command | Possible response(s) |
+WIOTATXMODE=<mode> | OK ERROR |
- <mode>:
-
默认值为3,协议栈低功耗或者使用LE硬件模组时,需要设置mode为0,一般不需要修改,LE模组在出厂配置里会默认配置为0。
-
举例:
发送:
AT+WIOTATXMODE=0
回显:
OK
3.2.9 外部32K晶振设置 AT+WIOTAOUTERK
模组硬件如果有外部32K晶振,可根据需要设置为外部32K晶振模式。v3.02新增接口。
Command | Possible response(s) |
+WIOTAOUTERK=<mode> | OK > ERROR |
+WIOTAOUTERK? | +WIOTAOUTERK=1 OK |
-
<mode>:0: 设置内部32K, 1: 设置外部32K。
-
举例:
发送:
AT+WIOTAOUTERK=1
回显:
OK -
注意:
暂不支持查询,可在系统启动后配置,与协议栈运行与否无关。
3.3 低功耗相关
3.3.1 低功耗模式设置 AT+WIOTALPM
低功耗设置。
Command | Possible response(s) |
+WIOTALPM=<mode>,<value>,<value2> | OK ERROR |
-
<mode>:
-
0: 系统进入sleep模式。如果需要串口等外部唤醒源,则value设为 1,如果不需要外部唤醒,则value设为0;如果需要定时唤醒,则需要先设置clock闹钟,再进入sleep; value2为是否降低32K时钟频率,可进一步降低0.3uA的sleep电流,但会导致sleep期间定时不准。
- 1: paging tx信号发送,发送一段时间的信号唤醒进入了paging rx模式的终端,发送前需要使用at+wiotapagingtx 设置相关配置;
- 2: paging rx模式,value为是否降低32K时钟频率,作用同上,value2为最大检测次数,如果达到最大次数仍未检测到信号,基带会强制唤醒系统,如value2为0,则不会强制唤醒;终端进入paging rx模式,直到被paging tx信号唤醒或达到最大检测次数,则上电重启整个系统,进入前需要使用at+wiotapagingrx 设置相关配置;(v2.9版本,增加value2的最大次数功能,之前版本填0并且无意义),不能打开外部唤醒寄存器,只能通过拉低spi cs引脚来强制唤醒!
- 3: gating模式,协议栈在空闲的时候进入Gating。该模式异步暂未支持;
- 4: clock闹钟设置,value单位为秒,设置闹钟后,会定时给系统一个rtc中断,如果在sleep态则可唤醒系统;
- 5: 协议栈低功耗模式,协议栈内部自动降压降频逻辑,value为0,1,表示关闭和开启。
- 6: 降频,降低系统主频,value为UC_FREQ_DIV_MODE_E;
- 7: 降压,降低系统电压,value为0,默认电压(1.82v);1,降压(1.56v)。
- 8: 单独设置外部唤醒,如果需要串口等外部唤醒源,则value设为1,如果不需要外部唤醒,则value设为0。(此参数为v3.00新增参数) paging rx模式下不能打开外部唤醒寄存器,只能通过拉低spi cs引脚来强制唤醒!
以上模式中如果value2未用到,则设为0即可(无实际意义)。
typedef enum {
FREQ_DIV_MODE_1 = 0, // default: 96M
FREQ_DIV_MODE_2 = 1, // 48M
FREQ_DIV_MODE_4 = 2, // 24M
FREQ_DIV_MODE_6 = 3, // 16M
FREQ_DIV_MODE_8 = 4, // 12M
FREQ_DIV_MODE_10 = 5, // 9.6M
FREQ_DIV_MODE_12 = 6, // 8M
FREQ_DIV_MODE_14 = 7, // 48/7 M
FREQ_DIV_MODE_16 = 8, // 6M
FREQ_DIV_MODE_MAX,
} UC_FREQ_DIV_MODE_E;
typedef enum {
VOL_MODE_CLOSE = 0, // 1.82v
VOL_MODE_OPEN = 1, // 1.56v
VOL_MODE_TEMP_MAX,
} UC_VOL_MODE_E;
- 举例:
发送:
AT+WIOTALPM=1,0,0
回显:
OK
3.3.2 pagingTX配置 AT+WIOTAPAGINGTX
设置paging tx信号的相关配置。
Command | Possible response(s) |
+WIOTAPAGINGTX=<freq>,<spec_idx>,<band>,<symbol>,<awaken_id>,<send_time> | OK > ERROR |
+WIOTAPAGINGTX? | +WIOTAPAGINGTX=150,3,1,1,30,3000 > OK |
- <freq>:频点。
- <spec_idx>:频段。
- <band>:带宽。暂时只支持200K,即band为1。
- <symbol>:symbol length。
- <awaken_id>:唤醒ID,根据symbol length不同,最大值不同,为[41,82,168,339](可等于,最小值为0)。
-
<send_time>:每次信号发送时长(单位ms)。
-
举例:
发送:
AT+WIOTAPAGINGTX=57,3,1,0,23,1000
回显:
OK
3.3.3 pagingRX配置 AT+WIOTAPAGINGRX
3.3.3.1 async v2.7之前版本支持的pagingRX配置
设置paging rx接收检测模式的相关配置。
Command | Possible response(s) |
+WIOTAPAGINGRX=<freq>,<spec_idx>,<band>,<symbol>,<nlen>,<utimes>,<thres>,<awaken_id>,<detect_period> | OK > ERROR |
- <freq>:频点。
- <spec_idx>:频段。
- <band>:带宽。暂时只支持200K,即band为1。
- <symbol>:symbol length。
- <nlen>:检测头配置,1,2,3,4,默认值4。
- <utimes>:检测头配置,1,2,3,默认值2。
- <thres>:threshold检测门限,3~15,默认值10。增大该值,漏检率增大,虚警率减小。(虚警率即对噪声的敏感程度,漏检率即对唤醒信号的敏感程度)
- <awaken_id>:唤醒ID,根据symbol length不同,最大值不同,当symbol length为[0,1,2,3]时,唤醒ID最大值限制分别为[41,82,168,339](可等于,最小值为0)。
-
<detect_period>:接收端检测周期(单位ms,最大值44000),每隔该时间,基带会自动单独起来检测一次信号,如果检测到信号,则唤醒整个系统,如果没有则继续sleep,该时间越长,整体功耗越低,相应的发送端想要唤醒接收端时则需要发送更长的时间。
-
举例:
发送:
AT+WIOTAPAGINGRX=57,3,1,0,4,2,10,23,1000
回显:
OK
3.3.3.2 async v2.7以及之后版本支持的pagingRX配置
设置paging rx接收检测模式的相关配置。
Command | Possible response(s) |
+WIOTAPAGINGRX=<freq>,<spec_idx>,<band>,<symbol>,<awaken_id>,<detect_period>,<nlen>,<utimes>,<thres>,<extra_flag>,<extra_period> | OK > ERROR |
- <freq>:频点。
- <spec_idx>:频段。
- <band>:带宽。v2.9之前版本只支持200K带宽,v2.9版本开始支持窄带。
- <symbol>:symbol length。
- <awaken_id>:唤醒ID,根据symbol length不同,最大值不同,当symbol length为[0,1,2,3]时,唤醒ID最大值限制分别为[41,82,168,339](可等于,最小值为0)。
- <detect_period>:接收端检测周期(单位ms,最大值44000),每隔该时间,基带会自动单独起来检测一次信号,如果检测到信号,则唤醒整个系统,如果没有则继续sleep,该时间越长,整体功耗越低,相应的发送端想要唤醒接收端时则需要发送更长的时间。
- <nlen>:检测头配置,1,2,3,4,默认值4。
- <utimes>:检测头配置,1,2,3,默认值2。
- <thres>:threshold检测门限,3~15,默认值10。增大该值,漏检率增大,虚警率减小。(虚警率即对噪声的敏感程度,漏检率即对唤醒信号的敏感程度)
- <extra_flag>:物理层检测到唤醒信号后,自动继续休眠的功能flag配置,设为1则开启该功能。
-
<extra_period>:物理层检测到唤醒信号后,自动继续休眠的时长配置,单位ms,如果extra_period 小于等于 (detect_period + 10)ms,则继续休眠 detect_period 时长,否则继续休眠 extra_period 时长。(PS: 当前最新版本v3.01及之前版本,extra_period均不能小于等于 (detect_period + 10)ms,后续版本会修复)
-
举例:
发送:
AT+WIOTAPAGINGRX=57,3,1,0,23,1000,4,2,10,1,5000
回显:
OK
3.3.4 paging rx的第二个唤醒id配置 AT+WIOTAPAGINGRXANO
v3.02版本新增接口。
设置paging rx的第二个唤醒id配置。
Command | Possible response(s) |
+WIOTAPAGINGRXANO=<period_multiple>,<awaken_id_another> | OK > ERROR |
- <period_multiple>:第二个唤醒的id的检测周期除detect_period的倍数,倍数为0时,不检测第二个唤醒id,倍数为1时,两个id的检测周期一样,以此类推。
- <awaken_id_another>:第二个检测的唤醒id(范围与第一个相同,值不能相同),当period_multiple为非0时有效。
先配置第一个唤醒id以及其他配置,再配置第二个唤醒id配置
- 举例:
发送:
AT+WIOTAPAGINGRXANO=2,27
回显:
OK
3.3.5 获取唤醒原因 AT+WIOTAWAKEN
获取唤醒原因。 v3.02新增接口。
Command | Possible response(s) |
+WIOTAWAKEN? | +WIOTAWAKEN=awaken_cause, is_cs_awawen, pg_awaken_cause, detected_times, detect_idx OK |
- <awaken_cause>:唤醒原因
- <is_cs_awawen>:是否SPI CS唤醒
- <pg_awaken_cause>:paging唤醒原因,只有唤醒原因awaken_cause为AWAKENED_CAUSE_PAGING,此域才有效。
- <detected_times>:当前paging检测次数,有效性同上。
- <detect_idx>:v4.0新增参数,当前paging唤醒id的idx,有效性同上,0或者1。
参数对应表详见API文档中接口:
uc_wiota_get_awakened_cause
uc_wiota_get_paging_awaken_cause
-
举例:
发送:
AT+WIOTAWAKEN?
回显:
+WIOTAWAKEN=2,0,4,40
+WIOTAWAKEN=2,0,4,40,0 (v4.0版本) -
注意:
无。
3.3.6 设置扩展ID模式 AT+WIOTAPAGINGMODE
(v4.1新增接口)扩展ID模式开启后,唤醒ID范围增大,根据symbol length不同,最大值限制为[1023, 4095,16383, 65535](可等于,最小值为0),另外扩展ID模式,第二个唤醒ID仅支持与第一个唤醒ID相同周期,进休眠不能32K时钟降频,paging tx的send time必须与paging rx的detect time相同!
Command | Possible response(s) |
+WIOTAPAGINGMODE=<rx_mode>,<tx_mode> | OK ERROR |
+WIOTAPAGINGMODE? | +WIOTAPAGINGMODE=<rx_mode>,<tx_mode> OK |
- <rx_mode>: 是否使用rx扩展ID模式的标志。
-
<tx_mode>: 是否使用tx扩展ID模式的标志。一般rx,tx都配置成相同的。
-
举例:
发送:
AT+WIOTAPAGINGMODE=1,1
回显:
OK
发送:
AT+WIOTAPAGINGMODE?
回显:
+WIOTAPAGINGMODE=1,1
OK
3.3.7 唤醒输出电平 AT+WAKEOUTPIN
应用于终端进入休眠后唤醒时,通过GPIO输出电平信号,通知上位机,默认为GPIO7
,当被唤醒时输出高电平,并保持设定的脉宽后输出低电平。GPIO及电平脉宽可通过静态数据配置。
设置唤醒输出的GPIO引脚以及脉宽保持时间。
Command | Possible response(s) |
+WAKEOUTPIN=<pin>,<width> | OK > ERROR |
+WAKEOUTPIN? | +PIN=7 +WIDTH=50 OK |
- <pin>:0~18,0对应GPIO0,1对应GPIO1,以此类推,默认7,即GPIO7;
- <width>:脉宽值,即电平保持时间(1~255),单位:毫秒ms,建议上位机采取下降沿判断该电平信号。
- 举例:
发送:
AT+WAKEOUTPIN=7,50
回显:
OK
3.4 帧结构相关
3.4.1 帧信息 AT+WIOTAFRAMEINFO
获取帧长信息,返回结果包括广播帧长(单位ms),单播帧长(单位ms),子帧长度(单位ms),单播的第一子帧应用数据量(单位byte)。
Command | Possible response(s) |
+WIOTAFRAMEINFO? | +WIOTAFRAMEINFO:86,97,8,3 +WIOTAFRAMEINFO:86,97,8(v4.0版本) OK |
- <广播帧长,单播帧长,子帧长度,单播的第一子帧应用数据量>
- <V4.0版本去掉了最后一个参数:单播的第一子帧应用数据量,放到了at+wiotarate?的查询结果中。 >
3.4.2 设置发送子帧数 AT+WIOTASUBNUM
设置每帧的子帧数,可根据数据量适当选择,目前默认为8。不同终端可不相同,接收方会根据接收到的首包数据获取到发送方的帧结构,进行后续接收流程,应用可暂不关注接收方的接收过程。协议栈初始化之后就可以设置,如果需要变化,在每次发送数据前均可以再设置。
Command | Possible response(s) |
+WIOTASUBNUM=<number> | OK > ERROR |
+WIOTASUBNUM? | +WIOTASUBNUM:8 OK |
-
<number>:子帧数,范围3~10,目前不支持1~2,推荐设置为4~8。
-
举例:
发送:
AT+WIOTASUBNUM=5
回显:
OK
3.5 数据收发
3.5.1 传输速率配置 AT+WIOTARATE
传输速率配置
Command | Possible response(s) |
+WIOTARATE=<rate_mode><rate_value> | OK ERROR |
+WIOTARATE? | +WIOTARATE:<cur_mcs><first_bc_data><normal_bc_data><first_uni_data><second_uni_data><normal_uni_data> OK |
- <rate_mode>:枚举UC_DATA_RATE_MODE。
- <rate_value>:对应不同模式有不同的意义,详见下面的描述部分。
- <cur_mcs>:当前基本速率MCS。
- <first_bc_data>:广播第一子帧的应用数据量,一般为0。
- <normal_bc_data>:广播其余子帧(非第一子帧)的应用数据量。
- <first_uni_data>:单播第一帧第一子帧的应用数据量。
- <second_uni_data>:单播第二帧(及之后帧)第一子帧的应用数据量。
- <normal_uni_data>:单播其余子帧(非第一子帧)的应用数据量。
设置最大速率模式和级别,与枚举UC_DATA_RATE_MODE里对应。
除了基本模式,其余均为V4.0版本新增模式。
-
(1) 第一种基本模式 UC_RATE_NORMAL,是基本速率设置,有9档mcs速率级别(包括自动mcs),详见UC_MCS_LEVEL,默认为UC_MCS_LEVEL_0,设置非自动mcs时同时关闭自动速率匹配功能。 暂未支持自动MCS功能!
-
(2) 第二种CRC模式 UC_RATE_CRC_TYPE,可增加高阶mcs的子帧数据量(增加3 bytes),
128/0/1(该形式表示symbollength 128下的mcs0和mcs1),
256/0/1/2,
512/0/1/2/3,
1024/0/1/2/3,均为低阶mcs,以下为高阶mcs: 128/2/3/4,
256/3/4/5/6,
512/4/5/6/7,
1024/4/5/6/7,
默认低阶mcs的基带crc为1字节,高阶mcs的基带crc为4字节,打开CRC模式后,高阶mcs的基带crc也配置为1字节,所以此配置下可以额外提供给应用3字节的数据空间。
-
(3) 第三种单播ACK模式 UC_RATE_UNI_ACK_MODE,v4.0新增功能,其枚举值为uc_uni_ack_mode_e,0、1、2分别代表单播无ack,单播每帧有ack,单播只有最后一帧有ack(这种情况暂未支持),默认为1,与v4.0之前版本兼容。可使用接口uc_wiota_get_uni_ack_mode获取当前单播ACK模式。
-
(4) 第四种控制子帧MCS模式 UC_RATE_FIRST_MCS_MODE,其枚举值为uc_first_mcs_mode_e,v4.0新增功能,默认为0,表示控制子帧固定使用mcs0,与v4.0之前版本兼容,设为1时,使用根据配置的基本MCS计算的mcs作为控制子帧的mcs,通常是数字子帧的mcs减1。
-
(5) 第五种GAP模式 UC_RATE_PRM_GAP_MODE,其枚举值为uc_prm_gap_mode_e,v4.0新增功能,默认为1,表示有gap,与v4.0之前版本兼容,当设置为0时,表示帧头和子帧之间没有gap,整体缩短了帧长,提高了传输效率,但是新的帧结构不能与老版本通信,如果需要与V4.0之前版本通信,需要将gap模式设置为1。
-
(6) 第六种旧版本单播模式 UC_RATE_OLD_UNI_MODE,v4.0新增功能,默认为1,与v4.0之前版本兼容,当设置为0时,表示对于单播组包做了优化,相同mcs配置能够容纳更多应用数据,但是不能与老版本通信,如果需要与V4.0之前版本通信,需要将旧版本单播模式设为1。
typedef enum
{
UC_RATE_NORMAL = 0,
UC_RATE_CRC_TYPE = 1, // 0, normal mode, 1, only one byte crc
UC_RATE_UNI_ACK_MODE = 2, // uc_uni_ack_mode_e
UC_RATE_FIRST_MCS_MODE = 3, // default 0, first bc mcs is 0, 1: calc access mcs
UC_RATE_PRM_GAP_MODE = 4, // uc_prm_gap_mode_e
UC_RATE_OLD_UNI_MODE = 5, // 1: old mode, default 0: new mode
UC_RATE_OTHER,
} uc_data_rate_mode_e;
typedef enum {
UC_MCS_LEVEL_0 = 0,
UC_MCS_LEVEL_1,
UC_MCS_LEVEL_2,
UC_MCS_LEVEL_3,
UC_MCS_LEVEL_4,
UC_MCS_LEVEL_5,
UC_MCS_LEVEL_6,
UC_MCS_LEVEL_7,
UC_MCS_AUTO = 8, // 暂不支持
}UC_MCS_LEVEL;
typedef enum
{
FIRST_MCS_FIX0 = 0, // fix to 0
FIRST_MCS_FLEX = 1, // calc by mcs set
FIRST_MCS_UNVALID,
} uc_first_mcs_mode_e;
typedef enum
{
UNI_ACK_NONE = 0, // every uni frame has no ack
UNI_ACK_EVERY = 1, // every uni frame has ack
UNI_ACK_LAST = 2, // only last frame has ack
UNI_ACK_UNVALID,
} uc_uni_ack_mode_e;
typedef enum
{
PRM_GAP_NONE = 0,
PRM_GAP_HAS = 1,
PRM_GAP_UNVALID,
} uc_prm_gap_mode_e;
BT_0.3时在不同symbol length和不同MCS时,对应每包(即每个数据子帧)传输的广播应用数据量(byte),单播时的每个包比下表少1个字节(V4.0版本开始,设置 AT+WIOTARATE=4,0 之后,单播每个数据子帧跟广播一样,也为下表)。
symbol length | mcs0 | mcs1 | mcs2 | mcs3 | mcs4 | mcs5 | mcs6 | mcs7 |
---|---|---|---|---|---|---|---|---|
128 | 7 | 9 | 52 | 66 | 80 | 不支持 | 不支持 | 不支持 |
256 | 7 | 15 | 22 | 52 | 108 | 157 | 192 | 不支持 |
512 | 7 | 15 | 31 | 42 | 73 | 136 | 255 | 297 |
1024 | 7 | 15 | 31 | 63 | 108 | 220 | 451 | 619 |
初始化协议栈时默认位MCS0,调用该接口入参为0~7时,设置最大速率级别,同时关闭自动速率匹配功能,再次调用该接口入参为UC_MCS_AUTO(或者不是0~7)时,会打开自动速率匹配功能,暂不支持自动速率。
目前每帧第一个子帧有特殊用途,固定为MCS0,并且会占用相应的控制包长度,广播数据不会放在该子帧,单播数据会有2~3个字节的应用数据空间,建议计算每帧数据量时,以实际接口返回值为准。
举例: 系统配置中symbol_length为1,默认下行子帧数为8,则frameLen为 97ms
在此帧结构配置情况下,如果选择MCS2,则应用数据速率为 7*22/0.099616 = 1,545 bps
(计算数据速率时,一般可以不考虑第一个包)。
-
注意
一味提高速率,可能导致传输始终无法成功。 -
举例:
发送:
AT+WIOTARATE=0,3
回显:
OK
发送:
AT+WIOTARATE?
回显:
+WIOTARATE:1,0,9,2,4,9
OK
3.5.2 数据发送配置 AT+WIOTASEND
数据发送
Command | Possible response(s) |
+WIOTASEND=<timeout>,<len>,<userid> | OK > ERROR |
+WIOTASEND | > data OK ERROR |
指定数据长度发送流程:
- <timeout>:发送超时时间,单位ms。取值范围0~4294967294,0代表试用默认值(60s)。
- <len>:数据的长度,单播最大310字节,广播最大1021字节,均为不算CRC的长度。
- <userid>:userid为0时,即为广播发送,如果userid不为0,则为单播发送,userid为16进制,但不加0x。
-
发送失败返回"ERROR", 发送数据成功返回“OK”。
-
举例:
发送:
AT+WIOTASEND=5000,12,1234ABCF
>
123456789012
回显:
SEND SUCC
OK
注意:
1. 数据发送需要2条指令,每条指令之后都有工具自动增加的\r\n;
2. 如果工具支持也可以合并为AT+WIOTASEND=5000,12,1234ABCF\r\n123456789012
3.5.3 数据接收上报 +WIOTARECV
接收数据上报。
Command | Possible response(s) |
无 | +WIOTARECV,<rssi>,<snr>,<type>,<result>,<len>,<data> |
-
<rssi>:上报的信号强度,-1 ~ -130,暂时不太准。
-
<snr>:上报的信噪比,-13 ~ 27,暂时不太准。
-
<type>:上报数据类型
0:单播数据。
1:广播数据。
2:扫频结果。
3:基带异常。 -
<result>:上报数据结果
0:succ。
1:timeout。
2:fail。
3:part_fail。
4:crc_fail。
5:queue_full。 -
<len>:上报的数据长度。
-
<data>:数据长度不为0时,上报的数据 。
-
举例:
回显:
+WIOTARECV,-37,21,0,0,12,123456789012
OK
回显:
+WIOTARECV,-67,18,1,0,12,1234567890 (有时候是这样,可能是发送的数据是带了\r\n的,所以显示不出来,实际传输的还是12个字符)
OK
3.5.4 校验CRC设置 AT+WIOTACRC
CRC校验设置。
Command | Possible response(s) |
+WIOTACRC=<crc_limit> | OK > ERROR |
+WIOTACRC? | +WIOTACRC=1 OK |
-
<crc_limit>:0: 关闭CRC校验功能, 大于1: 表示数据长度大于等于crc_limit时,才打开CRC校验功能,所以crc_limit设置为1,则可表示任意长度的数据均加CRC。默认值为100。
-
举例:
发送:
AT+WIOTACRC=100
回显:
OK
3.5.5 连续发送模式 AT+WIOTACONTINUESEND
连续发送模式,为语音或者其他需要连续传输很多个应用数据包设计,打开连续传输模式时,发送帧结构会一直维持,直到关闭该模式。 该模式时,只能发送一种数据,广播或者单播,不能混发广播和单播。该模式时,也不会去接收数据。
Command | Possible response(s) |
+WIOTACONTINUESEND=<flag> | OK > ERROR |
-
<flag>:0: 关闭, 1: 打开。
-
举例:
发送:
AT+WIOTACONTINUESEND=1
回显:
OK
3.5.6 非全接收模式 AT+WIOTAINCRECV
为语音或者其他需要错误包的应用设计,底层会把应用数据继续拆包进行发送,如果个别包错误,也会进行解析并整合成完整的应用数据包发给应用。
需要在接收端设置,发送端不需要设置。
Command | Possible response(s) |
+WIOTAINCRECV=<flag> | OK > ERROR |
-
<flag>:0: 关闭, 1: 打开。
-
举例:
发送:
AT+WIOTAINCRECV=1
回显:
OK
3.5.7 接收模式 AT+WIOTARECVMODE
协议栈启动后,默认会自动检测接收,如果设置该接口关闭,则进入空闲态。注意:默认mode是0,默认是打开自动接收检测!
Command | Possible response(s) |
+WIOTARECVMODE=<mode> | OK > ERROR |
-
<mode>:0: 打开, 1: 关闭。
-
举例:
发送:
AT+WIOTARECVMODE=1
回显:
OK
3.5.8 检测时间 AT+WIOTADETECTIME
为了避免冲突,发送数据前,物理层会先检测一段时间帧头,在没有收到其他终端数据的情况下,再发送数据。
Command | Possible response(s) |
+WIOTADETECTIME=<detect_time> | OK > ERROR |
-
<detect_time>:检测时间,单位ms,默认时间为两倍当前配置下最大的单播帧长。
-
举例:
发送:
AT+WIOTADETECTIME=500
回显:
OK
3.5.9 设置广播轮数 AT+WIOTABCROUND
设置广播数据在物理层重复发送的轮数,因为广播没有反馈机制,目前默认重复发3轮数据,因为需要比较数据,所以广播也不支持自动调整MCS策略。协议栈初始化之后,每次发送数据之前均可修改。
Command | Possible response(s) |
+WIOTABCROUND=<round> | OK > ERROR |
-
<round>:广播重复轮数,大于1,小于8,默认3,尽量不要太大,建议2~4。
-
举例:
发送:
AT+WIOTABCROUND=4
回显:
OK
3.5.10 设置单播重传次数 AT+WIOTAUNIFAIL
设置单播连续失败次数限制,也可以理解为一帧数据的传输总次数,最小值为1,默认值为2。终端发送单播数据在每帧结尾会接收ack,默认连续两次没收到ack,就会认为发送失败。
Command | Possible response(s) |
+WIOTAUNIFAIL=<cnt> | OK > ERROR |
-
<cnt>:连续失败次数限制,默认为2,范围1~8。
-
举例:
发送:
AT+WIOTAUNIFAIL=1
回显:
OK
3.5.11 WIOTA数据暂存
应用于上位机进入休眠,不能接收通过AT上报的WIOTA消息时,IoTE提供数据暂存功能,并在收到WIOTA消息时 GPIO2
输出电平信号,默认无数据时低电平,发生暂存数据时输出高电平,电平脉宽可配。GPIO及电平脉宽可通过静态数据配置。
WIOTA数据暂存模式设置
设置WIOTA数据暂存模式,默认通过AT输出。
Command | Possible response(s) |
+MODE=<mode> | OK > ERROR |
+MODE? | +MODE=1 OK |
- <mode>:0: 直接通过AT串口输出接收到的WIOTA消息, 1: 进入数据暂存模式;最多存储
5
条WIOTA消息。 - 举例:
发送:
AT+MODE=1
回显:
OK
暂存电平脉宽设置
设置暂存数据时电平的脉宽,在设置WIOTA数据暂存模式后生效。
Command | Possible response(s) |
+PULSEWIDTH=<pin>,<width> | OK > ERROR |
+PULSEWIDTH? | +PULSEWIDTH=50 OK |
- <pin>:0~18,0对应GPIO0,1对应GPIO1,以此类推,默认2,即GPIO2;
- <width>:脉宽值,即电平保持时间(5~255),单位:毫秒ms,建议上位机采取下降沿判断该电平信号。
- 举例:
发送:
AT+PULSEWIDTH=2,50
回显:
OK
暂存数据输出
把暂存的数据按接收时间的顺序全部
输出。
Command | Possible response(s) |
+STOREDATA? | +WIOTARECV=<type>,<len>,<data> OK |
返回数据格式与3.16 接收数据上报描述一致。
注:命令执行后暂存的数据将被全部清空,因此该命令多次执行后将没有数据输出。
3.6 调试相关
3.6.1 协议栈LOG AT+WIOTALOG
WIoTa log设置。
Command | Possible response(s) |
+WIOTALOG=<type> | OK |
- <type>:LOG类型
0:关rv uart log,即协议栈串口LOG。
1:开rv uart log。
2:rv uart log使用uart0,如果从uart1切换到uart0,会把uart0的波特率改为460800,此时AT的波特率也是用该值。
3:rv uart log使用uart1,如果从uart0切换到uart1,会把uart0的波特率恢复为115200。
4:关rv spi log,即协议栈SPI LOG,需要通过另外的TRACE工具抓取。
5:开rv spi log。 -
注意:默认状态下,rv uart log使用uart1,波特率460800,AT使用uart0,波特率115200,在rv uart log的串口切换后,需要特别注意串口工具使用的波特率是否对应,如果AT的波特率不对时,发送at cmd会直接导致at挂住!
-
举例:
发送:
AT+WIOTALOG=2
回显:
B (由于此时AT的波特率已经切换成460800,但是工具还是原来的115200波特率接收,所以字符都是乱码,此时OK显示成了B,此时需要将工具波特率改为460800,才能正常显示rv uart log和使用AT命令)
发送:
AT+WIOTALOG=3 (在上一步基础上,先把工具波特率改为460800,然后再发该AT)
回显:
鴢x黿纗<\0€x\0 (由于此时AT的波特率已经切换成115200,但是工具还是原来的460800波特率接收,所以字符都是乱码,此时OK显示成了乱码,乱码有可能不同,此时需要将工具波特率改为115200,才能正常使用AT命令)
3.6.2 统计信息 AT+WIOTASTATS
WIoTa统计信息
Command | Possible response(s) |
+WIOTASTATS=<mode>,<type> | +WIOTASTATS=type,data OK > ERROR |
+WIOTASTATS? | +WIOTASTATS=0,rach_fail,active_fail,ul_succ,dl_fail,dl_succ,bc_fail,bc_succ OK |
- <mode>:UC_STATS_MODE,0: 读数据, 1: 重置数据。
- <type>: UC_STATS_TYPE,需要获取的数据类型。
typedef enum {
UC_STATS_READ = 0,
UC_STATS_WRITE,
}UC_STATS_MODE;
typedef enum {
UC_STATS_TYPE_ALL = 0,
UC_STATS_UNI_SEND_TOTAL,
UC_STATS_UNI_SEND_SUCC,
UC_STATS_BC_SEND_TOTAL,
UC_STATS_BC_SEND_SUCC,
UC_STATS_UNI_RECV_FAIL,
UC_STATS_UNI_RECV_SUCC,
UC_STATS_BC_RECV_FAIL,
UC_STATS_BC_RECV_SUCC,
UC_STATS_TYPE_MAX,
}UC_STATS_TYPE;
- 举例:
- AT+WIOTASTATS=0,0 和 AT+WIOTASTATS? 的返回数据一样。
- AT+WIOTASTATS=0,4,返回+WIOTASTATS=4(查询类型),20(广播发送成功包数)。
- AT+WIOTASTATS=1,4,重置广播发送成功包数。
3.6.3 吞吐量统计 AT+WIOTATHROUGHT
WIoTa吞吐量统计
Command | Possible response(s) |
+WIOTATHROUGHT? | +WIOTATHROUGHT=0,uni_send,bc_send,uni_recv,bc_recv OK |
typedef struct
{
unsigned int uni_send_succ_data_len;
unsigned int bc_send_succ_data_len;
unsigned int uni_recv_succ_data_len;
unsigned int bc_recv_succ_data_len;
} uc_throughput_info_t, *uc_throughput_info_p;
- 举例:
发送:
AT+WIOTATHROUGHT?
回显:
+WIOTATHROUGHT=0,22,24,22,21
3.6.4 指示灯配置 AT+WIOTALIGHT
开关指示灯,在二次开发版本中,可关闭指示灯,即停止协议栈对相应GPIO(2/3/7/16/17)的操作,避免冲突。默认关闭。
Command | Possible response(s) |
+WIOTALIGHT=<mode> | OK > ERROR |
-
<mode>:0: 关闭指示灯, 1: 打开指示灯。
-
举例:
发送:
AT+WIOTALIGHT=1
回显:
OK
3.6.5 内存使用量统计 AT+WIOTACKMEM
内存使用量统计
Command | Possible response(s) |
+WIOTACKMEM? | +MEMORY=total,used,maxused OK |
- 举例:
发送:
AT+WIOTACKMEM?
回显:
+MEMORY=42028,9832,10764
3.7 其他
3.7.1 静态数据保存 AT+WIOTASAVESTATIC
在协议栈非RUN状态下执行用户静态数据保存。
Command | Possible response(s) |
+WIOTSAVESTATIC | OK |
- 举例:
发送:
AT+WIOTASAVESTATIC
回显:
OK
4 WIOTA 异步测试流程 AT
功能 | 终端A | 终端B | 备注 |
---|---|---|---|
初始化 | > AT+WIOTAINIT < OK |
> AT+WIOTAINIT < OK |
初始化WIOTA资源 |
> AT+WIOTACONFIG=1,1,1,8,1,3,11223344,21456981 < OK |
> AT+WIOTACONFIG=1,1,1,8,1,3,11223344,21456981 < OK |
设置系统配置 | |
> AT+WIOTAFREQ=115 < OK |
> AT+WIOTAFREQ=115 < OK |
设置频点idx, 各终端需要设置相同频点才能相互通信 | |
> AT+WIOTAOSC=1 < OK |
> AT+WIOTAOSC=1 < OK |
有源晶体设置 | |
> AT+WIOTAUSERID=12345678 < OK |
> AT+WIOTAUSERID=87654321 < OK |
设置用户ID | |
> AT+WIOTARATE=0,0 < +WIOTARATE:0,0 < OK |
> AT+WIOTARATE=0,0 < +WIOTARATE:0,0 < OK |
设置传输速率 | |
> AT+WIOTAPOW=0,4 < OK |
> AT+WIOTAPOW=0,4 < OK |
设置功率-16dBm | |
启动 | > AT+WIOTARUN=1 < OK |
> AT+WIOTARUN=1 < OK |
启动WIOTA协议栈 |
发送广播数据 终端B→终端A |
N/A | > AT+WIOTASEND=5000,22,0 > 12345012345678901234 |
设置终端B发送参数 等待输入字符 发送字符,其中有\r\n |
< +WIOTARECV,-67,18,1,0,22,12345012345678901234 | < SEND SUCC < OK |
终端A收到数据上报,终端回应成功 | |
发送广播数据 终端A→终端B |
> AT+WIOTASEND=5000,22,0 > 12345012345678901234 |
N/A | 设置终端A发送参数 AT命令回应上报 等待输入字符 发送字符,其中有\r\n |
< SEND SUCC < OK |
< +WIOTARECV,-61,19,1,0,22,12345012345678901234 | 基站发送成功提示,终端收到数据上报 | |
发送单播数据 终端B→终端A |
N/A | > AT+WIOTASEND=5000,22,12345678 > 12345012345678901234 |
设置终端B发送参数 等待输入字符 发送字符,其中有\r\n |
< +WIOTARECV,-61,18,1,0,22,12345012345678901234 | < SEND SUCC < OK |
终端A收到数据上报,终端回应成功 | |
发送单播数据 终端A→终端B |
> AT+WIOTASEND=5000,22,87654321 > 12345012345678901234 |
N/A | 设置终端A发送参数 AT命令回应上报 等待输入字符 发送字符,其中有\r\n |
< SEND SUCC < OK |
< +WIOTARECV,-60,17,0,0,22,12345012345678901234 | 基站发送成功提示,终端收到数据上报 | |
关闭 | > AT+WIOTARUN=0 < OK |
> AT+WIOTARUN=0 < OK |
退出协议栈,回收WIOTA资源 |