串口通訊基礎及S3C2410 UART控制器

來源:互聯網
上載者:User

資料通訊的基本方式可分為並行通訊與串列通訊兩種:
並行通訊:是指利用多條資料轉送線將一個資料的各位同時傳送。它的特點是傳輸速度快,適用於短距離通訊,但要求通訊速率較高的應用場合。
串列通訊:是指利用一條傳輸線將資料一位位地順序傳送。特點是通訊線路簡單,利用簡單的線纜就可實現通訊,降低成本,適用於遠距離通訊,但傳輸速度慢的應用場合。
一、非同步通訊及其協議
非同步通訊以一個字元為傳輸單位,通訊中兩個字元間的時間間隔是不固定的,然而在同一個字元中的兩個相鄰位代碼間的時間間隔是固定的。
通訊協定(通訊規程):是指通訊雙方約定的一些規則。在使用非同步串口傳送一個字元的資訊時,對資料格式有如下約定:規定有空閑位、起始位、資料位、同位位元、停止位。
非同步通訊的時序,5-1。

其中各位的意義如下:
起始位:先發出一個邏輯”0”訊號,表示傳輸字元的開始。
資料位:緊接著起始位之後。資料位的個數可以是4、5、6、7、8等,構成一個字元。通常採用ASCII碼。從最低位開始傳送,靠時鐘定位。
同位位元:資料位加上這一位後,使得“1”的位元應為偶數(偶校正)或奇數(奇數同位),以此來校正資料傳送的正確性。
停止位:它是一個字元資料的結束標誌。可以是1位、1.5位、2位的高電平。
空閑位:處於邏輯“1”狀態,表示當前線路上沒有資料傳送。
傳輸速率:是衡量資料傳送速率的指標。表示每秒鐘傳送的二進位位元。例如資料傳送速率為120字元/秒,而每一個字元為10位,則其傳送的傳輸速率為10×120=1200字元/秒=1200傳輸速率。
註:非同步通訊是按字元傳輸的,接收裝置在收到起始訊號之後只要在一個字元的傳輸時間內能和發送裝置保持同步就能正確接收。下一個字元起始位的到來又使同步重新校準(依靠檢測起始位來實現發送與接收方的時鐘自同步的)。
二、資料傳送方式
根據資料傳送方向的不同有以下三種方式。5-2所示。

(1)單工方式 (2)半雙工方式 (3)全雙工系統方式
圖5-2 資料傳送方式
1、單工方式
資料始終是從A裝置發向B裝置。
2、 半雙工方式
資料能從A裝置傳送到B裝置,也能從B裝置傳送到A裝置。在任何時候資料都不能同時在兩個方向上傳送,即每次只能有一個裝置發送,另一個裝置接收。但是通訊雙方依照一定的通訊協議來輪流地進行發送和接收。
3、 全雙工系統方式
允許通訊雙方同時進行發送和接收。這時,A裝置在發送的同時也可以接收,B裝置亦同。全雙工系統方式相當於把兩個方向相反的單工方式組合在一起,因此它需要兩條資料轉送線。在電腦串列通訊中主要使用半雙工和全雙工系統方式。
三、訊號傳輸方式
1、基帶傳輸方式
在傳輸線路上直接傳輸不加調製的二進位訊號,。它要求傳送線的頻帶較寬,傳輸的數字訊號是矩形波。
基帶傳輸方式僅適宜於近距離和速度較低的通訊。

2、頻帶傳輸方式
傳輸經過調製的類比訊號
在長距離通訊時,發送方要用調製器把數字訊號轉換成類比訊號,接收方則用解調器將接收到的類比訊號再轉換成數字訊號,這就是訊號的調製解調。
實現調製和解調任務的裝置稱為數據機(MODEM)。採用頻帶傳輸時,通訊雙方各接一個數據機,將數字訊號寄載在類比訊號(載波)上加以傳輸。因此,這種傳輸方式也稱為載波傳輸方式。這時的通訊線路可以是電話交換網,也可以是專用線。
常用的調製方式有三種:
調幅、調頻和調相,分別如所示。

 

