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