<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARMLinux s3c2440 之UART分析一

          ARMLinux s3c2440 之UART分析一

          作者: 時(shí)間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
          在分析ARM-Linux s3c2440UART的時(shí)有必要先了解 s3c2440A中串口的硬件知識。也就是本文----

          硬件篇:

          本文引用地址:http://www.ex-cimer.com/article/201611/318138.htm

          S3c2440A串口提供三個獨(dú)立的異步串行通信I/O端口(asynchronousserial I/O ports)。每一個串口均可以以普通中斷方式或者DMA方式進(jìn)行數(shù)據(jù)收發(fā),采用系統(tǒng)時(shí)鐘時(shí),最大速率為115.2kbps.如果采用外部時(shí)鐘(UEXTCLK),UART速度可以更快。每個串口包含有2個64-byte的FIFO緩存區(qū)用來發(fā)送或傳輸數(shù)據(jù)。

          S3c2440A 串口具有可編程波特率,紅外(IR)收發(fā)數(shù)據(jù),1或者2 位的停止位(stop),5/6/7/8 位數(shù)據(jù)寬度和奇偶校驗(yàn)功能(parity checking)。

          每個串口由波特率產(chǎn)生單元,發(fā)送單元,接收單元和控制單元組成。如下圖所示,波特產(chǎn)生單元的時(shí)鐘可以是PCLK,FCLK/n,或者UEXTCLK(外部輸入的時(shí)鐘)。發(fā)送和接收單元包含有一個64-byte的FIFOs(先入先出隊(duì)列)和數(shù)據(jù)移位器。發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)被寫進(jìn)FIFO然后拷貝到數(shù)據(jù)移位器后發(fā)送數(shù)據(jù),最后數(shù)據(jù)被一位一位由數(shù)據(jù)發(fā)送腳(TxDn)送出。類似的,數(shù)據(jù)在接收時(shí),數(shù)據(jù)一位一位的由數(shù)據(jù)接收腳(RxDn)接收,然后拷貝到FIFO緩存區(qū)。

          寄存器:

          串口的控制寄存器有三個:UCON0 ~ UCON1分別對應(yīng)于每一個串口,用于設(shè)置UART的工作模式,波特率,中斷類型等。


          狀態(tài)寄存器:UTRSTAT0 ~UTRSTAT2, 用于串口工作時(shí),接收/發(fā)送的狀態(tài)指示


          FIFO控制寄存器: UFCON0 ~ UFCON2, 用于對FIFO的設(shè)置。


          FIFO狀態(tài)寄存器: UFSTAT0 ~ UFSTAT2, 用于表示FIFO緩存中的狀態(tài)


          對于Arm-linux s3c2440串口的使用,主要是對以上寄存器的操作。

          下一篇將結(jié)合源碼分析arm-linux s3c2440串口驅(qū)動的實(shí)現(xiàn)(軟件篇)



          關(guān)鍵詞: ARMLinuxs3c2440UAR

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();