#include "uart_component.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include // 初始化 ESP32 → RP2040 的 UART 通信 // 波特率 115200,8 数据位,无校验,1 停止位,无流控 void uart_init_component() { 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_DISABLE, }; uart_param_config(UART_PORT_NUM, &uart_config); // GPIO17=TX(发送到 RP2040 的 GP5/RX),GPIO18=RX(接收 RP2040 的 GP4/TX) uart_set_pin(UART_PORT_NUM, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); uart_driver_install(UART_PORT_NUM, BUF_SIZE, 0, 0, NULL, 0); } // 发送状态字符串给 RP2040,末尾自动添加 \r\n // RP2040 的 main.py 通过 coms.esp_read() 按 \n 分割解析 // 支持的状态字符串:idle / listening / speaking / thinking / neutral / happy 等 void uart_send_string(const char* str) { uart_write_bytes(UART_PORT_NUM, str, strlen(str)); uart_write_bytes(UART_PORT_NUM, "\r\n", 2); } // 发送说话开始信号(预留接口,RP2040 当前未使用) void uart_signal_start() { uart_send_string("[SPEAK_START]\n"); } // 发送说话停止信号(预留接口,RP2040 当前未使用) void uart_signal_stop() { uart_send_string("[SPEAK_STOP]\n"); }