4. UART_echo¶
4.1. 总览¶
本示例主要介绍通过UART1将收到的数据回传给发送方的过程。
4.2. 准备及使用步骤¶
使用之前需要准备一个
USB转TTL串口线,并配置SDK目录下bl_iot_sdk/tools/flash_tool/bl602/device_tree/bl_factory_params_evb_40M.dts文件中的uart,具体配置可以参考本例。
uart {
    #address-cells = <1>;
    #size-cells = <1>;
    uart@4000A000 {
        status = "okay";
        id = <0>;
        compatible = "bl602_uart";
        path = "/dev/ttyS0";
        baudrate = <2000000>;
        pin {
            rx = <7>;
            tx = <16>;
        };
        feature {
            tx = "okay";
            rx = "okay";
            cts = "disable";
            rts = "disable";
        };
    };
    uart@4000A100 {
        status = "okay";
        id = <1>;
        compatible = "bl602_uart";
        path = "/dev/ttyS1";
        baudrate = <115200>;
        pin {
            rx = <3>;
            tx = <4>;
        };
        feature {
            tx = "okay";
            rx = "okay";
            cts = "disable";
            rts = "disable";
        };
    };
};
使用步骤:
将板子的
gpio3和gpio4和GND分别与USB转TTL串口线的TXD、RXD、GND分别连接起来;编译
customer_app/sdk_app_uart_echo工程并下载工程;打开一个串口终端窗口A(波特率为115200,用于接收和发送uart消息),打开另一个串口终端窗口B(波特率为2000000,用于打印log)。板子上电可以看到窗口A接收到
1234567890abcdefg,窗口B打印的log 停止在send case处,在A窗口中输入1234567890abcdefg(没有回显)可以在B串口看到recv case和end的消息,此时说明演示成功。
4.3. 应用实例¶
调用
aos_write()接口通过UART1给终端发送数据,并等待终端返回接收到的数据,如接收与发送的数据一致,则log口将打印UART1中收发的消息内容。
aos_write(fd, send_recv_log, strlen(send_recv_log));
log_step(ci_table_step_send);
while (1) {
    length = aos_read(fd, buf_recv, strlen(send_recv_log));
    if (length != strlen(send_recv_log)) {
        continue;
    }
    if (memcmp(buf_recv, send_recv_log, strlen(send_recv_log)) == 0) {
        printf("recvbuff:%s\r\n", send_recv_log);
        log_step(ci_table_step_recv);
        break;
    }
    vTaskDelay(10);
}
log_step(ci_table_step_end);
在
customer_app/sdk_app_uart_echo/sdk_app_uart_echo/main.c中static void aos_loop_proc(void *pvParameters)函数里调用ci_loop_proc()函数创建uart_echo的任务。