UART

本章将会向大家介绍LuatOS的UART功能。将会实现使用Air101开发板循环向UART1发送数据并将UART1接收的数据在日志中打印。

简介

UART(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器,UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。是在应用程序开发过程中使用频率最高的数据总线。

UART 串口的特点是将数据一位一位地顺序传送,只要 2 根传输线就可以实现双向通信,一根线发送数据的同时用另一根线接收数据。UART 串口通信有几个重要的参数,分别是波特率、起始位、数据位、停止位和奇偶检验位,对于两个使用 UART 串口通信的端口,这些参数必须匹配,否则通信将无法正常完成。

硬件准备

Air101开发板一块,USB转TTL模块一块

硬件连接图

UART

如图将TTL的TX、RX、GND分别连接Air101的U1_RX、U1_TX、GND。

注意TTL电平是3.3V, 不能直接与RS232/RS485连接, 必须使用额外的转换芯片.

软件使用

接口文档可参考:uart库

代码介绍

local uartid = 1--串口id
--初始化
local result = uart.setup(
    uartid,--串口id
    115200,--波特率
    8,--数据位
    1--停止位
)
--循环发数据
sys.timerLoopStart(uart.write,1000,uartid,"test")--定时器循环向串口1发送数据
uart.on(uartid, "receive", function(id, len)
    log.info("uart", "receive", id, len, uart.read(uartid, len))
    -- 若打印不可见字符,或者叫"二进制数据", 可以把数据转为HEX值显示
    -- log.info("uart", "receive", id, len, uart.read(uartid, len):toHex())
end)--注册串口1接收事件回调
uart.on(uartid, "sent", function(id)
    log.info("uart", "sent", id)
end)--注册串口1发送事件回调