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