通用異步收發(fā)器簡稱UART,即“Universal Asynchronous Receiver Transmitter” s3c2440提供了三個UART端口,它們都可以通過查詢、中斷和DMA方式傳輸數(shù)據(jù),而且每個UART都分別有一個64個字節(jié)的接收FIFO和一個64個字節(jié)的發(fā)送FIFO。UART由波特率發(fā)生器、發(fā)送器、接收器和控制邏輯組成,使用系統(tǒng)時鐘可以達(dá)到115.2Kbit/s,如果使用UEXTCLK引腳提供的外部時鐘,則可以達(dá)到更高的波特率,波特率可以通過編程進行控制。UART的結(jié)構(gòu)示意圖如下所示: UART的工作原理是:當(dāng)發(fā)送數(shù)據(jù)時,CPU先將數(shù)據(jù)寫入發(fā)送FIFO中,然后UART會自動將FIFO中的數(shù)據(jù)復(fù)制到“發(fā)送移位器”中,發(fā)送移位器將數(shù)據(jù)一位一位(先發(fā)最低位)地發(fā)送到TXDn數(shù)據(jù)線上(根據(jù)設(shè)定的格式、插入開始位。校驗位和停止位)。接收數(shù)據(jù)時,“接收移位器”將RXDn數(shù)據(jù)線上的數(shù)據(jù)一位一位(同樣是先發(fā)最低位)接收進來,然后復(fù)制到接收FIFO中,CPU即可從中讀取數(shù)據(jù)。 S3C2440 UART有3個獨立通道,每個通道支持的停止位有1位、2位,數(shù)據(jù)位有5、6、7、8位,支持校驗功能,另外還有紅外發(fā)送/接收功能。 在使用UART之前,需要設(shè)置波特率、傳輸格式(有多少個數(shù)據(jù)位、是否使用校驗位、是奇校驗還是偶校驗、有多少個停止位、是否使用流量控制),選擇UART通道的工作模式為中斷模式或DMA模式。 下面我們來介紹一下UART比較重要的寄存器。 1、UBRDIVn 寄存器(UART BAUD RATE DIVISOR):設(shè)置比特率 根據(jù)給定的波特率、所選擇的時鐘源的頻率,可以通過以下公式計算UBRDIVn寄存器的值(n為0~2,對應(yīng)3個UART通道) 2.ULCONn寄存器(UART LINE CONTROL):設(shè)置傳輸格式 ULCONn寄存器(n為0~2),假如我們要設(shè)置UART0的傳輸格式為:8位數(shù)據(jù)位,每幀1個停止位,無奇偶校驗位,普通模式。就要設(shè)置ULCON0的[7:0]為00000011 如下圖紅色標(biāo)記所示 3、UCONx寄存器 (UART CONTROL) UCONn寄存器用于選擇UART時鐘源,設(shè)置UART中斷方式等。S3C244 UART有三個時鐘源PCLK、UEXTCLK、FCLK/n,這里我們只列出[11:0] 位,因為[15:12]是保留,使用默認(rèn)值0000 ,這里我們不理它。 4、UFCONn寄存器(UART FIFO CONTROL)、UFSTATn寄存器(UART FIFO STATUS) UFCONn寄存器用于設(shè)置是否使用FIFO,設(shè)置各個FIFO的觸發(fā)閾值,即發(fā)送FIFO中有多少個數(shù)據(jù)時產(chǎn)生中斷,接收FIFO中有多少個數(shù)據(jù)時產(chǎn)生中斷。 讀取UFSTATn寄存器可以知道各個FIFO是否已經(jīng)滿、其中有多少個數(shù)據(jù)。當(dāng)不使用FIFO時候,可認(rèn)為FIFO的深度為1,使用FIFO時候S3C2440的FIFO的深度是64比S3C2440多了4倍。 5、UMCONn寄存器(UART MODEM CONTROL)UMSTATn寄存器(UART MODEM STATUS) 這兩類寄存器用于流量控制,我們一般不會用到。 6、UTRSTATn寄存器(UART TX/RX STATUS) UTRSTATn寄存器用來表明數(shù)據(jù)是否已經(jīng)發(fā)送完畢、是否已經(jīng)接收到數(shù)據(jù)。 接受緩沖區(qū)數(shù)據(jù)就緒[0]位:表示當(dāng)接收到數(shù)據(jù)時,此位被自動設(shè)為1 發(fā)送緩沖區(qū)空[1]位:表示當(dāng)發(fā)送緩沖區(qū)中沒有數(shù)據(jù)時,此位被自動設(shè)為1 發(fā)送器空[2]位: 表示當(dāng)發(fā)送緩沖區(qū)中沒有數(shù)據(jù),并且最后一個數(shù)據(jù)也已經(jīng)發(fā)送出去時,此位被自動設(shè)為1 7、UERSTATn寄存器(UART ERROR STATUS) 這個寄存器用來表示各種錯誤是否發(fā)送。 8、UTXHn寄存器(UART TRANSMIT BUFFER REGISTER) CPU將數(shù)據(jù)寫入這個寄存器,UART即會將它保存到緩沖區(qū)中,并自動發(fā)送出去。 9、URXHn寄存器(UART RECEIVE BUFFER REGISTER) 當(dāng)UART接收到數(shù)據(jù)時,CPU讀取這個寄存器,即可獲得數(shù)據(jù)。 ————————————————————————————————————————————————————— UART的講解就到這里結(jié)束啦。
|
|