• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Nios II的UART與PC間的數據通信

    基于Nios II的UART與PC間的數據通信

    作者: 時間:2011-05-11 來源:網絡 收藏
    1.2 內核的寄存器描述

    本文引用地址:http://www.czjhyjcfj.com/article/150764.htm

      接收寄存器Rxdata保存接收到的數據。新字符由RXD輸入,完全接收后狀態寄存器的接收準備好RRDY位置1。當從接收數據寄存器讀取數據后,狀態寄存器RRDY位清零。若RRDY位為1時,又有字符輸入,則發生溢出錯誤,狀態寄存器的接收溢出錯誤ROE位置1。不管前一個字符是否被讀出,新字符總是傳到接收數據寄存器。

      發送寄存器Txdata上的字符數據由Avalon主控制器發送,當將字符寫入發送寄存器時,發送準備好TRDY位為0;當將字符從發送數據寄存器傳輸到發送移位寄存器時,TRDY位置1。如果在TRDY位為0時將字符寫入發送數據寄存器,結果是未知的。

      狀態寄存器Status的狀態位反映內核狀態情況。每個狀態位與控制寄存器中的對應中斷使能位相聯系。狀態寄存器可以在任何時候讀取。

      控制寄存器Control由控制內核操作的控制位組成,控制寄存器的每一位使能狀態寄存器中對應位的中斷。當狀態位及其對應的中斷使能位為1時,UART內核產生一個中斷。

      除數寄存器Divisor的值用于生成波特率時鐘。

      數據包結束字符Endofpacket由數據包結束符寄存其的值確定,以便可變長度的DMA傳輸。

      UART內核的寄存器映射表如表1所列。

      

      2 串行異步通信軟件的實現

      為了適應系統不同類型的需要,UART驅動程序提供兩種方式:快速型和一般型。快速型驅動程序采用中斷驅動方式,在設備不準備發送或接收數據時它允許處理器執行其他任務。由于UART數據率相對于處理器的速率較慢,快速驅動程序可以提供系統的處理性能。一般型驅動程序采用查詢執行方式,它在發送和接收每個字符前等待UART硬件的指示。

      對于 處理器用戶來說,Altera提供硬件抽象層HAL系統庫驅動程序,HAL系統庫API函數為 處理器用戶提供訪問UART內核的完整特性。程序設計所涉及到的API函數如下:

      (1) alt_avalon_uart_init

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

      功能:用于初始化UART設備

      (2) alt_avalon_uart_ioctl

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

      功能:處理HAL的程序請求設備指定的操作

      (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中讀取數據

      (5) alt_avalon_uart_write

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

      功能:寫一組數據到UART

      以上幾個函數完全可以滿足UART與之間的,需要注意的是如果一次傳輸的數據過長,必須重新設置ALT_AVALON_UART_BUF_LEN的值,以保證傳輸過程中數據的正確性。如果此值過小,則在傳輸過程中可能會造成數據的丟失。在設置輸出終端時必須指定COM1/COM2端口,建立UART與之間的數據通路,用來接收從UART中發出的數據,同時通過這些端口從中發出數據到UART中。

      本文所述的UART是Altera公司的一款主流低成本的FPGA,除了具有FPGA的優勢之外,還因為其CPU本身是以軟核的方式實現的,所以整個系統的功能可以根據需要進行功能定制,非常靈活。

    分頻器相關文章:分頻器原理

    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 沾化县| 藁城市| 阿城市| 故城县| 和静县| 家居| 天水市| 辽阳市| 仲巴县| 阿荣旗| 栾城县| 靖州| 吴堡县| 武强县| 陇川县| 搜索| 六盘水市| 缙云县| 泾阳县| 衡东县| 拜城县| 兴文县| 崇明县| 茌平县| 军事| 通道| 金阳县| 富宁县| 景泰县| 武山县| 信丰县| 缙云县| 渭源县| 龙州县| 桐乡市| 临潭县| 静乐县| 平潭县| 伊通| 固始县| 神池县|