基于TL16C554的水情中心站多路數據接收
1 引 言
水情自動測報系統一般由中心站、中繼站和遙測站組成。水情自動測報系統的中心站用來接收遙測站(或經中繼站轉發)的數據并進行解調、存儲和處理,通過數據庫和應用軟件實現防汛調度需求。其中中心站一般由接收天線、饋線、避雷器、無線接收機(電臺)、解碼器、工業控制計算機(或PC)組成。
為了滿足水情、城市防洪計算機監控等遙測遙控系統中心站的數據交換的需要,常常要求幾個終端共享遙測數據,即要求把中心站獲取的數據資料通過無線或有線信道,傳送到各個共享數據的終端,而各個終端也可以與中心站進行數據交換。最為常用的是采用異步串行通信方式,實現中心站與各終端的多路數據的接收與發送。
2 系統設計
2.1 TL16C554
在異步串行通信中,一般都要求設備的串行口要符合RS-232、RS-485等串行通信標準,并按該標準定義的信號進行信息控制和數據傳輸,能夠實現該功能的集成電路通常稱為UART,即通用異步接收器/發送器。利用At89s8252構成主從式多機串行通信系統時發現,主機At89s8252一方面要和從機通訊,另一方面還要和終端機通訊,此時便有必要進行串口擴展,同時多臺從機有可能同時與主機傳送數據,此時采用4通道異步收發器TL16C554顯然是一種較好的選擇。
TL16C554是TI公司生產的4通道異步收發器集成芯片,它的每個通道能從外圍設備或MODEM接收數據,實現串-并轉換;同時它也可從CPU端接受數據,實現并-串轉換。在FIFO模式下,傳輸和接收前將數據緩沖為16字節數據包,減少了CPU的中斷數量。內部包含4片改良的16C550異步傳輸器件,使得串行I/O更加可靠,每個信道可實現串行和并行兩種連接方式的轉換,每個信道的狀態可以通過CPU的操作讀取,可以獲取操作情況或任何的錯誤狀態。三態輸出為雙向數據總線和控制總線提供TTL驅動能力、優先級中斷系統控制、可編程的串行接口特性。
TL16C554的主要特點如下:(1)由4個帶有邏輯控制的TL16C550異步通信單元組成;(2)最高可達1 Mbps的波特率,具有可編程的波特率發生器,便于靈活選擇數據收發頻率;(3)具有16字節的收發FIFO 緩沖器;(4)具有可獨立控制的發送、接收、線路狀態和MODEM 狀態中斷;(5)具有全雙工的接收發送線路,可獨立進行接收發送控制;(6)全面的線路狀態報告功能;(7)充分分級的中斷系統控制;(8)三態TTL電平輸出。
TL16C554有68引腳PLCC和80引腳TQFP兩種封裝形式,各個引腳的功能為:A0~A2為片內寄存器的選擇信號端;D0~D7為雙向8位數據線;IOR為讀選通端(低電平有效);IOW為寫選通端(低電平有效);INTA~INTD為中斷A、B、C、D(高電平有效);CSA~CSD為片選A、B、C、D(低電平有效);XTAL1、XTAL2為外部時鐘端,該兩腳可接晶振或外部時鐘信號;RXA~RXD為串行輸入A、B、C、D端;TXA~TXD為串行輸出A、B、C、D端;RXRDY為接收準備好信號端(低電平有效);TXRDY為發送準備好信號端(低電平有效)。
2.2 系統框圖
利用TL16C554實現中心站與各終端之間多路數據接收的系統框圖如圖1所示,數據采集器將采集到的水文數據存儲在單片機里,這里的主控MCU使用的是ATMEL公司的AT89S8252。主控MCU要完成的工作是將收集到的水文信息存儲到本地計算機,同時通過TL16C554的4個異步串行口向各個電臺發送,另外也可以通Internet向遠程計算機發送。四個電臺也能通過四個Modem向本地PC發送信息。
2.3 硬件電路圖
下面介紹一下中心站多路數據接收的硬件電路圖。圖3中,TL16C554的數據線D0~D7直接與AT89S8252的P0口相連;TL16C554的片內寄存器選擇線A2~A0經過地址鎖存器74HC373接AT89S8252的低位地址P0.2~P0.0,此時AT89S8252對TL16C554片內寄存器的讀寫操作同對外部RAM讀寫一樣。TL16C554 的片選CSA~CSD 分別接P1.0~P1.3,這樣可以通過對P1.0~P1.3的清零來選通通道A~D。TL16C554 的中斷線INTA~INTD 分與AT89S8252的P1.4~P1.7相連,并經過一個四輸入或非門接AT89S8252的INT0。這樣當多個串口同時使用時,任一個指定通信事件的出現都將使UART產生一次通信中斷,并觸發外部INT0中斷。在中斷服務子程序中,通過對P1.4~P1.7的檢測來確定中斷到底來自于哪個口,并完成相應的數據處理。TL16C554的IOR、IOW和RESET直接與AT89S8252的RD、WR和RESET相連,串行輸出口A通過調制解調器MC145442與電臺J1相連,由于B、C、D口與電臺連接方式雷同,故省略未畫出。
3 軟件設計
系統軟件設計的重要部分就是TL16C554 的初始化。系統上電后,應分別初始化要使用的每一個通道,并對其內部13個寄存器的讀寫、波特率、數據幀格式以及FIFO 控制等進行設置。下面是TL16C554 的初始化程序:
ini16554 :
mov dptr , # 0fffbh ;指向線性控制寄存器
mov a , # 80h
movx @dptr ,a
anl dpl , # 0f8h
mov a , # 0ch
movx @dptr ,a ;送波特率常數9600
inc dpl
clr a
movx dptr ,a ;送波特率常數高位00
inc dpl
inc dpl
mov dptr , # 0fffbh
mov a , # 03h ;設置數據幀格式,數據位8 位,1個停止位
movx @dptr ,a
inc dpl ;modem 控制器bit3 控制中斷
正確產生
mov a , # 02bh
movx @dptr ,a anl dpl , # 0f8h
orl dpl , # 02h
mov a , # 083h
movx @dptr ,a ;接收FIFO 有效, 8個字節一次中斷
anl dpl , # 0f8h
orl dpl , # 01h ; IER 中斷允許控制器
mov a , # 001h
movx @dptr ,a ;接收緩沖區有數中斷
ret
4 結束語
實驗表明,上述軟硬件設計可以實現四路串行信號的可靠及時異步收發服務。而且利用TL16C554及AT89S8252構成的串口擴展系統,硬件接口簡單,使用經濟,并且數據傳輸距離可遠可近。這種主從式多機串行通信系統已被應用到實際系統中,該電路穩定可靠,具有一定的應用價值。
評論