1 引言
隨著大規(guī)模集成電路工藝技術(shù)的迅速發(fā)展,DSP" rel="http://www.eeworld.com.cn/my/keyad/ti.html" target="_blank">DSP已經(jīng)越來越廣泛地應(yīng)用于工業(yè)場合。工業(yè)現(xiàn)場由于許多場合通訊雙方相距較遠,為了保證通訊成本和可靠性,必須采用串行方式進行通訊。目前TI公司DSP都只有一個UART口,比如TMS320LF2407,當(dāng)同時需要與上位機和下面的被控對象進行通訊,或者同時連接幾個上位機時,則需要對DSP進行串行通訊口擴展,而使用可編程的ST16C2552可以一次擴展兩組相互獨立的串口,滿足各種條件下串行通訊的要求。
2 ST16C2552介紹
ST16C2552是Exar公司生產(chǎn)的通用異步通訊擴展器件,并與飛利浦公司的SC16C2552相兼容,可擴展2路獨立的串行通訊,可編程設(shè)定通訊起始位、停止位和校驗位以確保通訊的可靠性,可編程配置各種不同的波特率,在24 MHz的時鐘下,STl6C2552的數(shù)據(jù)傳輸速率可高達1.5 Mbit/s。ST16C2552提供16字節(jié)的接收和發(fā)送FIFO,允許用戶配置四種不同的中斷出發(fā)點,DSP可以根據(jù)配置一次并行讀人多個數(shù)據(jù),提高了傳輸效率,節(jié)省了DSP的工作時間。STl6C2552在2.5 V、3.3 V、5 V供電條件下均可以正常工作,不需要增加任何緩沖器件就可以和各種DSP或者單片機直接連接,非常方便。
ST16C2552提供了兩套內(nèi)部寄存器,每套由12個寄存器組成,用于監(jiān)測和控制UART每個通道的功能。分別為:發(fā)生/接收數(shù)據(jù)保存寄存器(THR/RHR)、中斷狀態(tài)和控制寄存器(IER/ISR)、FIFO控制寄存器(FCR)、線狀態(tài)和控制寄存器(LCR/15R)、調(diào)制解調(diào)器狀態(tài)和控制寄存器(MCR/MSR)、可編程數(shù)據(jù)速率(時鐘)控制寄存器(DLL/DLM),一個用戶可訪問的暫存寄存器(SPR)和一個選擇功能寄存器(AFR)。
3 硬件連接
ST16C2552和TMS320LF2407的硬件連接方法如圖1所示,DSP的數(shù)據(jù)線DO~D7與ST16C2552的數(shù)據(jù)線DO~D7相連。DSP地址線A0~A2與ST16C2552的地址線A0~A2相連。DSP的地址線A3與ST16C2552的通道選擇引腳CHSEL相連。DSP的外部空間選擇引腳IS與ST16C2552的片選
引腳CS相連。兩個通道的中斷引腳分別連接到DSP的外部中斷引腳XINT1和XINT2。采用有源14.7456 MHz晶體振蕩器為ST16C2552提供時鐘頻率。兩組UART分別通過兩個MAX3485連接到外部RS-485總線,MAX3485的使能由DSP的IOPC6和。IOPC7兩引腳控制,整個系統(tǒng)采用3.3 V供電。圖2為ST16C2552和TMS320LF172407的最小系統(tǒng)原理圖。
4 ST16C2552通訊流程和編程范例
ST16C2552的內(nèi)部寄存器通過3根地址線A0~A2進行尋址,通過配置寄存器LCR確定具體尋址的寄存器。通過不同的寄存器配置,可以實現(xiàn)需要的各種功能。ST16C2552內(nèi)部分別有16字節(jié)的發(fā)送和接收FIFO,通過寄存器對FCR的FCR[0]置1使能,使ST16C2552工作在FIFO模式。
FIFO收發(fā)可以通過查詢方式來實現(xiàn)。在該模式下,通過FCR[5:4]設(shè)置發(fā)送FIFO觸發(fā)數(shù)。若設(shè)為14個,DSP能夠一次寫14個字節(jié)的數(shù)據(jù),然后讀中斷狀態(tài)寄存器ISR判斷FIFO中的數(shù)據(jù)量是否低于設(shè)定的值,如果為低則繼續(xù)寫數(shù)據(jù)。同樣通過FCR[7:6]設(shè)置接收FIFO觸發(fā)數(shù)。若設(shè)置為14個,ST16C2552可一次從外面接收14個字節(jié)數(shù)據(jù),DSP可以讀寄存器ISR判斷是否收滿,若已經(jīng)收滿,可一次從ST16C2552讀入14個數(shù)據(jù),通過讀寄存器LSR的0位判斷接收寄存器中是否還有數(shù)據(jù),如果有,繼續(xù)讀出,直到讀完為止。
FIFO收發(fā)也可以通過中斷方式來實現(xiàn)。若產(chǎn)生中斷則INT引腳為高電平。如果沒有配置ST16C2552工作在FIFO模式下,則DSP每次只能發(fā)送或者接收一個字節(jié)的數(shù)據(jù),就觸發(fā)中斷或者查詢寄存器狀態(tài)位。這里給出來用中斷方式進行通訊的流程和C語言程序。
設(shè)ST16C2552處于被動響應(yīng)通訊方式,初始設(shè)置為接收狀態(tài),接收上位機數(shù)據(jù),判斷處理后轉(zhuǎn)為發(fā)送方式向上位機回復(fù)數(shù)據(jù)。
4.1 初始化
ST16C2552初始化流程如圖3所示,C語言程序如下:
4.2 中斷發(fā)送和接收
以通道1為例,系統(tǒng)中斷發(fā)送、接收數(shù)據(jù)流程分別如圖4、5所示,C語言程序如下:
5 結(jié)束語
基于DSP和ST16C2552的硬件連接已經(jīng)調(diào)試成功,TMS320LF2407的程序也通過了CCS編譯,并在電路板上調(diào)試成功。調(diào)試結(jié)果表明,在波特率115 200 b/s下通訊數(shù)據(jù)傳輸準確,誤碼率極低。該系統(tǒng)現(xiàn)已應(yīng)用于產(chǎn)品中。只要將該設(shè)計的電路連接和程序稍加改動,就可以應(yīng)用于其他DSP、單片機的高速串行口擴展,非常有用。