树莓派UART通讯简介

UART(Universal Asynchronous Receiver/Transmitter) (通用异步接收器/发送器)是一种串行通信协议,其中数据是串行传输的,即逐位传输。异步串行通讯是广泛使用的面向字节的传输。在异步串行通讯中,一次传输一个字节的数据。

异步传输运训发送方不必想接收方发送时钟信号就可以传输数据。相反,发送方和接收方事先就时序参数(timing parameters)达成一致(agree on timing parameters in advance),并且将称为 起始位 (start bits)的特殊位添加到每个字中,并用于同步发送和接收单元。

UART串行通讯协议对其数据字节使用定义的帧接口。在异步通信中的帧结构包括:

  • 起始位(START bit): 该位表示串行通信已经开始,并且这个位始终是低电平

  • 数据位包(Data bits packet): 数据位可以是5到9位的数据包。通常我们使用8位数据包,数据包总是在START bit之后发送

  • 停止位(STOP bit): 停止位通常是1到2位长度。停止为在数据包之后发送指示帧的结束。停止位始终是高电平

../../_images/1_PIC18F4550_USART_Frame_Structure.png

UART通常在树莓派上用于通过GPIO来作为控制方式,或者从串行控制台访问内核启动消息(默认启用)。

备注

我们在服务器和网络设备上,经常会使用一种串口控制台,来实现没有网络情况下访问计算机系统。特别在操作系统异常情况下,排查内核故障需要这种设备通讯。树莓派的硬件上,提供了这种关键的串行通讯技术。

激活UART

树莓派提供了一个激活 UART 的属性参数,不过激活 UART 默认会将核心频率设置为最小,以便确保稳定性。

  • /boot/usercfg.txt

    # Enable UART
    enable_uart=1
    

还有一种设置是启用 UART 同时保持处理器核心主频依然最高,不过需要注意提供足够电力,并且要确保系统冷却(风扇)。这个设置需要同时启用以下2个参数:

  • /boot/usercfg.txt

    # Enable UART
    enable_uart=1
    force_turbo=1
    

详细参考 STICKY: Pi3 UART stopped working? Read this.

参考