ofccw 2019-08-08 17:01 采纳率: 0%
浏览 1471

关于ESP32外接串口通讯测试问题,求大神指点

ESP新手一枚,写了一段串口代码如下:

const int uart_num = UART_NUM_0;
void uart_init(void)
{
    //串口配置结构体
    uart_config_t uart_config = {
        .baud_rate = 115200,
        .data_bits = UART_DATA_8_BITS,
        .parity = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_CTS_RTS,
        .rx_flow_ctrl_thresh = 122,
    };

    printf("!!!!!!!!!!!!!!\n");
    ESP_ERROR_CHECK(uart_param_config(uart_num, &uart_config)); //设置串口

    //IO映射-> T:IO16  R:IO17
    printf("@@@@@@@@@@@@@@@@\n");
    ESP_ERROR_CHECK(uart_set_pin(uart_num, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));

    //注册串口服务即使能+设置缓存区大小
    printf("###############\n");
    ESP_ERROR_CHECK(uart_driver_install(uart_num, RX_BUF_SIZE * 2, TX_BUF_SIZE * 2, 0, NULL, 0));
}

void uart_rx_task()
{
    static const char *RX_TASK_TAG = "RX_TASK";
    uint8_t* data = (uint8_t*) malloc(RX_BUF_SIZE+1);//分配内存,用于串口接收

    while (1) {

        //获取串口1接收的数据

        const int rxBytes = uart_read_bytes(uart_num, data, RX_BUF_SIZE, 10 / portTICK_RATE_MS);

        if (rxBytes > 0) {
            data[rxBytes] = 0;//在串口接收的数据增加结束符
            ESP_LOGI(RX_TASK_TAG, "Read %d bytes: '%s'", rxBytes, data);
                        ESP_LOG_BUFFER_HEXDUMP(RX_TASK_TAG, data, rxBytes, ESP_LOG_INFO);
             //将接收到的数据发出去

            uart_write_bytes(uart_num, (char *)data, rxBytes);

        }

    }

    free(data);//释放申请的内存

}

烧写后mointor打印如下:图片说明monitor中没有错误信息,我认为串口配置正确,然后想测试串口收发数据是否正常,根据开发文档提示,将RX,TX,GND与另外一个UAB转串口进行链接,连线图:
使能UART,将RXD,TXD与RXD0,TXD0跳帽链接

重新给开发板上电,monitor打印如下图片说明,各位大神帮我看看,问题出在哪里了,在这里谢过了

  • 写回答

1条回答

  • dabocaiqq 2019-08-08 23:48
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大