Skip to content

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系统资源

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资源

Back to top