新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > S3C2440的UART詳解

        S3C2440的UART詳解

        作者: 時間:2016-11-26 來源:網絡 收藏
        1、UART原理簡介

        在介紹2440的UART控制器之前,我們首先來了解一下UART的原理

        本文引用地址:http://www.104case.com/article/201611/321675.htm

        UART:Universal Asynchronous Receiver/Transmitter(通用異步收發送器),用來傳輸串行數據,發送數據時,CPU將并行數據寫入UART,UART按照一定格式在TxD線上串行發出;接收數據時,UART檢測到RxD線上的信號,將串行收集放到緩沖區中,CPU即可讀取UART獲得的這些數據。

        UART最精簡的連線形式只有3根線,TXD用于發送,RXD用于接收,GND用于提供參考電平。UART之間以幀作為數據傳輸單位,幀由具有完整意義的若干位組成,它包含開始位、數據位、校驗位和停止位。發送數據之前,互相通信的UART之間要約定好數據傳輸速率(波特率的倒數)、數據的傳輸格式(多少個數據位、是否使用校驗位、奇校驗還是偶校驗、多少個停止位)。

        2、S3C2440 UART的特性

        S3C2440的通用異步收發器(UART)配有3個獨立異步串行I/O(SIO)端口,每個都可以通過產生中斷或DMA請求來進行CPU和UART之間的數據傳輸。如圖1所示:每個UART包含一個波特率發生器、發送器、接收器和一個控制單元,

        圖1 2440UART方框圖(帶FIFO)

        波特率發生器可以由PCLK、FCLK/n或UEXTCLK(外部輸入時鐘)時鐘驅動。UART通過使用系統時鐘可以支持最高115.2Kbps的比特率。如果是使用外部器件提供UEXTCLK的UART,則UART可以運行在更高的速度。發送器和接收器各包含一個64字節的FIFO和數據移位器。要發送數據時,先將數據寫入到FIFO接著在發送前復制到發送移位器中,隨后將數據從發送數據引腳(TXDn)移出;接收數據時,從接收數據引腳(RXDn)移入收到的數據,接著從移位器復制到FIFO。

        3、S3C2440 UART的使用

        對于S3C2440,使用UART之前,首選需要對2440的UART模塊進行初始化,需要設置波特率、傳輸格式(多少個數據位、是否使用校驗位、奇校驗或偶校驗、多少個停止位、是否使用流量控制)、選擇所涉及的管腳為UART功能、選擇UART通道的工作模式為中斷模式或DMA模式。設置好之后,往相關寄存器寫入數據即可發送,讀取相關寄存器即可接收到數據,還可以通過查詢狀態寄存器或設置中斷來獲知數據是否發送完畢、是否接收到數據。

        我用的開發板是天嵌的TQ2440,該開發板用SP3232EEN擴展了一個RS232串口,電路連接如圖2 所示:

        圖2 RS232原理圖

        波特率發生器

        每個UART的波特率發生器為發送器和接收器提供串行時鐘,波特率發生器的時鐘源可以選擇S3C2440A的內部時鐘系統或者UEXTCLK。波特率時鐘是通過16和由UART波特率分頻寄存器(UBRDIVn)指定的16位分頻系數來分頻源時鐘(PCLK,FCLK/n或者UEXTCLK)產生的,UBRDIVn由下列表達式確定:

        UBRDIVn=(int)(UART時鐘/(波特率*16))-1

        UART時鐘:PCLK,FCLK/n或者UEXTCLK,例如,如果波特率為115200bps并且UART時鐘為40MHz,則UBRDIVn為:

        UBRDIVn=(int)(40000000/(115200*16))-1=(int)(21.7)-1(取最接近的整數)=22-1=21

        介紹發送和接收操作之前,先介紹幾個重要的寄存器

        UBRDIVn寄存器:設置波特率,S3C2440 UART的時鐘源有兩種選擇:PCLK、UEXTCLK、FCLK/n,其中n的值通過UCON0-UCON2聯合設置

        ULCONn寄存器:設置傳輸格式

        UCONn寄存器:它用于選擇UART時鐘源、設置UART中斷方式

        UFCONn寄存器、UFSTATn寄存器,UFCONn寄存器用于設置是否使用FIFO,設置各FIFO的觸發闕值,即發送FIFO中有多少個數據時產生中斷、接收FIFO中有多少個數據時產生中斷。并可以通過設置UFCONn寄存器來復位各個FIFO。讀取UFSTATn寄存器可以知道各個FIFO是否已經滿,其中有多少個數據。

        UMCONn寄存器、UMSTATn寄存器,這兩類寄存器用于流量控制,具體看數據手冊
        UTRSTATn寄存器,它用來表明數據是否已經發送完畢、是否已經接收到數據

        UERSTATn寄存器,用來表示各種錯誤是否發生

        UTXHn寄存器,CPU將數據寫入這個寄存器,UART即會將它保存到緩沖區中,并自動發送出去

        URXHn寄存器,當UART接收到數據時,CPU讀取這個寄存器,即可獲得數據。

        下面通過實際的代碼來理解2440的UART

        首選是UART的初始化,TQ2440將UART0引了一個接口出來,就介紹UART0吧

        2440的UART引腳是掛接在GPH上的,所以使用UART之前需要先對GPH的引腳功能進行配置。


        上一頁 1 2 下一頁

        關鍵詞: S3C2440UART詳

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 涪陵区| 建湖县| 遂川县| 息烽县| 瑞昌市| 横山县| 若尔盖县| 阿尔山市| 长兴县| 贵溪市| 五常市| 浙江省| 万安县| 苏尼特右旗| 哈密市| 正蓝旗| 乾安县| 无棣县| 南开区| 敦煌市| 彭州市| 兰溪市| 三穗县| 樟树市| 温泉县| 加查县| 磐石市| 潮州市| 通化市| 张家界市| 抚远县| 陆河县| 吉林省| 纳雍县| 晋城| 如皋市| 衡山县| 黄梅县| 咸丰县| 新乡市| 中西区|