所以我成功地将 Esp8266 连接到 Arduino Due。如果我选择波特率为 74880,我可以通过串行监视器与它通信。然后所有命令都正确到达它并且可以正确读回。但是,当我发送AT+RST
重启 Esp8266 的命令时,我无法再与它通信,需要以 115200 的波特率重新打开串行连接。每次我将新代码加载到 Arduino 或电源时,我都必须重复此操作关闭 Esp8266。
这种行为来自哪里的任何想法?
所以我成功地将 Esp8266 连接到 Arduino Due。如果我选择波特率为 74880,我可以通过串行监视器与它通信。然后所有命令都正确到达它并且可以正确读回。但是,当我发送AT+RST
重启 Esp8266 的命令时,我无法再与它通信,需要以 115200 的波特率重新打开串行连接。每次我将新代码加载到 Arduino 或电源时,我都必须重复此操作关闭 Esp8266。
这种行为来自哪里的任何想法?
在这里,您可以解释这种行为的根源在哪里:
74880 Bd 的波特率是 ESP 的“本机”波特率,用于发送系统自身在启动期间自动生成的调试消息,以防板载使用 26 MHz 而不是 40 MHz 晶体- 正如我们所见,大多数情况就是这样.
使用 40 MHz 晶体,波特率将与预期的一样(115200),但使用 26 MHz 晶体,波特率是115200 * 26/40 = 74880
。
稍后在引导加载程序结束后,波特率以其他方式控制,这就是为什么你有两个不同的波特率 - 第一个是默认波特率(74880),第二个是稍后激活的波特率(你可以设置的那个)。
我通常将波特率设置为 74880,这样我就可以看到自动生成的消息和我从代码发送的消息。
为了在重置后将 UART 波特率设置为持久,您应该使用AT+UART_DEF
.
从AT 指令:
- AT+UART_DEF – 默认 UART 配置 该命令设置 UART 配置并将其保存到闪存。它作为默认参数存储,以后也将用作默认波特率。