UART,俗称串口,是通用异步收发器的缩写。是芯片与PC之间、芯片之间常见的低速通信接口。UART是数据链路层中定义的通信协议,很容易与RS23
UART,俗称串口,是通用异步收发器的缩写。是芯片与PC之间、芯片之间常见的低速通信接口。UART是数据链路层中定义的通信协议,很容易与RS232和物理层中定义的其他电气协议混淆。其实这两个协议之间并没有包含关系,只是常用的串口是指一种符合UART通信协议,物理连接符合RS232电气特性的通信方式。
如表1所示,UART通信协议的显著特点是只需要两根线就可以完成全双工通信,不需要时钟信号(这里不讨论带流量控制的四根线)。
表1 UART接口信号
[UART帧结构]
图1 UART数据格式
图1示出了UART帧的结构,它由1位起始位、5-9位数据、0-1位奇偶校验位和1-2位停止位组成。当没有数据帧发送时,空闲位在总线空闲时发送。每个域的详细描述如下:
Idle位:多位高电平,表示总线处于空闲状态。
起始位:1位低电平,表示总线开始传输。在空闲状态下,当检测到1位的低电平时,会考虑帧起始位。
数据位:5 ~ 8位数据。数据以LSB(低位公开)模式发送。因为ASCII码的宽度是8位,所以数据位通常设置为8位。
检查位置:根据配置可以分为五种模式。
表2 UART奇偶校验模式
停止位:帧结束标识。位宽可配置为1位、1.5位和2位。
波特率:数据传输速率用波特率来表示,单位是比特每秒。有8种标准波特率可以配置和选择,分别是1200、2400、4800、9600、19200、38400、57600和115200。位宽=(1/波特率)。如9600bps,位宽为1/9600104.17us。
因为UART传输机制中只定义了数据帧,而没有定义控制帧,所以通信双方需要事先配置好上面描述中提到的可配置部分,才能进行通信。
[UART传输示例]
图2是发送Hi字符的UART接口的例子。当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/5引脚。在硬件设计中,需要注意的是,UART_RX方向要预留上拉电阻的位置。如果接收器IO没有弱上拉功能,则需要在板级上拉,以确保任何场景下的可靠空闲状态。
[后记]
UART作为全系列的第一个数字接口,主要是因为其功能简单,应用广泛。而且大多数SOC芯片选择UART作为调试接口。芯片回到芯片,通过串口打印的字符第一次启动,很像一个新生命在说Hello world,那种感觉估计只有同行才懂。
UART在业界几个知名的IP供应商中有成熟的IP可以选择,而且大部分都很便宜。如果你足够勇敢,你甚至可以直接从网上获得开源代码。作为一个芯片爱好者和从业者,追查一切是最基本的职业素养。但遗憾的是,截至本文完成时,还没有找到UART通信协议的详细起源以及协议的具体维护机构。粗略推断,可能与几项美国专利有关。如果你知道什么,你忘了留言。
声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们