我有一个Nucleo F103RB和一个Sparkfun ESP8266。
我想通过Nucleo向ESP8266发送AT指令。
我使用的接线:
TX => D8
RX => D2
GND => GND
3V3 => 3V3
我之所以使用Serial1的D8
和D2
是因为D0
和D1
引脚在默认情况下不可用,因为它们由STLink虚拟通信端口使用。我还尝试使用D10
代替D8
,并将RST
放在3V3
上,并将TX
和RX
倒置
这是我在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模块不响应any AT command available to the factory firmware。无论esp.readable()
返回false,esp.printf("AT+RST\r\n");
均不执行任何操作。
该板是全新的,并且LED可以正常工作。
答案 0 :(得分:0)
连接ESP模块like this-将CH_PD也设置为高电平。之后,您可以使用SerialPassthrough来验证模块是否正常工作(将两者的波特率都设置为115,200)。
还可以选择将模块的RESET引脚连接到数字引脚。有助于重置ESP模块(将其拉低,然后拉高以进行重置)。
答案 1 :(得分:0)
回答我自己的问题...
与您在mbed在内的一些文档中可能会在网上找到的相反,使用每字符直通字符将不起作用,因为该模块将逐个解释每个字符。使用puts
代替putc
解决了我的问题。