认识 UART 通用非同步收发器

在创客、自造者领域经常会听到一个词叫USB-to-UART(USB转UART),USB就是大家熟知的USB接口、USB介面,但UART是什么呢?这其实是有渊源历史的。

认识 UART 通用非同步收发器

USB to UART connector

UART全称是Universal Asynchronous Receiver/Transmitter,这个词中的第一个关键是Asynchronous(非同步),相对于这个词的是Synchronous(同步)。

所谓同步,其实是介面中的资料传输线路,都依据同一条时脉线路的信号来动作,例如I2C介面、SPI介面,而所谓的非同步,就是每条资料传输线路有自己的传输步调,不倚赖独立的时脉线路,或根本没有独立的时脉线路,通常是将时脉信号埋藏在自己的传输封包中,规律性的每隔一段时间发出。

同步传输有I2C、SPI等,而非同步传输的介面也有很多,例如RS-232、RS-422、RS-485等,不同的非同步传输介面有不同的取向,例如RS-232追求实现方式简单低廉,RS-422追求较长距离的传输,RS-485追求较多的装置连接数目等。

由于RS-232/422/485等的传输本质相同,因此微控制器芯片商想出一个方式,在微控制器上只提供多种非同步传输的共通本质收发能力,而不同介面的差异则由不同的外部电路与软件程序来实现。

如此,一个收发器电路可以规划成RS-232,可以规划成RS-422,也可以规划成RS-485等,完全由取得微控器芯片的电子工程师来决定,不过同时间一个收发器电路只能扮演三者其一,无法三者兼备,也因为可以规划成多种非同步传输介面,所以称为Universal。

认识 UART 通用非同步收发器

RS232连接埠

在上述的多种非同步串列传输介面中,其实个人电脑也取用其一,即取用了RS-232,在USB介面还没出现前,个人电脑是用RS-232介面连接鼠标或数据机的。RS-232的好处是简单便宜,但传输率不高(早期最快为115.2kbps),且一个RS-232介面只能连接一个装置,不像RS-422、RS-485可以同时连接多个装置。

所以,一部个人电脑通常有两个RS-232介面(也称为COM埠,即通讯Communication;或称串列埠Serial Port,因为当时的印表机埠为并列传输埠,串列成为一个相对词),一个拿来接鼠标,另一个空着不用,或空着的那个用来接数据机。

但是,USB介面发创后,个人电脑逐渐只提供USB埠,而废除COM埠,但Arduino上的微控制器晶片没有USB介面,只有UART介面(规划成RS-232的一对一连接),因此个人电脑理论上无法连接Arduino。

为了让PC能跟Arduino通讯传输,因此Arduino开发板上设置一个USB-to-UART芯片,该芯片可以把USB传输翻译成UART传输,同时也能反向翻译,使Arduino晶片能跟PC连通。

认识 UART 通用非同步收发器

Arduino Pro通过USB to UART介面来对外连结或供电。

有了这个介面转译芯片后,再搭配上驱动程序,即可让Windows将外接装置认定成一个串列埠装置,而Windows上原本支持COM埠的软件(例如PuTTY),能够用原本对COM埠的传输方式传输,但实际上却转成USB协定方式传输,一路传到USB-to-UART芯片上时,才转成原本的UART传输,并送入微控制器芯片内,反之亦然。

所以,有时候USB-to-UART也称为USB-to-COM,Windows中的设备管理员也是显示COM埠,例如COM5、COM6等(用软件模拟出的串列埠,硬件本质是USB),另外也有人称为USB-to-TTL,其实也是类似意思,但TTL是指Transistor–Transistor Logic,是一种0、1逻辑信号准位的规范,严格而论在此用这个词不太妥当,但也已约定成俗而惯用。

最后一提的是,有的微控制器芯片也允许规划成同步与非同步收发电路,如此就称为USART,S即同步,A则为前述的非同步,但同样的,同一时间只能选择同步或非同步其一,不能同时启用。

当然,有的芯片同时有2个或2个以上的UART,就可以同时各别规划、同时各别运用。


分享到:


相關文章: