乐鑫技术交流
直播中

李玉鑫

7年用户 1277经验值
私信 关注
[问答]

使用UART1进行调试,在Ubuntu中的终端程序根本没有接收到任何数据是怎么回事?

我正在尝试使用 UART1 进行调试。

这是我到目前为止所做的:

- 将FTDI RX引脚连接到ESP8266 GPIO2
- user_init():
uart_init(BIT_RATE_115200,BIT_RATE_115200);
os_install_putc1((无效 *)uart1_write_char);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2, FUNC_U1TXD_BK);
  os_printf("Hello");

我确实uart1_write_char指向您的 uart.c 文件中的相同函数。
这是正确的吗?还是我应该自己实现?

我的问题是我在 Ubuntu 中的终端程序根本没有接收到任何数据。

我做错了什么?


回帖(1)

李涛

2024-7-11 16:22:41
根据您的描述,您已经完成了以下步骤:

1. 将FTDI RX引脚连接到ESP8266 GPIO2
2. 在user_init()函数中初始化UART1
3. 安装自定义的putc1函数
4. 配置GPIO2为UART1 TXD
5. 使用os_printf()发送"Hello"字符串

现在,让我们逐步检查可能的问题:

1. 确保您的FTDI USB转串口模块工作正常。您可以尝试将其连接到另一个设备(如Arduino)并发送数据,以确保它能够接收和发送数据。

2. 检查您的ESP8266是否正确烧录了固件。如果固件有问题,可能导致UART1无法正常工作。

3. 确保您的终端程序(如PuTTY、Minicom等)设置正确。您需要设置波特率为115200,数据位为8,停止位为1,无奇偶校验。

4. 检查您的自定义putc1函数是否正确实现。您可以参考ESP8266 SDK中的示例代码,确保您的函数正确地将数据发送到UART1。例如:

```c
void uart1_write_char(char c)
{
    WRITE_PERI_REG(UART_FIFO(UART1), c);
    while (READ_PERI_REG(UART_STATUS(UART1)) & (UART_TXFIFO_CNT << UART_TXFIFO_CNT_S)) {
        ;
    }
}
```

5. 确保您的ESP8266和FTDI模块之间的TX和RX引脚连接正确。TX连接到RX,RX连接到TX。

6. 如果您仍然无法接收数据,请尝试使用ESP8266的默认UART0(GPIO1作为TX,GPIO3作为RX)进行调试,以排除硬件问题。

7. 最后,检查您的代码中是否有其他错误或逻辑问题,可能导致UART1无法正常工作。

通过以上步骤,您应该能够找到问题所在并解决它。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分