2016-11-20 156 views
0

因此,我成功将Esp8266附加到了Arduino Due。如果我选择波特率为74880,那么我可以通过串行监视器与它进行通信。然后,所有命令都能正确识别,并且可以正确读回。但是,当我发送重新启动Esp8266的命令AT+RST时,我不能再与它通信,并需要重新打开波特率为115200的串行连接。每当我加载新的代码到Arduino,或者当我关闭Esp8266的电源。为什么在向ESP8266发送复位后需要更改波特率?

此行为从何而来?

回答

2

在这里,你是在哪里有这样的行为的起源的解释:

波特率74880的Bd是发送调试消息ESP的“天然”的波特率由系统本身自动产生在开机过程中遇有26 MHz而不是40 MHz的晶振时使用板上 - 而且我们可以看到,大多数认为的情况。

对于40 MHz晶振,波特率将与预期的一样(115200),但使用26 MHz晶振代替波特率为115200 * 26/40 = 74880

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

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

+0

这并不能解释为什么AT固件(在引导加载程序后运行)似乎也以74880波特进行通信。 – cranphin

+0

是的,但我不需要改变它其他的东西,只是它可以在整个74880运行,不是吗?然而atm我需要打开与74880的初始连接,重置ESP,然后我需要连接115200波特率 – Kev1n91

+1

@cranphin - 这是因为所有的调试消息都由ROM中包含的代码控制,所以闪存固件不能更改硬编码的时序。 –

0

为了在复位后设置UART波特率持久性,您应该使用AT+UART_DEF

AT instruction

  • AT + UART_DEF - 默认UART配置该命令设置UART配置并保存到闪烁。它被存储为默认的 参数,并且也将被用作此后的默认波特率。
  • +0

    这可能会解决一个问题,但它并不回答实际问题:)这是**为什么** ESP的行为如上所述?如果我正确读取它,则在通电后运行AT固件74880波特率,然后在复位后以115200波特率运行。 – cranphin

    +0

    @cranphin:这篇文章说他选择波特率74880,并且通信正常,重置然后使用波特率74880进行通信不起作用,但使用波特率115200工作。此答案建议以持久方式将波特率配置为74880以便在重启。为什么这不能回答这个问题? – mpromonet

    +0

    他没有要求解决方案(虽然他可能会对它感到高兴),但为什么会出现这种情况:) – cranphin