为什么在向 ESP8266 发送 Reset 后需要更改波特率?

Why do I need to change the Baudrate after I send a Reset to the ESP8266?

所以我已经成功地将 Esp8266 连接到 Arduino Due。如果我选择波特率为 74880,我可以通过串行监视器与它通信。然后所有的命令都正确地到达它并且可以正确地读回。然而,当我发送重新启动 Esp8266 的命令 AT+RST 时,我无法再与它通信,需要以 115200 的波特率重新打开串行连接。每次我将新代码加载到Arduino 或当我关闭 Esp8266 时。

知道这种行为的来源吗?

为了在重置后保持 UART 波特率,您应该使用 AT+UART_DEF

来自AT instruction :

  1. AT+UART_DEF – default UART configuration This command sets the UART configuration and save it to flash. It is stored as the default parameter and will also be used as the default baudrate henceforth.

这里是关于这种行为的起源的解释:

74880 Bd 的波特率是 ESP 的 'native' 发送调试消息的波特率 自动 由系统本身在引导期间 生成,以防万一26 MHz 而不是 40 MHz crystal 在板上使用 - 正如我们所见,大多数情况下

使用 40 MHz crystal 时,波特率符合预期 (115200),但使用 26 MHz crystal 时,波特率为 115200 * 26/40 = 74880

稍后在引导加载程序结束后以其他方式控制波特率,这就是为什么您有两个不同的波特率 - 第一个是默认波特率 (74880),第二个是稍后激活的波特率(您可以设置的波特率) .

我通常将波特率设置为 74880,这样我既可以看到自动生成的消息,也可以看到我从代码发送的消息。