四、串列介面標準
串列介面標準:指的是電腦或終端(資料終端裝置DTE)的串列介面電路與數據機MODEM等(資料通信設備DCE)之間的串連標準。
RS-232C標準
RS-232C是一種標準介面,D型插座,採用25芯引腳或9芯引腳的連接器,5-5所示。
圖5-5
微電腦之間的串列通訊就是按照RS-232C標準設計的介面電路實現的。如果使用一根電話線進行通訊,那么電腦和MODEM之間的聯機就是根據RS-232C標準串連的。其串連及通訊原理5-6所示
圖5-6

RS232訊號定義
RS-232C標準規定介面有25根聯機。只有以下9個訊號經常使用.
引腳和功能分別如下:
1. TXD(第2腳):發送資料線,輸出。發送資料到MODEM。
2. RXD(第3腳):接收資料線,輸入。接收資料到電腦或終端。
3. (第4腳):請求發送,輸出。電腦通過此引腳通知MODEM,要求發送資料。
4. (第5腳):允許發送,輸入。發出 作為對 的回答,電腦才可以進行發送資料。
5. (第6腳):資料裝置就緒(即MODEM準備好),輸入。表示數據機可以使用,該訊號有時直接接到電源上,這樣當裝置連通時即有效。
6. CD(第8腳):偵測載波(接收線訊號測定器),輸入。表示MODEM已與電話線路串連好。
7. 如果通訊線路是交換電話的一部分,則至少還需如下兩個訊號:
8. RI(第22腳):響鈴指示,輸入。MODEM若接到交換台送來的響鈴呼叫符號,就發出該訊號來通知電腦或終端。
9. (第20腳):資料終端就緒,輸出。電腦收到RI訊號以後,就發出 訊號到MODEM作為回答,以控制它的轉換裝置,建立通訊鏈路。
10. GND(第7腳):訊號地
邏輯電平
RS-232C標準採用EIA電平,規定:
“1”的邏輯電平在-3V~-15v之間
“0”的邏輯電平在+3V~+15V之間。
由於EIA電平與TTL電平完全不同,必須進行相應的電平轉換,MCl488完成TTL電平到EIA電平的轉換,MCl489完成EIA電平到ITL電平的轉換。還有MAX232可以同時完成TTL->EIA和EIA->TTL的電平轉換。

除了RS-232C標準以外,還有一些其它的通用的非同步串列介面標準,如:

RS-423A標準
為了克服RS-232C的缺點,提高傳送速率,增加通訊距離,又考慮到與RS-232C的相容性,美國電子工業協會在1987年提出了RS-423A標準。該標準的主要優點是在接收端採用了差分輸入。而差分輸入對共模幹擾訊號有較高的抑製作用,這樣就提高了通訊的可靠性。RS-423A用-6v表示邏輯“1”,用+6v表示邏輯“0”,可以直接與RS-232C相接。採用RS-423A標準以獲得比RS-232C更佳的通訊效果。圖5-7是RS423A的串連。

圖5-7
RS-422A標準
RS-422A匯流排採用平衡輸出的發送器,差分輸入的接收器。5-8所示。
圖5-8
RS-422A的輸出訊號線間的電壓為±2v,接收器的識別電壓為±0.2v。共模範圍±25v。在高速傳送訊號時,應該考慮到通訊線路的阻抗匹配,一般在接收端加終端電阻以吸收掉反射波。電阻網路也應該是平衡的,5-9所示。
圖5-9 為RS-422A平衡輸出差分輸
RS-485標準
RS-485適用於收發雙方共用一對線進行通訊,也適用於多個點之間共用一對線路進行匯流排方式連網,但通訊只能是半雙工的,線路5-10所示。
圖5-10
典型的RS232到RS422/485轉換晶片有:MAX481/483/485/487/488/489/490/491,SN75175/176/184等等,它們均只需單一+5v電源供電即可工作(晶片內部採用電荷泵方式升壓)。具體使用方法可查閱有關技術手冊。

 

