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