1. UART串口简介
串口是“串行接口”的简称,即采用串行通信方式的接口。串行通信将数据字节分成一位一位的形式在一条数据线上逐个传送,其特点是通信线路简单,但传输速度较慢。
因此串口广泛应用于嵌入式、工业控制等领域中对数据传输速度要求不高的场合。本实验我们将使用FPGA开发板上的UART串口完成上位机与FPGA的通信。
串行通信分为两种方式:同步串行通信和异步串行通信。
同步串行通信需要通信双方在同一时钟的控制下,同步传输数据;
异步串行通信是指通信双方使用各自的时钟控制数据的发送和接收过程。
UART是一种采用异步串行通信方式的通用异步收发传输器(universal asynchronous receiver-transmitter),它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。
UART串口通信需要两根信号线来实现,一根用于串口发送,另外一根负责串口接收。
UART在发送或接收过程中的一帧数据由4部分组成,起始位、数据位、奇偶校验位和停止位,如图所示。
其中,起始位标志着一帧数据的开始,停止位标志着一帧数据的结束,数据位是一帧数据中的有效数据。
校验位分为奇校验和偶校验,用于检验数据在传输过程中是否出错。
奇校验时,发送方应使数据位中1的个数与校验位中1的个数之和为奇数;
接收方在接收数据时,对1的个数进行检查,若不为奇数,则说明数据在传输过程中出了差错。
同样,偶校验则检查1的个数是否为偶数。
UART通信过程中的数据格式及传输速率是可设置的,为了正确的通信,收发双方应约定并遵循同样的设置。
数据位可选择为5、6、7、8位,其中8位数据位是最常用的,在实际应用中一般都选择8位数据位;
校验位可选择奇校验、偶校验或者无校验位;
停止位可选择1位(默认),1.5或2位。
串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位是bps(位/秒),常用的波特率有9600、19200、38400、57600以及115200等。
在设置好数据格式及传输速率之后,UART负责完成数据的串并转换,而信号的传输则由外部驱动电路实现。
电信号的传输过程有着不同的电平标准和接口规范,针对异步串行通信的接口标准有RS232、RS422、RS485等,它们定义了接口不同的电气特性,如RS-232是单端输入输出,而RS-422/485为差分输入输出等。
RS232接口标准出现较早,可实现全双工工作方式,即数据发送和接收可以同时进行。
在传输距离较短时(不超过15m),RS232是串行通信最常用的接口标准,本章主要介绍针对RS-232标准的UART串口通信。
RS-232标准的串口最常见的接口类型为DB9,样式如图所示,工业控制领域中用到的工控机一般都配备多个串口,很多老式台式机也都配有串口。
但是笔记本电脑以及较新一点的台式机都没有串口,它们一般通过USB转串口线来实现与外部设备的串口通信。