UART俗称串口,是Universal Asynchronous Receiver/Transmitter(通用异步收发器)缩写。是常用的芯片与PC间,芯片间低速通信接口。UART是一种定义在数据链路层的通信协议,比较容易会和定义在物理层的RS232等电气协议混淆。这俩协议之间实际上并无包含关系,只是通常使用的串口是指满足UART通信协议且物理连接满足RS232电气特性的一种通讯方式。
如表1所示,UART通信协议显著特点就是无需时钟信号,仅需两根线即可完成全双工通信(此处不讨论带流控的4线情形)。
表1 UART接口信号
【UART帧结构】
图1 UART数据格式
图1为UART帧结构,UART帧由1bit起始位,5~9比特数据位,0~1bit奇偶校验位,1~2比特停止位组成。无数据帧发送时,总线空闲时发送空闲位。各域详细描述如下:
空闲位:多bit高电平,表征总线处于空闲状态。
起始位:1bit低电平,表征总线开始传输。在空闲状态时,侦测到1bit低电平则认为帧起始位。
数据位:5~8bit数据。数据按照LSB(低比特宣传)的方式发送。由于ASCII码位宽为8bit,因此通常数据位设置为8比特。
检验位:根据可配置可分为五种模式。
表2 UART Parity模式
停止位:帧结束标识。位宽可配置为1bit,1.5bit,2bit 3种情形。
波特率:数据传输速率使用波特率表示,单位bps(bits per second)。可配置选择有8种标准波特率,分别为1200,2400,4800,9600,19200,38400,57600,115200。比特宽度=(1/波特率)。如9600bps,比特宽度为1/9600≈104.17us。
由于UART传输机制中仅定义了数据帧,没有定义控制帧,因此上述描述中提到的可配置部分,通信双方需要提前配置一致方可进行通信。
【UART传输实例】
图2为UART接口传输Hi字符实例。UART在传递字符时,采用字符的ASCII作为编码方式。’H’字符ASCII码为0x48,’i’字符ASCII码为0x69
图2 UART传递“Hi”字符实例
【UART典型外围电路】
图3 UART典型外围电路
图3为UART应用的典型外围电路。通常从芯片输出的UART信号为CMOS电平(如本例中的3.3v),为了和PC进行连接一般需要将CMOS电平转换为RS232规定的电平标准,图中SP232E芯片就是该转换芯片,DB9为RS232规定的一种连接器规格,在UART应用时仅需要链接2/3/5PIN脚即可。硬件设计时需要注意,UART_RX方向最好预留上拉电阻位置,若接收方IO无弱上拉功能,则需要在板级进行弱上拉,以确保任何场景下能获得可靠的空闲状态。
【后记】
UART作为整个系列首个和大家探讨的数字接口,主要是由于其功能简单且应用广泛。而且大部分SOC芯片均选择通过UART作为Debug接口。芯片回片时,第一次启动通过串口打印出来的字符,像极了一颗新生命在说Hello world,那种感觉估计也只有同行才能懂。
UART在业界有名的几家IP供应商中都有成熟IP可以选用,且大部分半卖半送十分便宜。如果你胆子够大,甚至可以直接从网上获取开源代码使用。作为一名芯片爱好者和从业者,万事溯源是最基本的职业素养。然而遗憾的是,截止本文完成时,仍未找到有关UART通信协议详细起源,以及协议具体维护组织,大致推断可能和几篇美国专利有关,如有了解的同学忘留言告知。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』