第2章 UART设备驱动开发
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)也常被称为串口。UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。UART是在应用程序开发过程中使用频率最高的数据总线。在嵌入式设计中,UART常用于主机与辅助设备通信,如嵌入式设备与外接模块(Wi-Fi、蓝牙模块等)的通信,嵌入式设备与PC监视器的通信,或用于两个嵌入式设备之间的通信。
UART串口属于字符设备的一种,它的硬件连接也比较简单,只要两根传输线就可以实现双向通信:一根线(TX)发送数据,另一根线(RX)接收数据。
UART串口通信有几个重要的参数,分别是波特率、起始位、数据位、停止位和奇偶检验位,对于两个使用UART串口通信的端口,这些参数必须匹配,否则通信将无法正常完成。UART串口传输的数据格式如图2-1所示。
图2-1 UART串口传输的数据格式
从图2-1中可以看出,数据格式包含起始位、数据位、奇偶校验位、停止位。
对UART串口通信参数的解释如下。
❏起始位:表示数据传输的开始,电平逻辑为“0”。
❏数据位:数据位通常为8bit的数据(一个字节),但也可以是其他大小,例如5bit、6bit、7bit,表示传输数据的位数。
❏奇偶校验位:用于接收方对接收到的数据进行校验,校验一个二进制数中“1”的个数为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性,使用时也可以不需要此位。
❏停止位:表示一帧数据的结束,电平逻辑为“1”。
❏波特率:串口通信时的速率,它用单位时间内传输的二进制代码的有效位数来表示,其单位为bit/s。常见的波特率值有4800、9600、14400、38400、115200等,数值越大数据传输越快,波特率为115200表示每秒传输115200位数据。
本章内容基于UART v2.0版本的UART框架和驱动进行讲解,涵盖UART层级结构和驱动开发步骤、创建并操作UART设备、处理串口中断、增加串口DMA模式,以及驱动配置与验证。