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

    EEPW首頁 > 嵌入式系統 > 設計應用 > TMS320C54X DSP實現UART的技術

    TMS320C54X DSP實現UART的技術

    作者: 時間:2011-03-29 來源:網絡 收藏


    2.1 串行傳輸

    異步串行數據格式的設置通過線路控制寄存器(LCR)來完成的。除了數據格式外,另外一個指標是波特率,它是通過除數寄存器來設置的,實際的波特率為輸入時鐘信號進行分頻后獲得,其公式如下:

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



    2.2 數據接收

    從SIN輸入的數據首先進入接收移位寄存器(RSR),一個字符接收完成后,數據移人接收緩沖寄存器(RBR)。RBR實際是一個16字節的FIFO,當中斷設置時,會根據FIFO中接收數據的數目產生中斷,主機設備從RBR中讀取數據后,中斷會自動清除。

    2.3 數據發送

    發送操作和接收操作相反,主機數據寫入發送保持寄存器(THR),THR是一個16字節的FIFO,然后數據移入發送移位寄存器(TSR),之后送人SOUT。當中斷設置時,會根據FIFO中發送數據的數目產生中斷,主機設備可根據中斷來決定是否繼續發送數據。

    除了收發操作外,TLl6C550C還可以產生其他類型的中斷,但它只有一根中斷信號引腳INTRPT,因此主機接收到中斷后必須判決產生中斷的信號源。

    FIFO的操作通過FCR來設置。當使用FIFO時,中最多可存放16字節數據,反之則只能存放一個數據,即相當于FIF0只有一個字節大小。有兩種工作方式:中斷方式和查詢方式。

    UART中還有Modem控制寄存器(MClR)和Modem狀態寄存器(MSR),它們用于控制一些信號引腳,能把UART的工作狀態通過硬件的方式表達出來。

    2.4部分LIART匯編編程

    測試程序:
    ST #0x55,*SP(var_reg) ;用來確定LJART設備是存在的
    PORTW*SP(vat_reg),ADDR_SPR
    PORTR ADDR_SPR.*SP(vaLr_reg)
    LD *SP(var_reg),A
    SUB #0x55,A,B
    BC rs232_no_errclr,BEQ
    設置特率程序:
    ST #0x83,*SP(vaL_reg)
    PORTW*SP(var_reg),ADDK_LCR
    ST #0xOO,*SP(var_reg) ;設置波特率為9600
    PORTW*SP(var_reg),ADDR_DIV_MSB
    ST #0x18,*SP(van_reg)
    PORTW*SP(vaLreg),ADDR_DUV_LSB
    ST #0x03,*SP(var_reg)
    PORTW*SP(var_reg).ADDR_LCR

    3 總 結
    利用軟件模擬的方法,缺點是將長時間處于對IJART的中斷和處理中,無法全速參與運算,而且占用了外部中斷0和一個定時器(有些只有一個定時器);優點是在和帶UART的外設之間除了電平轉換部分外不需要另外的硬件,可以節約產品的成本。利用外部接口芯片組的方法,缺點是增加了額外的硬件開銷,從而增加了產品成本;優點是收發數據快,可以和數據處理同步進行,能夠系統的實時性。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 和静县| 东城区| 黎城县| 五指山市| 霞浦县| 肥西县| 微山县| 晋中市| 龙南县| 加查县| 榆林市| 楚雄市| 钟祥市| 新巴尔虎右旗| 盱眙县| 浑源县| 浏阳市| 新蔡县| 兰坪| 嵊泗县| 武山县| 柳河县| 青冈县| 南宁市| 陆良县| 龙川县| 韶山市| 兴山县| 嵩明县| 灯塔市| 高陵县| 白河县| 兰溪市| 镇雄县| 盐津县| 阿拉善右旗| 元阳县| 赞皇县| 乌拉特前旗| 咸宁市| 芜湖县|