Uart
通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器,是電腦硬件的一部分。它將要傳輸?shù)?a href="http://wenjunhu.com/soft/special/" target="_blank">資料在串行通信與并行通信之間加以轉(zhuǎn)換。作為把并行輸入信號(hào)轉(zhuǎn)成串行輸出信號(hào)的芯片,UART通常被集成于其他通訊接口的連結(jié)上。具體實(shí)物表現(xiàn)為獨(dú)立的模塊化芯片,或作為集成于微處理器中的周邊設(shè)備。一般是RS-232C規(guī)格的,與類似Maxim的MAX232之類的標(biāo)準(zhǔn)信號(hào)幅度變換芯片進(jìn)行搭配,作為連接外部設(shè)備的接口。在UART上追加同步方式的序列信號(hào)變換電路的產(chǎn)品,被稱為USART(Universal Synchronous Asynchronous Receiver Transmitter)。
Uart工作原理
發(fā)送接收
發(fā)送邏輯對(duì)從發(fā)送FIFO 讀取的數(shù)據(jù)執(zhí)行“并→串”轉(zhuǎn)換??刂七壿嬢敵銎鹗嘉辉谙鹊拇形涣鳎⑶腋鶕?jù)控制寄存器中已編程的配置,后面緊跟著數(shù)據(jù)位(注意:最低位 LSB 先輸出)、奇偶校驗(yàn)位和停止位。
在檢測(cè)到一個(gè)有效的起始脈沖后,接收邏輯對(duì)接收到的位流執(zhí)行“串→并”轉(zhuǎn)換。此外還會(huì)對(duì)溢出錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、幀錯(cuò)誤和線中止(line-break)錯(cuò)誤進(jìn)行檢測(cè),并將檢測(cè)到的狀態(tài)附加到被寫入接收FIFO 的數(shù)據(jù)中。
波特率產(chǎn)生
波特率除數(shù)(baud-rate divisor)是一個(gè)22 位數(shù),它由16 位整數(shù)和6 位小數(shù)組成。波特率發(fā)生器使用這兩個(gè)值組成的數(shù)字來決定位周期。通過帶有小數(shù)波特率的除法器,在足夠高的系統(tǒng)時(shí)鐘速率下,UART 可以產(chǎn)生所有標(biāo)準(zhǔn)的波特率,而誤差很小。
數(shù)據(jù)收發(fā)
發(fā)送時(shí),數(shù)據(jù)被寫入發(fā)送FIFO。如果UART 被使能,則會(huì)按照預(yù)先設(shè)置好的參數(shù)(波特率、數(shù)據(jù)位、停止位、校驗(yàn)位等)開始發(fā)送數(shù)據(jù),一直到發(fā)送FIFO 中沒有數(shù)據(jù)。一旦向發(fā)送FIFO 寫數(shù)據(jù)(如果FIFO 未空),UART 的忙標(biāo)志位BUSY 就有效,并且在發(fā)送數(shù)據(jù)期間一直保持有效。BUSY 位僅在發(fā)送FIFO 為空,且已從移位寄存器發(fā)送最后一個(gè)字符,包括停止位時(shí)才變無效。即 UART 不再使能,它也可以指示忙狀態(tài)。BUSY 位的相關(guān)庫(kù)函數(shù)是UARTBusy( )
在UART 接收器空閑時(shí),如果數(shù)據(jù)輸入變成“低電平”,即接收到了起始位,則接收計(jì)數(shù)器開始運(yùn)行,并且數(shù)據(jù)在Baud16 的第8 個(gè)周期被采樣。如果Rx 在Baud16 的第8 周期仍然為低電平,則起始位有效,否則會(huì)被認(rèn)為是錯(cuò)誤的起始位并將其忽略。
如果起始位有效,則根據(jù)數(shù)據(jù)字符被編程的長(zhǎng)度,在 Baud16 的每第 16 個(gè)周期(即一個(gè)位周期之后)對(duì)連續(xù)的數(shù)據(jù)位進(jìn)行采樣。如果奇偶校驗(yàn)?zāi)J绞鼓?,則還會(huì)檢測(cè)奇偶校驗(yàn)位。
最后,如果Rx 為高電平,則有效的停止位被確認(rèn),否則發(fā)生幀錯(cuò)誤。當(dāng)接收到一個(gè)完整的字符時(shí),將數(shù)據(jù)存放在接收FIFO 中。
RS232
個(gè)人計(jì)算機(jī)上的通訊接口之一,由電子工業(yè)協(xié)會(huì)(Electronic Industries Association,EIA) 所制定的異步傳輸標(biāo)準(zhǔn)接口。通常 RS-232 接口以9個(gè)引腳 (DB-9) 或是25個(gè)引腳 (DB-25) 的型態(tài)出現(xiàn),一般個(gè)人計(jì)算機(jī)上會(huì)有兩組 RS-232 接口,分別稱為 COM1 和 COM2。RS-232-C是美國(guó)電子工業(yè)協(xié)會(huì)EIA(Electronic Industry Association)制定的一種串行物理接口標(biāo)準(zhǔn)。RS是英文“推薦標(biāo)準(zhǔn)”的縮寫,232為標(biāo)識(shí)號(hào),C表示修改次數(shù)。RS-232-C總線標(biāo)準(zhǔn)設(shè)有25條信號(hào)線,包括一個(gè)主通道和一個(gè)輔助通道。
RS232缺點(diǎn)
?。?)接口的信號(hào)電平值較高,易損壞接口電路的芯片,又因?yàn)榕cTTL電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。
?。?)傳輸速率較低,在異步傳輸時(shí),波特率為20Kbps;因此在CPLD開發(fā)板中,綜合程序波特率只能采用19200,也是這個(gè)原因。
?。?)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱。
?。?)傳輸距離有限,最大傳輸距離標(biāo)準(zhǔn)值為50英尺,實(shí)際上也只能用在15米左右。
RS232 與USB的特點(diǎn)和比較
RS-232與USB都是串行通信,但無論是底層信號(hào)、電平定義、機(jī)械連接方式,還是數(shù)據(jù)格式、通信協(xié)議等,兩者完全不同。 RS-232是一個(gè)流行的接口。在MS-DOS中,四個(gè)串行接口稱為COM1、COM2、COM3和COM4,而絕大部分windows應(yīng)用程序最多可以有4個(gè)外設(shè),但是如果用戶要擴(kuò)充更多外設(shè)時(shí),就必須要用插入式串行卡或者外部開關(guān)盒實(shí)現(xiàn)。 RS-232點(diǎn)對(duì)點(diǎn)連接,一個(gè)串口只能連接一個(gè)外設(shè)。
而USB是一種多點(diǎn)、高速的連接方式,采用集線器能實(shí)現(xiàn)更多的連接。USB接口的基本部分是串行接口引擎SIE,SIE從USB收發(fā)器中接收數(shù)據(jù)位,轉(zhuǎn)化為有效字節(jié)傳送給SIE接口;反之,SIE接口也可以接收字節(jié)轉(zhuǎn)化為串行位送到總線。由于PC機(jī)串口的最高速率僅為115.2kbps,會(huì)形成一個(gè)速度瓶頸。RS-232系統(tǒng)包括2個(gè)串行信號(hào)路徑,其方向相反,分別用于傳輸命令和數(shù)據(jù),而命令和狀態(tài)必須與數(shù)據(jù)交織在一起;而USB支持分離的命令和數(shù)據(jù)通道并允許獨(dú)立的狀態(tài)報(bào)告。 USB是一種方便、靈活、簡(jiǎn)單、高速的總線結(jié)構(gòu),與傳統(tǒng)的RS-232接口相比,主要有以下特點(diǎn):
(1) USB采用單一形式的連接頭和連接電纜,實(shí)現(xiàn)了單一的數(shù)據(jù)通用接口。USB統(tǒng)一的4針插頭,取代了PC機(jī)箱后種類繁多的串/并插頭,實(shí)現(xiàn)了將計(jì)算機(jī)常規(guī)I/O設(shè)備、多媒體設(shè)備(部分)、通信設(shè)備(電話、網(wǎng)絡(luò))以及家用電器統(tǒng)一為一種接口的愿望。
(2) USB采用的是一種易于擴(kuò)展的樹狀結(jié)構(gòu),通過使用USB Hub擴(kuò)展,可連接多達(dá)127個(gè)外設(shè)。USB免除所有系統(tǒng)資源的要求,避免了安裝硬件時(shí)發(fā)生端口沖突的問題,為其它設(shè)備空出硬件資源。
?。?) USB外設(shè)能自動(dòng)進(jìn)行設(shè)置,支持即插即用與熱插拔。
?。?) 靈活供電。USB電纜具有傳送電源的功能,支持節(jié)約能源模式,耗電低。USB總線可以提供電壓+5v、最大電流500mA的電源,供低功耗的設(shè)備作電源使用,不需要額外的電源。
?。?) USB可以支持四種傳輸模式:控制傳輸、同步傳輸、中斷傳輸、批量傳輸,可以適用于很多類型的外設(shè)。
(6)通信速度快。USB支持三種總線速度,低速1.5Mbps、全速12Mbps和高速480Mbps。
?。?)數(shù)據(jù)傳送的可靠性。USB采用差分傳輸方式,且具有檢錯(cuò)和糾錯(cuò)功能,保證了數(shù)據(jù)的正確傳輸。
?。?)低成本。USB簡(jiǎn)化了外設(shè)的連接和配置的方法,有效地減少了系統(tǒng)的總體成本,是一種廉價(jià)的簡(jiǎn)單實(shí)用的解決方案,具有較高的性能價(jià)格比。
RS-232應(yīng)用范圍廣泛、價(jià)格便宜、編程容易并且可以比其它接口使用更長(zhǎng)的導(dǎo)線,隨著USB端口的越來越普遍,將會(huì)出現(xiàn)更多的把USB轉(zhuǎn)換成RS-232或其它接口的轉(zhuǎn)換裝置。但是RS-232和類似的接口仍將在諸如監(jiān)視和控制系統(tǒng)這樣的應(yīng)用中得到普遍的應(yīng)用。對(duì)習(xí)慣使用RS-232的開發(fā)者和產(chǎn)品可以考慮設(shè)計(jì)USB/RS-232轉(zhuǎn)換器,通過USB總線傳輸RS-232數(shù)據(jù),即PC端的應(yīng)用軟件依然是針對(duì)RS-232串行端口編程的,外設(shè)也是以RS-232為數(shù)據(jù)通信通道,但從PC到外設(shè)之間的物理連接卻是USB總線,其上的數(shù)據(jù)通信也是USB數(shù)據(jù)格式。采用這種方式的好處在于:一方面保護(hù)原有的軟件開發(fā)投入,已開發(fā)成功的針對(duì)RS-232外設(shè)的應(yīng)用軟件可以不加修改地繼續(xù)使用;另一方面充分利用了USB總線的優(yōu)點(diǎn),通過USB接口可連接更多的RS-232設(shè)備,不僅可獲得更高的傳輸速度,實(shí)現(xiàn)真正的即插即用,同時(shí)解決了USB接口不能遠(yuǎn)距離傳輸?shù)娜秉c(diǎn)(USB通訊距離在5米內(nèi)。
Uart這里指的是TTL電平的串口;RS232指的是RS232電平的串口。
TTL電平是3.3V的,而RS232是負(fù)邏輯電平,它定義+5~+12V為低電平,而-12~-5V為高電平。
Uart串口的RXD、TXD等一般直接與處理器芯片的引腳相連,而RS232串口的RXD、TXD等一般需要經(jīng)過電平轉(zhuǎn)換(通常由Max232等芯片進(jìn)行電平轉(zhuǎn)換)才能接到處理器芯片的引腳上,否則這么高的電壓很可能會(huì)把芯片燒壞。
我們平時(shí)所用的電腦的串口就是RS232的,當(dāng)我們?cè)谧鲭娐饭ぷ鲿r(shí),應(yīng)該注意下外設(shè)的串口是Uart類型的還是RS232類型的,如果不匹配,應(yīng)當(dāng)找個(gè)轉(zhuǎn)換線(通常這根轉(zhuǎn)換線內(nèi)有塊類似于Max232的芯片做電平轉(zhuǎn)換工作的),可不能盲目地將兩串口相連。
另外再補(bǔ)充其他一點(diǎn),在自己做串口線時(shí),一般按照下面的規(guī)則制作:
PC 對(duì)應(yīng) 外設(shè)(例如某開發(fā)板)
GND ------- GND
RXD ------- TXD
TXD ------- RXD
CTS ------- RTS
RTS ------- CTS
通常是按照以上交叉一次就可以了,但如果開發(fā)板上的串口的RXD是與板上的CPU的TXD相連的,其他也類似的話,即說明已交叉了一次了,那么我們?cè)谥谱鞔诰€時(shí)就不需要按照以上的對(duì)應(yīng)關(guān)系做了,而是RXD對(duì)應(yīng)RXD,TXD對(duì)應(yīng)TXD,其他也一樣。
評(píng)論
查看更多