0

我有一个Nucleo F103RB和一个Sparkfun ESP8266

我想通过 Nucleo 向 ESP8266 发送 AT 命令。

我使用的接线:

TX  => D8
RX  => D2
GND => GND
3V3 => 3V3

我使用了 Serial1 的 D8和,因为默认情况下,和引脚不可用,因为它们被 STLink 虚拟通信端口使用。我也尝试过,而不是穿上和倒置和D2D0D1D10D8RST3V3TXRX

这是我在 mbed 上的代码:

#include "mbed.h"

Serial pc (D1, D0);  
Serial esp(D8, D2);

int main() 
{
    pc.baud(115200);
    esp.baud(115200);
    wait(0.1);
    pc.printf("start\r\n");
    esp.printf("AT+RST\r\n");
    while(true) {
        if(pc.readable()) {
            char c = pc.getc();
            pc.putc(c); //local echo
            esp.putc(c);
        }
        if(esp.readable()) {
            pc.printf("reading esp");
            char c = esp.getc();
            pc.putc(c);
        }
    }
}

我使用Serial而不是RawSerial因为RawSerial根本不适合我,我不知道为什么。

ESP8266 模块不响应工厂固件可用的任何 AT 命令esp.readable()无论如何都返回 false 并且esp.printf("AT+RST\r\n");不做任何事情。

电路板是全新的,LED 工作正常。

4

2 回答 2

0

回答我自己的问题...

与您在包括 mbed 在内的多个文档中在线找到的内容相反,使用每个字符传递的字符将不起作用,因为该模块将逐个解释每个字符。使用puts而不是putc解决了我的问题。

于 2018-06-21T08:44:06.467 回答
0

像这样连接 ESP 模块- 所以 CH_PD 也为高电平。在您可以使用SerialPassthrough验证模块是否工作之后(将两者的波特率设置为 115,200)。

也可选择将模块的 RESET 引脚连接到数字引脚。用于重置 ESP 模块(拉低,然后拉高以重置)。

于 2018-06-21T05:02:32.823 回答