五、S3C2410內建的UART控制器
S3C2410內部具有3個獨立的UART控制器,每個控制器都可以工作在Interrupt(中斷)模式或DMA(直接記憶體存取)模式,也就是說UART控制器可以CPU與UART控制器傳送資料的時候產生中斷或DMA請求。並且每個UART均具有16位元組的FIFO(先入先出寄存器),支援的最高傳輸速率可達到230.4Kbps
圖5-11是S3C2410內部UART控制器的結構圖
圖5-11

UART的操作

UART的操作分為以下幾個部分,分別是:資料發送、資料接收、產生中斷、產生傳輸速率、Loopback模式、紅外模式以及自動流控模式。
資料發送
發送的資料框架格式是可以編程設定的。它包含了起始位、5~8個資料位、可選的同位位元以及1~2位停止位。這些都是通過UART的控制寄存器 ULCONn 來設定的。
資料接收
同發送一樣,接收的資料框架格式也是可以進行編程設定的。此外,還具備了檢測溢出出錯、同位出錯、幀出錯等出錯檢測,並且每種錯誤都可以置相應的錯誤標誌。
自動流控模式
S3C2410的UART0和UART1都可以通過各自的nRTS和nCTS訊號來實現自動流控。
在自動流控(AFC)模式下nRTS取決於接收端的狀態,而nCTS控制了發送斷的操作。具體地說:只有當nCTS有效時(表明接收方的FIFO已經準備就緒來接收資料了),UART才會將FIFO中的資料發送出去。在UART接收資料之前,只要當接收FIFO有至少2-byte空餘的時候,nRTS就會被置為有效。圖5-12是UART 自動流控模式的串連方式
圖5-12
中斷/DMA請求產生
S3C2410的每個UART都有7種狀態,分別是:溢出覆蓋(Overrun)錯誤、同位錯誤、幀出錯、斷線錯誤、接收就緒、發送緩衝空閑、發送移位器空閑。它們在UART狀態寄存器 UTRSTATn / UERSTATn 中有相應的標誌位。

傳輸速率發生器
每個UART控制器都有各自的傳輸速率發生器來產生髮送和接收資料所用的序列時鐘,傳輸速率發生器的時鐘源可以CPU內部的系統時鐘,也可以從CPU的 UCLK 管腳由外部取得時鐘訊號,並且可以通過 UCONn 選擇各自的時鐘源。
傳輸速率產生的具體計算方法如下:
當選擇CPU內部時鐘時:
UBRDIVn=(int)(PCLK/(bps*16))-1,bps為所需要的傳輸速率值,PCLK為CPU內部外設匯流排(APB)的工作時鐘。
當需要得到更精確的傳輸速率時,可以選擇由 UCLK 引入的外部時鐘來產生。
UBRDIVn=(int)(UCLK/(bps*16))-1
LoopBack操作模式
S3C2410 CPU的UART提供了一種測試模式,也就是這裡所說的LoopBack模式。在設計系統的具體應用時,為了判斷通訊故障是由於外部的資料鏈路上的問題,還是CPU內驅動程式或CPU本身的問題,這就需要採用LoopBack模式來進行測試。在LoopBack模式中,資料發送端TXD在UART內部就從邏輯上與接收端RXD連在一起,並可以來驗證資料的收發是否正常。
UART控制寄存器
下面將針對UART的各個控制寄存器逐一進行講解,以期對UART的操作和設定能有更進一步的瞭解。

ULCONn (UART Line Control Register)見圖5-13

圖5-13
Word Length :資料位長度
Number of Stop Bit :停止位元
Parity Mode :同位位元類型
Infra-Red Mode :UART/紅外模式選擇(當以UART模式工作時,需設為“0”)

