TMS320C54X DSP實現(xiàn)UART的技術
2.1 串行傳輸
異步串行數據格式的設置通過線路控制寄存器(LCR)來完成的。除了數據格式外,另外一個指標是波特率,它是通過除數寄存器來設置的,實際的波特率為輸入時鐘信號進行分頻后獲得,其公式如下:本文引用地址:http://butianyuan.cn/article/150917.htm
2.2 數據接收
從SIN輸入的數據首先進入接收移位寄存器(RSR),一個字符接收完成后,數據移人接收緩沖寄存器(RBR)。RBR實際是一個16字節(jié)的FIFO,當中斷設置時,UART會根據FIFO中接收數據的數目產生中斷,主機設備從RBR中讀取數據后,中斷會自動清除。
2.3 數據發(fā)送
發(fā)送操作和接收操作相反,主機數據寫入發(fā)送保持寄存器(THR),THR是一個16字節(jié)的FIFO,然后數據移入發(fā)送移位寄存器(TSR),之后送人SOUT。當中斷設置時,UART會根據FIFO中發(fā)送數據的數目產生中斷,主機設備可根據中斷來決定是否繼續(xù)發(fā)送數據。
除了收發(fā)操作外,TLl6C550C還可以產生其他類型的中斷,但它只有一根中斷信號引腳INTRPT,因此主機接收到中斷后必須判決產生中斷的信號源。
FIFO的操作通過FCR來設置。當使用FIFO時,UART中最多可存放16字節(jié)數據,反之則只能存放一個數據,即相當于FIF0只有一個字節(jié)大小。有兩種工作方式:中斷方式和查詢方式。
UART中還有Modem控制寄存器(MClR)和Modem狀態(tài)寄存器(MSR),它們用于控制一些信號引腳,能把UART的工作狀態(tài)通過硬件的方式表達出來。
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 總 結
利用軟件模擬的方法,缺點是DSP將長時間處于對IJART的中斷和處理中,無法全速參與運算,而且占用了外部中斷0和一個定時器(有些TMS320C54XDSP只有一個定時器);優(yōu)點是在DSP和帶UART的外設之間除了電平轉換部分外不需要另外的硬件,可以節(jié)約產品的成本。利用外部接口芯片組的方法,缺點是增加了額外的硬件開銷,從而增加了產品成本;優(yōu)點是收發(fā)數據快,可以和數據處理同步進行,能夠實現(xiàn)系統(tǒng)的實時性。
評論