串口通讯基础及S3C2410 UART控制器
| 數(shù)據(jù)通信的基本方式可分為并行通信與串行通信兩種: | |||
| |||
| 圖5-2 資料傳送方式 | |||
| 1、單工方式 資料始終是從A設(shè)備發(fā)向B設(shè)備。 2、 半雙工方式 資料能從A設(shè)備傳送到B設(shè)備,也能從B設(shè)備傳送到A設(shè)備。在任何時(shí)候資料都不能同時(shí)在兩個(gè)方向上傳送,即每次只能有一個(gè)設(shè)備發(fā)送,另一個(gè)設(shè)備接收。但是通訊雙方依照一定的通訊協(xié)議來輪流地進(jìn)行發(fā)送和接收。 3、 全雙工方式 允許通信雙方同時(shí)進(jìn)行發(fā)送和接收。這時(shí),A設(shè)備在發(fā)送的同時(shí)也可以接收,B設(shè)備亦同。全雙工方式相當(dāng)于把兩個(gè)方向相反的單工方式組合在一起,因此它需要兩條數(shù)據(jù)傳輸線。在計(jì)算機(jī)串行通訊中主要使用半雙工和全雙工方式。 三、信號傳輸方式 1、基帶傳輸方式 在傳輸線路上直接傳輸不加調(diào)制的二進(jìn)制信號,如圖所示。它要求傳送線的頻帶較寬,傳輸?shù)臄?shù)字信號是矩形波。 基帶傳輸方式僅適宜于近距離和速度較低的通信。 2、頻帶傳輸方式 傳輸經(jīng)過調(diào)制的模擬信號 在長距離通信時(shí),發(fā)送方要用調(diào)制器把數(shù)字信號轉(zhuǎn)換成模擬信號,接收方則用解調(diào)器將接收到的模擬信號再轉(zhuǎn)換成數(shù)字信號,這就是信號的調(diào)制解調(diào)。 實(shí)現(xiàn)調(diào)制和解調(diào)任務(wù)的裝置稱為調(diào)制解調(diào)器(MODEM)。采用頻帶傳輸時(shí),通信雙方各接一個(gè)調(diào)制解調(diào)器,將數(shù)字信號寄載在模擬信號(載波)上加以傳輸。因此,這種傳輸方式也稱為載波傳輸方式。這時(shí)的通信線路可以是電話交換網(wǎng),也可以是專用線。 常用的調(diào)制方式有三種: 調(diào)幅、調(diào)頻和調(diào)相,分別如下圖所示。 |
?
| 四、串行接口標(biāo)準(zhǔn) 串行接口標(biāo)準(zhǔn):指的是計(jì)算機(jī)或終端(資料終端設(shè)備DTE)的串行接口電路與調(diào)制解調(diào)器MODEM等(數(shù)據(jù)通信設(shè)備DCE)之間的連接標(biāo)準(zhǔn)。 RS-232C標(biāo)準(zhǔn) RS-232C是一種標(biāo)準(zhǔn)接口,D型插座,采用25芯引腳或9芯引腳的連接器,如圖5-5所示。 |
| 圖5-5 |
| 微型計(jì)算機(jī)之間的串行通信就是按照RS-232C標(biāo)準(zhǔn)設(shè)計(jì)的接口電路實(shí)現(xiàn)的。如果使用一根電話線進(jìn)行通信,那幺計(jì)算機(jī)和MODEM之間的聯(lián)機(jī)就是根據(jù)RS-232C標(biāo)準(zhǔn)連接的。其連接及通信原理如圖5-6所示 |
| 圖5-6 |
| RS232信號定義 除了RS-232C標(biāo)準(zhǔn)以外,還有一些其它的通用的異步串行接口標(biāo)準(zhǔn),如: RS-423A標(biāo)準(zhǔn) |
| 圖5-7 |
| RS-422A標(biāo)準(zhǔn) RS-422A總線采用平衡輸出的發(fā)送器,差分輸入的接收器。如圖5-8所示。 |
| 圖5-8 |
| RS-422A的輸出信號線間的電壓為±2v,接收器的識別電壓為±0.2v。共模范圍±25v。在高速傳送信號時(shí),應(yīng)該考慮到通信線路的阻抗匹配,一般在接收端加終端電阻以吸收掉反射波。電阻網(wǎng)絡(luò)也應(yīng)該是平衡的,如圖5-9所示。 |
| 圖5-9 為RS-422A平衡輸出差分輸示意圖 |
| RS-485標(biāo)準(zhǔn) RS-485適用于收發(fā)雙方共享一對線進(jìn)行通信,也適用于多個(gè)點(diǎn)之間共享一對線路進(jìn)行總線方式聯(lián)網(wǎng),但通信只能是半雙工的,線路如圖5-10所示。 |
| 圖5-10 |
| 典型的RS232到RS422/485轉(zhuǎn)換芯片有:MAX481/483/485/487/488/489/490/491,SN75175/176/184等等,它們均只需單一+5v電源供電即可工作(芯片內(nèi)部采用電荷泵方式升壓)。具體使用方法可查閱有關(guān)技術(shù)手冊。 |
?
| 五、S3C2410內(nèi)置的UART控制器 S3C2410內(nèi)部具有3個(gè)獨(dú)立的UART控制器,每個(gè)控制器都可以工作在Interrupt(中斷)模式或DMA(直接內(nèi)存訪問)模式,也就是說UART控制器可以CPU與UART控制器傳送資料的時(shí)候產(chǎn)生中斷或DMA請求。并且每個(gè)UART均具有16字節(jié)的FIFO(先入先出寄存器),支持的最高波特率可達(dá)到230.4Kbps 圖5-11是S3C2410內(nèi)部UART控制器的結(jié)構(gòu)圖 |
| 圖5-11 |
UART的操作 UART的操作分為以下幾個(gè)部分,分別是:資料發(fā)送、資料接收、產(chǎn)生中斷、產(chǎn)生波特率、Loopback模式、紅外模式以及自動流控模式。 資料發(fā)送 發(fā)送的資料幀格式是可以編程設(shè)置的。它包含了起始位、5~8個(gè)資料位、可選的奇偶校驗(yàn)位以及1~2位停止位。這些都是通過UART的控制寄存器 ULCONn 來設(shè)置的。 資料接收 同發(fā)送一樣,接收的資料幀格式也是可以進(jìn)行編程設(shè)置的。此外,還具備了檢測溢出出錯(cuò)、奇偶校驗(yàn)出錯(cuò)、幀出錯(cuò)等出錯(cuò)檢測,并且每種錯(cuò)誤都可以置相應(yīng)的錯(cuò)誤標(biāo)志。 自動流控模式 S3C2410的UART0和UART1都可以通過各自的nRTS和nCTS信號來實(shí)現(xiàn)自動流控。 在自動流控(AFC)模式下nRTS取決于接收端的狀態(tài),而nCTS控制了發(fā)送斷的操作。具體地說:只有當(dāng)nCTS有效時(shí)(表明接收方的FIFO已經(jīng)準(zhǔn)備就緒來接收資料了),UART才會將FIFO中的資料發(fā)送出去。在UART接收資料之前,只要當(dāng)接收FIFO有至少2-byte空余的時(shí)候,nRTS就會被置為有效。圖5-12是UART 自動流控模式的連接方式 |
| 圖5-12 |
| 中斷/DMA請求產(chǎn)生 S3C2410的每個(gè)UART都有7種狀態(tài),分別是:溢出覆蓋(Overrun)錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、幀出錯(cuò)、斷線錯(cuò)誤、接收就緒、發(fā)送緩沖空閑、發(fā)送移位器空閑。它們在UART狀態(tài)寄存器 UTRSTATn / UERSTATn 中有相應(yīng)的標(biāo)志位。 波特率發(fā)生器 ULCONn (UART Line Control Register)見圖5-13 |
| 圖5-13 |
| Word Length :資料位長度 Number of Stop Bit :停止位數(shù) Parity Mode :奇偶校驗(yàn)位類型 Infra-Red Mode :UART/紅外模式選擇(當(dāng)以UART模式工作時(shí),需設(shè)為“0”) UCONn (UART Control Register)見圖5-14 |
| ? |
| 選擇1:Level(電平模式中斷。非FIFO模式時(shí),只要接收緩沖區(qū)中有資料,即產(chǎn)生中斷;為FIFO模式時(shí),只要FIFO中的資料達(dá)到觸發(fā)水平后,即產(chǎn)生中斷) Tx Interrupt Type :類同于Rx Interrupt Type Clock Selection :選擇UART波特率發(fā)生器的時(shí)鐘源。 |
| 圖5-14 |
| UFCONn (UART FIFO Conrtol Register)見圖5-15 FIFO Enable :FIFO使能選擇。 Rx FIFO Reset :選擇當(dāng)復(fù)位接收FIFO時(shí)是否自動清除FIFO中的內(nèi)容。 Tx FIFO Reset :選擇當(dāng)復(fù)位發(fā)送FIFO時(shí)是否自動清除FIFO中的內(nèi)容。 Rx FIFO Trigger Level :選擇接收FIFO的觸發(fā)水平。 Tx FIFO Trigger Level :選擇發(fā)送FIFO的觸發(fā)水平。 |
| 圖5-15 |
| UMCONn (UART Modem Control Register)見圖5-16 Request to Send :如果在AFC模式下,該位將由UART控制器自動設(shè)置;否則的話就必須由用戶的軟件來控制。 Auto Flow Control :選擇是否使能自動流控(AFC)。 |
| 圖5-16 |
| UTRSTATn (UART TX/RX Status Register)見圖5-17 Receive buffer data ready :當(dāng)接收緩沖寄存器從UART接收端口接收到有效資料時(shí)將自動置“1”。反之為“0”則表示緩沖器中沒有資料。 Transmit buffer empty :當(dāng)發(fā)送緩沖寄存器中為空,自動置“1”;反之表明緩沖器中正有資料等待發(fā)送。 Transmitter empty :當(dāng)發(fā)送緩沖器中已經(jīng)沒有有效資料時(shí),自動置“1”;反之表明尚有資料未發(fā)送。 |
| 圖5-17 |
| UERSTATn (UART Error Status Register)見圖5-18 Overrun Error :為“1”,表明發(fā)生Overrun錯(cuò)誤。 Frame Error :為“1”。表明發(fā)生Frame(幀)錯(cuò)誤。 |
| 圖5-18 |
| UFSTATn :(UART FIFO Status Register)見圖5-19 Rx FIFO Count :接收FIFO中當(dāng)前存放的字節(jié)數(shù)。 Tx FIFO Count :發(fā)送FIFO中當(dāng)前存放的字節(jié)數(shù)。 Rx FIFO Full :為“1“表明接收FIFO已滿。 Tx FIFO Full :為“1“表明發(fā)送FIFO已滿。 |
| 圖5-19 |
| UMSTATn :(UART FIFO Status Register)見圖5-20 Clear to Send :為“0”表示CTS無效;為“1”表示CTS有效。 Delta CTS :指示自從上次CPU訪問該位后,nCTS的狀態(tài)有無發(fā)生改變。 為“0”則說明不曾改變;反之表明nCTS信號已經(jīng)變化了。 |
| 圖5-20 |
| UTXHn 和 URXHn 分別是UART發(fā)送和接收資料寄存器 UBRDIVn :(UART Baud Rate Divisor Register)見圖5-21 |
| 圖5-21 |
| 關(guān)于UART波特率的計(jì)算方法,在前面的內(nèi)容中已經(jīng)有詳細(xì)的闡述,此處不做多余說明。 小結(jié):讀寫狀態(tài)寄存器UTRSTAT 以及錯(cuò)誤狀態(tài)寄存UERSTAT,可以反映芯片目前的讀寫狀態(tài)以及錯(cuò)誤類型。FIFO 狀態(tài)寄存器UFSTAT 和MODEM 狀態(tài)寄存器UMSTAT,通過前者可以讀出目前FIFO 是否滿以及其中的字節(jié)數(shù);通過后者可以讀出目前MODEM 的CTS狀態(tài)。 |
總結(jié)
以上是生活随笔為你收集整理的串口通讯基础及S3C2410 UART控制器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信家乐福信用卡使用指南:居家一族必备良
- 下一篇: java utf8 byte_byte以