.. _User-AT: 用户 AT 命令 ================= :link_to_translation:`en:[English]` - :ref:`AT+USERRAM `:操作用户的空闲 RAM - :ref:`AT+USEROTA `:根据指定 URL 升级固件 - :ref:`AT+USERWKMCUCFG `:设置 AT 唤醒 MCU 的配置 - :ref:`AT+USERMCUSLEEP `:MCU 指示自己睡眠状态 .. _cmd-USERRAM: :ref:`AT+USERRAM `: 操作用户的空闲 RAM ---------------------------------------------------------- 查询命令 ^^^^^^^^ **功能:** 查询用户当前可用的 RAM 大小 **命令:** :: AT+USERRAM? **响应:** :: +USERRAM: OK 设置命令 ^^^^^^^^ **功能:** 分配、读、写、擦除、释放用户 RAM 空间 **命令:** :: AT+USERRAM=,[,] **响应:** :: +USERRAM:, // 只有是读操作时,才会有这个回复 OK 参数 ^^^^ - ****: - 0:释放用户 RAM 空间 - 1:分配用户 RAM 空间 - 2:向用户 RAM 写数据 - 3:从用户 RAM 读数据 - 4:清除用户 RAM 上的数据 - ****: 分配/读/写的用户 RAM 大小 - ****: 读/写 RAM 的偏移量。默认值:0 说明 ^^^^ - 请在执行任何其他操作之前分配用户 RAM 空间。 - 当 ```` 为 ``write`` 时,系统收到此命令后先换行返回 ``>``,此时您可以输入要写的数据,数据长度应与 ```` 一致。 - 当 ```` 为 ``read`` 时并且长度大于 1024,ESP-AT 会以同样格式多次回复,每次回复最多携带 1024 字节数据,最终以 ``\r\nOK\r\n`` 结束。 示例 ^^^^ :: // 分配 1 KB 用户 RAM 空间 AT+USERRAM=1,1024 // 向 RAM 空间开始位置写入 500 字节数据 AT+USERRAM=2,500 // 从 RAM 空间偏移 100 位置读取 64 字节数据 AT+USERRAM=3,64,100 // 释放用户 RAM 空间 AT+USERRAM=0 .. _cmd-USEROTA: :ref:`AT+USEROTA `:根据指定 URL 升级固件 --------------------------------------------------------------------- ESP-AT 在运行时,通过从指定 URL 下载新固件进行升级。 设置命令 ^^^^^^^^ **功能:** 升级到 URL 指定版本的固件 **命令:** :: AT+USEROTA= **响应:** :: OK > 上述响应表示 AT 已准备好接收 URL,此时您可以输入 URL,当 AT 接收到的 URL 长度达到 ```` 后,返回: :: Recv bytes AT 输出上述信息之后,升级过程开始。如果升级完成,返回: :: OK 如果参数错误或者固件升级失败,返回: :: ERROR 参数 ^^^^ - ****:URL 长度。最大值:8192 字节 说明 ^^^^ - 您可以 `从 GitHub Actions 里下载 `_ 所需要的 OTA 固件,也可以自行 :doc:`编译 ESP-AT 工程 <../Compile_and_Develop/How_to_clone_project_and_compile_it>` 生成所需要的 OTA 固件。 - OTA 固件为 ``build/esp-at.bin``。 - 升级速度取决于网络状况。 - 如果网络条件不佳导致升级失败,AT 将返回 ``ERROR``,请等待一段时间再试。 - 不建议降级到旧版本。降到旧版本可能会出现兼容性问题和无法运行的风险。如果您坚持要降级到旧版本,请根据您的产品自行测试验证功能。 - 建议升级 AT 固件后,调用 :ref:`AT+RESTORE ` 恢复出厂设置。 - ``AT+USEROTA`` 仅支持 ``HTTP``。 - AT 输出 ``>`` 字符后,数据中的特殊字符不需要转义字符进行转义,也不需要以新行结尾 (CR-LF)。 - 请参考 :doc:`../Compile_and_Develop/How_to_implement_OTA_update` 获取更多 OTA 命令。 示例 ^^^^ :: AT+USEROTA=36 OK > Recv 36 bytes OK .. _cmd-USERWKMCUCFG: :ref:`AT+USERWKMCUCFG `:设置 AT 唤醒 MCU 的配置 --------------------------------------------------------------------- 设置命令 ^^^^^^^^ **功能:** 此命令配置 AT 如何检查 MCU 的唤醒状态,以及 AT 如何唤醒 MCU。 - 当 MCU 是醒来的状态,AT 将直接向 MCU 发送数据,不会发送唤醒信号。 - 当 MCU 是睡眠的状态,AT 准备向 MCU 主动发送数据时(主动发送的数据和 `ESP-AT 消息报告 `_ 中定义的相同),AT 会先发送唤醒信号再发送数据。MCU 被唤醒或者超时后会清除唤醒信号。 **命令:** :: AT+USERWKMCUCFG=,,,,[,] **响应:** :: OK 参数 ^^^^ - ****:启用或禁用唤醒配置。 - 0:禁用唤醒 MCU 配置 - 1:使能唤醒 MCU 配置 - ****:唤醒模式。 - 1:GPIO 唤醒 - 2:UART 唤醒 - ****:该参数的意义取决于 ```` 的值。 - 如果 ```` 是 1,```` 代表唤醒管脚 GPIO 编号。用户需要保证配置的唤醒管脚没有用作其它用途,否则需要用户做兼容性处理。 - 如果 ```` 是 2,```` 代表唤醒 UART 编号。当前只支持 1,即支持 UART1 唤醒 MCU。 - ****:该参数的意义取决于 ```` 的值。 - 如果 ```` 是 1,```` 代表唤醒电平。 - 0:低电平 - 1:高电平 - 如果 ```` 是 2,```` 代表唤醒字节。范围:[0,255]。 - ****:最长等待时间。单位:毫秒。范围:[0,60000]。该参数的意义取决于 ```` 的值。 - 如果 ```` 是 1,则在 ```` 期间内,将一直保持 ```` 电平。```` 到后,则反转 ```` 电平。 - 如果 ```` 是 2,则立即发送 ```` 字节,进入等待直到超时。 - ****:AT 检查 MCU 是否处于醒来的状态。 - Bit 0:是否开启与 :ref:`AT+USERMCUSLEEP ` 命令的关联。默认开启。即:收到 AT+USERMCUSLEEP=0 命令,指示 MCU 醒来;收到 AT+USERMCUSLEEP=1 命令,指示 MCU 睡眠。 - Bit 1:是否开启与 :ref:`AT+SLEEP=0/1/2/3 ` 命令的关联。默认禁用。即:收到 AT+SLEEP=0 命令,指示 MCU 醒来;收到 AT+SLEEP=1/2/3 命令,指示 MCU 睡眠。 - Bit 2:是否开启 ```` 超时后指示 MCU 醒来功能。默认禁用。即:禁用时,delay time 后,指示 MCU 睡眠;使能时,delay time 后,指示 MCU 醒来。 - Bit 3(暂未实现):是否开启 GPIO 指示 MCU 醒来功能。默认不支持。 说明 ^^^^ - 此命令只需要配置一次。 - 每次 AT 向 MCU 主动发送数据前,会先发送唤醒信号再进入等待,```` 时间到了之后直接发送数据。此超时会降低与 MCU 间的传输效率。 - 如果在 ```` 毫秒之前,AT 收到 ```` 里的任意唤醒事件,则立即清除唤醒状态;否则会等待 ```` 超时后,会自动清除唤醒状态。 示例 ^^^^ :: // 使能唤醒 MCU 配置。每次 AT 向 MCU 发送数据前,会先使用 Wi-Fi 模块的 GPIO18 管脚,高电平唤醒 MCU,同时保持高电平 10 秒。 AT+USERWKMCUCFG=1,1,18,1,10000,3 // 禁用唤醒 MCU 配置 AT+USERWKMCUCFG=0 .. _cmd-USERMCUSLEEP: :ref:`AT+USERMCUSLEEP `:MCU 指示自己睡眠状态 ----------------------------------------------------------- 设置命令 ^^^^^^^^ **功能:** 在 :ref:`AT+USERWKMCUCFG ` 命令的 ```` Bit 0 配置情况下,此命令才会生效。用于告知 AT 当前 MCU 的睡眠状态。 **命令:** :: AT+USERMCUSLEEP= **响应:** :: OK 参数 ^^^^ - ****: - 0:指示 MCU 醒来。 - 1:指示 MCU 睡眠。 示例 ^^^^ :: // MCU 告知 AT 当前 MCU 醒来 AT+USERMCUSLEEP=0