【EG800Z-CN】UART通信示例
thumbnail

【EG800Z-CN】UART通信示例

本案例使用移远通信EG800Z-CN开发板和UniRTOS,通过调用UART相关功能函数,实现了一个串口通信回显功能,串口工具向开发板发送的任何内容,开发板都会发送回给串口工具,达到“回显”效果。这是一个基础的UART通信协议应用,适合新手和初学者了解UART的应用。

  • UART通信

项目概述

本案例使用移远通信EG800Z-CN开发板和UniRTOS,通过调用UART相关功能函数,实现了一个串口通信回显功能,串口工具向开发板发送的任何内容,开发板都会发送回给串口工具,达到“回显”效果。这是一个基础的UART通信协议应用,适合新手和初学者了解UART的应用。

功能特性

基于UART的实时数据回显
  • 全双工实时通信:利用通用异步收发器(UART)实现数据的同步接收与发送,确保通信链路畅通无阻。
  • 精准字节级回显:对接收到的每一个字节数据进行即时、原样返回,实现 1:1 的精确回显,便于通信链路验证与调试。
  • 支持连续数据流:能够稳定处理来自上位机或外部设备的连续、高速数据流,并保持低延迟的回显响应。

开发准备

硬件要求

软件要求

快速上手

下载项目

示例代码位于UniRTOS官方创客仓库,点此访问下载

添加项目到UniRTOS SDK

SDK新增Demo,固件编译和烧录请参考UniRTOS板块的快速启动

硬件连接

  1. 使用杜邦线连接USB-TTL模块和开发板的UART0,VCC->3V3 , GND->GND , TX-> RX0 , RX->TX0。
  2. 使用USB数据线连接开发板和电脑。

效果展示

下图为串口工具发送和接收的数据。

代码概览

示例工作流程

主要功能接口

unir_test_demo_init
  • 功能:这是整个UART演示功能的入口点。它的主要职责是创建并启动一个独立的任务(线程),让UART的具体逻辑在后台运行,而不阻塞主程序。
  • 关键操作
    • 任务创建调用qosa_task_create来创建一个名为uart_demo的新任务。这个新任务将执行unir_uart_demo_process 函数。
  • 重要性:这是用户需要在自己的应用初始化流程中调用的函数,以启动UART功能。
unir_uart_demo_process 
  • 功能:这是UART演示的核心逻辑所在。它在一个无限循环中运行,负责完成UART的所有配置、初始化和数据轮询工作。
  • 关键操作
    • 注册回调:通过qosa_uart_register_cb将回调函数注册到UNIR_TEST_UART_PORT端口。这使得系统能在特定事件发生时自动通知我们。
    • 配置通信参数设置波特率 (115200)、数据位 (8)、停止位 (1)、校验位 (无) 和流控 (无)。然后通过qosa_uart_ioctl将这些配置应用到UART端口。
    • 配置引脚复用:使用qosa_pin_set_func将硬件引脚UNIR_TEST_UART_TX_PINUNIR_TEST_UART_RX_PIN设置为UART功能,而不是普通的GPIO。
    • 打开端口:调用 qosa_uart_open(UNIR_TEST_UART_PORT) 正式打开UART端口,使其可以进行读写操作。
    • 主循环 (轮询):在while(1)循环中:
      1. 休眠:调用qosa_task_sleep_sec(1)让任务每秒检查一次,避免过度占用CPU。
      2. 检查数据:调用qosa_uart_read_available查询UART接收缓冲区是否有待读取的数据。
      3. 读取数据:如果有数据,则调用qosa_uart_read将数据读入全局缓冲区g_uart_data
      4. 回传数据:调用qosa_uart_write将刚刚读取到的数据原样发送回去(回显功能)。
      5. 清空缓冲区qosa_memse清空缓冲区,为下一次接收做准备。
  • 重要性:这个函数封装了UART从配置到使用的完整生命周期,是理解如何操作UART的关键。

常见问题

串口工具收发数据无任何反应?

检查开发板和USB-TTL模块的硬件连接,确认双方的TX连接的是另一方的RX。

沟通无界,服务无限

了解更多关于移远公司、产品和技术支持的信息。