从 STM32F401 MCU 向 ESP8266 发送数据并从 ESP8266 向 MCU 获取响应

Posted

技术标签:

【中文标题】从 STM32F401 MCU 向 ESP8266 发送数据并从 ESP8266 向 MCU 获取响应【英文标题】:Sending data from STM32F401 MCU to ESP8266 and getting response from ESP8266 to MCU 【发布时间】:2016-07-01 00:22:24 【问题描述】:

我正在开发 STM32f401 Nucleo 板和 ESP8266 wifi 模块。我正在使用 Eclipse gcc-arm 工具链和 cubeMx 来生成代码。我可以通过 USART/UART DMA 完美传输和接收数据。

现在我被 ESP8266 困住了。我无法从 MCU 向 ESP 发送数据,也没有从 ESP 到 MCU 的响应。我已经测试了ESP模块的通信,我可以通过USB使用AT命令连接到wifi,也可以通过socket连接在web中接收数据。

我用 PA9/PA10 配置了 USART1_TX/USART1_RX

提前致谢。

【问题讨论】:

【参考方案1】:

我不是专家,但我会尽力帮助你。

您使用哪种波特率?是否与 ESP8266 文档一致?

检查电源和连接。

因此,请记住 AT 命令是区分大小写的(它们必须只用大写字母书写)并且它们必须以回车和换行结束,因此是“/r/n”。

【讨论】:

波特率为#115200。我的问题是我可以发送 AT 命令并获得响应,但无法清除缓冲区【参考方案2】:

首先检查波特率是正确的

那么你在 tx/rx 方向都使用 dma 吗? 对于 dma rx 请注意,只有在填充完整缓冲区时才会调用“完成”回调。 如果您需要在结束 "\n" "\n" 时“中断”接收,那么您可以一次使用中断 rx 方法 oen hatr 并在它到达回调时检查它,继续询问一个字节直到未完成. 或者,使用 dma 继续轮询 dma 计数并分析当前 rx 缓冲区中的某些 \r \n。完成后中止/停止 dma。

【讨论】:

以上是关于从 STM32F401 MCU 向 ESP8266 发送数据并从 ESP8266 向 MCU 获取响应的主要内容,如果未能解决你的问题,请参考以下文章

基于STM32F的ESP8266天气时钟--------MCU获取时间及显示(完结)

基于STM32F的ESP8266天气时钟--------MCU获取时间及显示(完结)

基于STM32F的ESP8266天气时钟--------MCU获取时间及显示(完结)

STM32+ESP8266配置

基于STM32的ESP8266天气时钟--------MCU获取天气数据

基于STM32的ESP8266天气时钟--------MCU获取天气数据