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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Nios II的UART與PC間的數(shù)據(jù)通信

          基于Nios II的UART與PC間的數(shù)據(jù)通信

          作者: 時(shí)間:2011-05-11 來(lái)源:網(wǎng)絡(luò) 收藏
          1.2 內(nèi)核的寄存器描述

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

            接收寄存器Rxdata保存接收到的數(shù)據(jù)。新字符由RXD輸入,完全接收后狀態(tài)寄存器的接收準(zhǔn)備好RRDY位置1。當(dāng)從接收數(shù)據(jù)寄存器讀取數(shù)據(jù)后,狀態(tài)寄存器RRDY位清零。若RRDY位為1時(shí),又有字符輸入,則發(fā)生溢出錯(cuò)誤,狀態(tài)寄存器的接收溢出錯(cuò)誤ROE位置1。不管前一個(gè)字符是否被讀出,新字符總是傳到接收數(shù)據(jù)寄存器。

            發(fā)送寄存器Txdata上的字符數(shù)據(jù)由Avalon主控制器發(fā)送,當(dāng)將字符寫(xiě)入發(fā)送寄存器時(shí),發(fā)送準(zhǔn)備好TRDY位為0;當(dāng)將字符從發(fā)送數(shù)據(jù)寄存器傳輸?shù)桨l(fā)送移位寄存器時(shí),TRDY位置1。如果在TRDY位為0時(shí)將字符寫(xiě)入發(fā)送數(shù)據(jù)寄存器,結(jié)果是未知的。

            狀態(tài)寄存器Status的狀態(tài)位反映內(nèi)核狀態(tài)情況。每個(gè)狀態(tài)位與控制寄存器中的對(duì)應(yīng)中斷使能位相聯(lián)系。狀態(tài)寄存器可以在任何時(shí)候讀取。

            控制寄存器Control由控制內(nèi)核操作的控制位組成,控制寄存器的每一位使能狀態(tài)寄存器中對(duì)應(yīng)位的中斷。當(dāng)狀態(tài)位及其對(duì)應(yīng)的中斷使能位為1時(shí),UART內(nèi)核產(chǎn)生一個(gè)中斷。

            除數(shù)寄存器Divisor的值用于生成波特率時(shí)鐘。

            數(shù)據(jù)包結(jié)束字符Endofpacket由數(shù)據(jù)包結(jié)束符寄存其的值確定,以便可變長(zhǎng)度的DMA傳輸。

            UART內(nèi)核的寄存器映射表如表1所列。

            

            2 串行異步通信軟件的實(shí)現(xiàn)

            為了適應(yīng)系統(tǒng)不同類型的需要,UART驅(qū)動(dòng)程序提供兩種方式:快速型和一般型??焖傩万?qū)動(dòng)程序采用中斷驅(qū)動(dòng)方式,在設(shè)備不準(zhǔn)備發(fā)送或接收數(shù)據(jù)時(shí)它允許處理器執(zhí)行其他任務(wù)。由于UART數(shù)據(jù)率相對(duì)于處理器的速率較慢,快速驅(qū)動(dòng)程序可以提供系統(tǒng)的處理性能。一般型驅(qū)動(dòng)程序采用查詢執(zhí)行方式,它在發(fā)送和接收每個(gè)字符前等待UART硬件的指示。

            對(duì)于 處理器用戶來(lái)說(shuō),Altera提供硬件抽象層HAL系統(tǒng)庫(kù)驅(qū)動(dòng)程序,HAL系統(tǒng)庫(kù)API函數(shù)為 處理器用戶提供訪問(wèn)UART內(nèi)核的完整特性。程序設(shè)計(jì)所涉及到的API函數(shù)如下:

            (1) alt_avalon_uart_init

            定義:void alt_avalon_uart_init(alt_avalon_uart_dev*dev,void*base,alt_u32 irq)

            功能:用于初始化UART設(shè)備

            (2) alt_avalon_uart_ioctl

            定義:int alt_avalon_uart_ioctl(alt_fd*fd,int req,void*arg)

            功能:處理HAL的程序請(qǐng)求設(shè)備指定的操作

            (3) alr_avalon_uart_irq

            定義:static void alt_avalon_uart_irq(void*context,alt_u32 id)

            功能:處理UART的中斷操作

            (4) alt_avalon_uart_read

            定義:int alt_avalon uart_read(alt_fd*fd,char*ptr,int len)

            功能:從UART中讀取數(shù)據(jù)

            (5) alt_avalon_uart_write

            定義:int alt_avalon_uart_write(alt fd*fd,const char*ptr,int len)

            功能:寫(xiě)一組數(shù)據(jù)到UART

            以上幾個(gè)函數(shù)完全可以滿足UART與之間的,需要注意的是如果一次傳輸?shù)臄?shù)據(jù)過(guò)長(zhǎng),必須重新設(shè)置ALT_AVALON_UART_BUF_LEN的值,以保證傳輸過(guò)程中數(shù)據(jù)的正確性。如果此值過(guò)小,則在傳輸過(guò)程中可能會(huì)造成數(shù)據(jù)的丟失。在設(shè)置輸出終端時(shí)必須指定COM1/COM2端口,建立UART與之間的數(shù)據(jù)通路,用來(lái)接收從UART中發(fā)出的數(shù)據(jù),同時(shí)通過(guò)這些端口從中發(fā)出數(shù)據(jù)到UART中。

            本文所述的UART是Altera公司的一款主流低成本的FPGA,除了具有FPGA的優(yōu)勢(shì)之外,還因?yàn)槠銫PU本身是以軟核的方式實(shí)現(xiàn)的,所以整個(gè)系統(tǒng)的功能可以根據(jù)需要進(jìn)行功能定制,非常靈活。

          分頻器相關(guān)文章:分頻器原理

          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(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); })();