UCONn (UART Control Register)見圖5-14
Receive Mode :選擇接收模式。如果是採用DMA模式的話,還需要指定說使用的DMA通道。
Transmit Mode :同上。
Send Break Signal :選擇是否在傳1幀資料中途發送Break訊號。
Loopback Mode :選擇是否將UART置於Loopback測試模式。
Rx Error Status Interrupt Enable :選擇是否使能當發生接收異常時,是否產生接收錯誤中斷。
Rx Time Out Enable :是否使能接收逾時中斷。
Rx Interrupt Type :選擇接收中斷類型。
選擇0:Pulse(脈衝式/邊沿式中斷。非FIFO模式時,一旦接收緩衝區中有資料,即產生一個中斷;為FIFO模式時,一旦當FIFO中的資料達到一定的觸發水平後,即產生一個中斷)

 
選擇1:Level(電平模式中斷。非FIFO模式時,只要接收緩衝區中有資料,即產生中斷;為FIFO模式時,只要FIFO中的資料達到觸發水平後,即產生中斷)
Tx Interrupt Type :類同於Rx Interrupt Type
Clock Selection :選擇UART傳輸速率發生器的時鐘源。
圖5-14
UFCONn (UART FIFO Conrtol Register)見圖5-15
FIFO Enable :FIFO使能選擇。
Rx FIFO Reset :選擇當複位接收FIFO時是否自動清除FIFO中的內容。
Tx FIFO Reset :選擇當複位發送FIFO時是否自動清除FIFO中的內容。
Rx FIFO Trigger Level :選擇接收FIFO的觸發水平。
Tx FIFO Trigger Level :選擇發送FIFO的觸發水平。
圖5-15
UMCONn (UART Modem Control Register)見圖5-16
Request to Send :如果在AFC模式下,該位將由UART控制器自動化佈建;否則的話就必須由使用者的軟體來控制。
Auto Flow Control :選擇是否使能自動流控(AFC)。
圖5-16
UTRSTATn (UART TX/RX Status Register)見圖5-17
Receive buffer data ready :當接收緩衝寄存器從UART接收埠接收到有效資料時將自動置“1”。反之為“0”則表示緩衝器中沒有資料。
Transmit buffer empty :當發送緩衝寄存器中為空白,自動置“1”;反之表明緩衝器中正有資料等待發送。
Transmitter empty :當發送緩衝器中已經沒有有效資料時,自動置“1”;反之表明尚有資料未發送。
圖5-17
UERSTATn (UART Error Status Register)見圖5-18
Overrun Error :為“1”,表明發生Overrun錯誤。
Frame Error :為“1”。表明發生Frame(幀)錯誤。
圖5-18
UFSTATn :(UART FIFO Status Register)見圖5-19
Rx FIFO Count :接收FIFO中當前存放的位元組數。
 Tx FIFO Count :發送FIFO中當前存放的位元組數。
 Rx FIFO Full :為“1“表明接收FIFO已滿。
 Tx FIFO Full :為“1“表明發送FIFO已滿。
圖5-19
UMSTATn :(UART FIFO Status Register)見圖5-20
Clear to Send :為“0”表示CTS無效;為“1”表示CTS有效。
Delta CTS :指示自從上次CPU訪問該位後,nCTS的狀態有無發生改變。
為“0”則說明不曾改變;反之表明nCTS訊號已經變化了。
圖5-20

UTXHn 和 URXHn 分別是UART發送和接收資料寄存器
這兩個寄存器存放著發送和接收的資料,當然只有一個位元組8位資料。需要注意的是在發生溢出錯誤的時候,接收的資料必須要被讀出來,否則會引發下次溢出錯誤

UBRDIVn :(UART Baud Rate Divisor Register)見圖5-21

圖5-21
關於UART傳輸速率的計算方法,在前面的內容中已經有詳細的闡述,此處不做多餘說明。

小結:讀寫狀態寄存器UTRSTAT 以及錯誤狀態寄存UERSTAT,可以反映晶片目前的讀寫狀態以及錯誤類型。FIFO 狀態寄存器UFSTAT 和MODEM 狀態寄存器UMSTAT,通過前者可以讀出目前FIFO 是否滿以及其中的位元組數;通過後者可以讀出目前MODEM 的CTS狀態。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.