用ST16C2552實(shí)現(xiàn)DSP高速串行通訊擴(kuò)展
1 引言
隨著大規(guī)模集成電路工藝技術(shù)的迅速發(fā)展,dsp已經(jīng)越來(lái)越廣泛地應(yīng)用于工業(yè)場(chǎng)合。工業(yè)現(xiàn)場(chǎng)由于許多場(chǎng)合通訊雙方相距較遠(yuǎn),為了保證通訊成本和可靠性,必須采用串行方式進(jìn)行通訊。目前ti公司dsp都只有一個(gè)uart口,比如tms320lf2407,當(dāng)同時(shí)需要與上位機(jī)和下面的被控對(duì)象進(jìn)行通訊,或者同時(shí)連接幾個(gè)上位機(jī)時(shí),則需要對(duì)dsp進(jìn)行串行通訊口擴(kuò)展,而使用可編程的st16c2552可以一次擴(kuò)展兩組相互獨(dú)立的串口,滿足各種條件下串行通訊的要求。2 st16c2552介紹
st16c2552是exar公司生產(chǎn)的通用異步通訊擴(kuò)展器件,并與飛利浦公司的sc16c2552相兼容,可擴(kuò)展2路獨(dú)立的串行通訊,可編程設(shè)定通訊起始位、停止位和校驗(yàn)位以確保通訊的可靠性,可編程配置各種不同的波特率,在24 mhz的時(shí)鐘下,stl6c2552的數(shù)據(jù)傳輸速率可高達(dá)1.5 mbit/s。st16c2552提供16字節(jié)的接收和發(fā)送fifo,允許用戶配置四種不同的中斷出發(fā)點(diǎn),dsp可以根據(jù)配置一次并行讀人多個(gè)數(shù)據(jù),提高了傳輸效率,節(jié)省了dsp的工作時(shí)間。stl6c2552在2.5 v、3.3 v、5 v供電條件下均可以正常工作,不需要增加任何緩沖器件就可以和各種dsp或者單片機(jī)直接連接,非常方便。
st16c2552提供了兩套內(nèi)部寄存器,每套由12個(gè)寄存器組成,用于監(jiān)測(cè)和控制uart每個(gè)通道的功能。分別為:發(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ù)速率(時(shí)鐘)控制寄存器(dll/dlm),一個(gè)用戶可訪問(wèn)的暫存寄存器(spr)和一個(gè)選擇功能寄存器(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相連。兩個(gè)通道的中斷引腳分別連接到dsp的外部中斷引腳xint1和xint2。采用有源14.7456 mhz晶體振蕩器為st16c2552提供時(shí)鐘頻率。兩組uart分別通過(guò)兩個(gè)max3485連接到外部rs-485總線,max3485的使能由dsp的iopc6和。iopc7兩引腳控制,整個(gè)系統(tǒng)采用3.3 v供電。st16c2552和tms320lf172407的最小系統(tǒng)原理圖。
4 st16c2552通訊流程和編程范例
st16c2552的內(nèi)部寄存器通過(guò)3根地址線a0~a2進(jìn)行尋址,通過(guò)配置寄存器lcr確定具體尋址的寄存器。通過(guò)不同的寄存器配置,可以實(shí)現(xiàn)需要的各種功能。st16c2552內(nèi)部分別有16字節(jié)的發(fā)送和接收f(shuō)ifo,通過(guò)寄存器對(duì)fcr的fcr[0]置1使能,使st16c2552工作在fifo模式。
fifo收發(fā)可以通過(guò)查詢方式來(lái)實(shí)現(xiàn)。在該模式下,通過(guò)fcr[5:4]設(shè)置發(fā)送fifo觸發(fā)數(shù)。若設(shè)為14個(gè),dsp能夠一次寫(xiě)14個(gè)字節(jié)的數(shù)據(jù),然后讀中斷狀態(tài)寄存器isr判斷fifo中的數(shù)據(jù)量是否低于設(shè)定的值,如果為低則繼續(xù)寫(xiě)數(shù)據(jù)。同樣通過(guò)fcr[7:6]設(shè)置接收f(shuō)ifo觸發(fā)數(shù)。若設(shè)置為14個(gè),st16c2552可一次從外面接收14個(gè)字節(jié)數(shù)據(jù),dsp可以讀寄存器isr判斷是否收滿,若已經(jīng)收滿,可一次從st16c2552讀入14個(gè)數(shù)據(jù),通過(guò)讀寄存器lsr的0位判斷接收寄存器中是否還有數(shù)據(jù),如果有,繼續(xù)讀出,直到讀完為止。
fifo收發(fā)也可以通過(guò)中斷方式來(lái)實(shí)現(xiàn)。若產(chǎn)生中斷則int引腳為高電平。如果沒(méi)有配置st16c2552工作在fifo模式下,則dsp每次只能發(fā)送或者接收一個(gè)字節(jié)的數(shù)據(jù),就觸發(fā)中斷或者查詢寄存器狀態(tài)位。這里給出來(lái)用中斷方式進(jìn)行通訊的流程和c語(yǔ)言程序。
設(shè)st16c2552處于被動(dòng)響應(yīng)通訊方式,初始設(shè)置為接收狀態(tài),接收上位機(jī)數(shù)據(jù),判斷處理后轉(zhuǎn)為發(fā)送方式向上位機(jī)回復(fù)數(shù)據(jù)。4.1 初始化
st16c2552初始化流程如圖3所示,c語(yǔ)言程序如下:
4.2 中斷發(fā)送和接收
以通道1為例,系統(tǒng)中斷發(fā)送、接收數(shù)據(jù)流程分別如圖4、5所示,c語(yǔ)言程序如下: