esp-at 现在是合并了 esp32 和 esp8266 的全新仓库, 注意 at 指令集核心部分并不开源。
查看芯片信息可以用 esptool 的 esptool -p /dev/ttyS5 flash_id ,可以看到芯片类型和 flash 大小。
esp-at 资源链接
编译流程和方法
没有考虑过给没经验的看,但怎么说呢,我尽量留存相关操作指令吧。
配置好 esp8266 的编译工具链 setup-toolchain。
- 自行安装 python 和 pip 工具。
git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK
export IDF_PATH=~/esp/ESP8266_RTOS_SDK
python -m pip install --user -r $IDF_PATH/requirements.txt
- Toolchain 配置文档 (Windows 就算了,最差也是用 WSL 的 ubuntu,配置要到位喔 )
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-serial
tar -xzf ~/Downloads/xtensa-lx106-elf-linux64-1.22.0-92-g8facf4c-5.2.0.tar.gz
export PATH="$PATH:$HOME/xtensa-lx106-elf/bin"
- 注意开放串口的权限 Permission issues /dev/ttyUSB0 ,如果你在用 WSL 的就是注意 COM5 对应 /dev/ttyS5 。
接着准备 esp-at 项目,注意看 ESP_AT_Get_Started.md#platform-esp8266 的内容。
- git clone --recursive https://github.com/espressif/esp-at.git
- 修改 makefile 的内容,设置为 esp8266 的配置,则如下。
export ESP_AT_PROJECT_PLATFORM ?= PLATFORM_ESP8266 export ESP_AT_MODULE_NAME ?= WROOM-02
- 在esp-at 目录下执行 make menuconfig ,会帮你拉取 esp-idf (esp8266) 和自动检查是否 git submodule update 子模块项目。
- 然后就是正常的 make 和 make flash 了,值得注意的是可以使用 make flash SILENCE=1 减少固件大小。
最后,当你编译成功烧写进去后,如果发现没有输入 AT 没有返回 ok ,但有启动信息,接着什么也没有出现,则是 AT 交互口的设置问题。
因为默认的 AT 交互串口是用
# Hardware Introduction The ESP8266 WROOM 02 Board sends AT commands through UART0 by default. - GPIO13 is RXD - GPIO15 is TXD - GPIO1 is RTS - GPIO3 is CTS The debug log will output through UART1 by default, which TXD0 is GPIO2, but user can change it in menuconfig if needed. - make menuconfig --> Component config --> ESP8266-specific --> UART for console output
如果按 readme 所述应该是可以在 make menuconfig 修改掉的,但实际上应该是不太行,我没成功。
所以直接改代码,搜索代码 CONFIG_IDF_TARGET_ESP8266 修改成如下配置就输出到烧写的默认串口 0 上。
#define CONFIG_AT_UART_PORT_TX_PIN_DEFAULT 1 #define CONFIG_AT_UART_PORT_RX_PIN_DEFAULT 3 #define CONFIG_AT_UART_PORT_CTS_PIN_DEFAULT 13 #define CONFIG_AT_UART_PORT_RTS_PIN_DEFAULT 15 #ifndef CONFIG_AT_UART_PORT #define CONFIG_AT_UART_PORT UART_NUM_0
其实就是单独的修改引脚匹配一下而已。
特殊的用途和注意事项
如果你和我一样使用的是 esp8285 ,实际上它属于 esp8266 ex 版本,其 flash 只有 1M ,那么你需要修改分区表为 Partition Table (Single factory app, no OTA) 单例应用,关掉 Custom partition 的自定义内容。
这样你将会丢失一些功能的存储信息,因为它原本存储的自定义分区已经撤销了,但内置的一些指令还存在,如串口和 wifi 的一些信息会存储在 nvs 中,这点看分区表可知。
关于默认的串口波特率修改,可以直接在 app_main.c 的底下末尾进行 at_custom_init(); 不过我是直接在最后 uart_set_baudrate(UART_NUM_0, 460800); 这意味着你直接就操作了 esp8266 ,与 AT 指令无关。
大概就这些内容了吧,如果有想知道的,可以留言蟹蟹。
来源:https://www.cnblogs.com/juwan/p/12339995.html