串行同步通信的應用
該文給出利用8251A實現(xiàn)串行同步通訊設(shè)計的方法
關(guān)鍵詞:串行同步 8251A 同步時鐘 Modem
一、引言
在分布式測控系統(tǒng)中,上位機常常采用工業(yè)PC而工作站則用STD/PC總線工業(yè)控機,它們之間的數(shù)據(jù)通信很多采用串行異步方式,而串行同步方式則鮮為人用。在一次為用戶開發(fā)NEC終端機仿真系統(tǒng)過程中為給系統(tǒng)提供同步通信模塊,以STD5221 通信板,配合MultiModem224調(diào)制解調(diào)器實現(xiàn)遠程串行同步通信。(如圖1)
圖1
二、8251A初始化
在不同系統(tǒng)或計算機之間進行數(shù)據(jù)通信主要采用并行和串行兩種方式。8251A是一種通用的同/異步接收/發(fā)送器(USART)。 在異步方式下的應用在有關(guān)書刊上已屢見不鮮,這里就不加重復。下面我們根據(jù)8251A芯片的使用體會對其在串行同步方式下的通信原理及應用進行著重介紹。在開始發(fā)送或接收之前,8251A必須裝入一組由CPU 產(chǎn)生的控制字。這些控制信號定義了8251A的完整功能含義,并且必須緊跟在一個復位操作之后(內(nèi)部的或外部的)??刂谱址譃閮煞N格式:方式字和命令字。圖2為定義8251A方式字和命令字設(shè)定的初始化與發(fā)送或接收數(shù)據(jù)流程圖。
inital 為初始化程序的主要部分,方式字設(shè)置為止3CH(內(nèi)同步方式,雙同步字符,8位數(shù)據(jù),奇校驗方式)。 命令字設(shè)置為B7H(進入同步字符搜索方式,請求發(fā)送,接收就緒,數(shù)據(jù)端就緒,發(fā)送允許)。
inital proc ; 初始化程序.
: ; 清狀態(tài)口和數(shù)據(jù)口.
mov dx,port ; port 為發(fā)送口/接收口地址
mov al,40h ; 復位操作,目的迫使8251 out dx,al ; 進入方式字格式,
mov al,3ch ; 設(shè)置方式字操作
out dx,al
mov al,55h ; 設(shè)置同步字符操作
out dx,al ; 同步字符 1 為 55h
out dx,al ; 同步字符 2 為 55h
mov al,0b7h ; 設(shè)置命令字操作
ret
inital endp
圖2
三、同步通信體驗
1、時鐘
在串行同步通信中,需要使發(fā)送的數(shù)據(jù)同時帶有同步信息,因此,在硬件電路的設(shè)計中需要保證數(shù)據(jù)流中每一個連續(xù)不斷的數(shù)據(jù)位均由一個基本時鐘控制,并定時在某個特定的間隔上,所以對時鐘要求甚嚴,即使兩個工作站的通訊模板上8251A的晶振頻率標稱值相同,但實際上每個晶振的頻率有所差別,8251A時鐘頻率的誤差將導致同步時鐘相位的移動,離開要求的位置。為了保證進入同步后相位一直被鎖定,我們將Modem 置為同步方式,利用Modem的RXC(接收時鐘)和TXC(傳送時鐘)作為8251A的接收/傳送時鐘,以此來達到傳送時鐘和接收時鐘的同步。
另外8251A的CLK這個輸入信號用作產(chǎn)生器件內(nèi)部的定時,它的頻率必須比RXC與TXC高30倍。
2、發(fā)送
8251A被初始化完后,在CPU向8251A寫一個字符啟動發(fā)送前,TXD輸出端一直處于高平狀態(tài),作為8251A啟動發(fā)送的第一個字符應是SYNC(同步字符)符號。一旦啟動了發(fā)送,TXD輸出端上的數(shù)據(jù)一定以TXC的頻率連續(xù)不停地發(fā)送。在CPU不能及時向傳送緩沖器寫數(shù)之時,SYNC符號將自動插入到TXD數(shù)據(jù)流中,以保持TXD上有數(shù)據(jù)連續(xù)不斷的發(fā)送。
3、接收
同步接收有外同步和內(nèi)同步兩種方式(初始化時,在方式字中設(shè)定,本例設(shè)為內(nèi)同步)。
(1)內(nèi)同步方式下:
命令字的ENTER HUNT位置上的數(shù)據(jù)在RXC的上升沒被采樣RXC 緩沖器與同步字符比較,直到相同為止(若8251A被設(shè)置為雙SYNC方式,則要與第二同步字符比較)。8251A結(jié)束HUNT搜索同步字符狀態(tài)進入同步狀態(tài),處于字符同步中,然后把SYNDET引腳置為高電平。表明接收方已與發(fā)送方同步上。
(2)外同步方式:
外同步方式是發(fā)送方接收主SYNDET腳施加一高電平的方法,迫使脫離HUNT方式,實現(xiàn)發(fā)送方與接收方的同步。
為使不同廠家的設(shè)備兼容,1969年由電子工業(yè)協(xié)會(Electronic Industries Association)公布RS-232-C標準。最初擬制為終端設(shè)備和調(diào)制解調(diào)器之間的連接規(guī)定。它規(guī)定了兩設(shè)備間的電器特性和所需連線的名稱及編號。
在串行通訊鏈路中,將通信設(shè)備分為兩類,以線“2”作為數(shù)據(jù)輸出的通訊設(shè)備稱為DTE(Data Terminal Equipment)。象調(diào)制解調(diào)器將線“2”作為數(shù)據(jù)輸入的通訊設(shè)備稱為DCE (Data Communication Equipment)。這樣假如知道一個設(shè)備是DTE,一個是DCE,即可“2”到“2”,“3”到“3”的一一對應地將它們連接起來。這就是公認的直接連接。但廠家不一定總遵守這個規(guī)定,所以一個給出的通訊設(shè)備是DTE,還是DCE并不能分清。因此在連接兩個通訊設(shè)備時,最有效的方法是根據(jù)RS232-C出腳的名稱,按實際應用需要相聯(lián)。圖3為調(diào)制解調(diào)器與通訊模板的RS232-C 25芯接口的連接圖。
計算機首先發(fā)出數(shù)據(jù)終端就緒信號,然后指示調(diào)制解調(diào)器呼叫遠程站,當調(diào)制解調(diào)器完成聯(lián)通后,它就發(fā)出調(diào)制解調(diào)器就緒信號,通知計算機調(diào)制解調(diào)器已完成通訊準備,此時計算機就發(fā)出請求傳送信號,等調(diào)制解調(diào)器應答了允許發(fā)送信號后,即開始數(shù)據(jù)傳送。
四、控制字設(shè)置與軟件實現(xiàn)
8251A的引腳上有一“控制/信號”信號C/D,此信號和“讀/寫”信號合起來通知8251A當前讀寫的是數(shù)據(jù)還是控制字.狀態(tài)字。當C/D=0進行讀寫時,讀出和寫入的是數(shù)據(jù)。當C/D=1進行寫入時,寫入的是控制字、方式字和同步字符;C/D=1進行讀出時,是從狀態(tài)寄存器中讀出的狀態(tài)。那么,在C/D=1寫入時,到底寫到哪一個寄存器呢?這涉及8251A初始化的有關(guān)約定。這個約定有三條: (1)芯片復位后,第一次用C/D=1寫入的值是方式字;(2)如果方式字中規(guī)定了同部方式,接著用C/D=1寫入的就是同部字符;(3)在此之后,以C/D=1寫入的都被作為命令字。
圖3
從原則上來說, 象8251A這樣的8位接口芯片,連接在16位系統(tǒng)時,低8位的數(shù)據(jù)總寫到偶地址, 高8位的數(shù)據(jù)總寫到奇地址. STD5221也遵從這個原則,不將地址總線的最低位A0連到8251A的地址線上,而將地址總線A1作為8251A的地址最低位地址總線A0 經(jīng)過反相后連到8251A的C/D端.(在常見的具有USART的PC系統(tǒng)中,A0是直接連接到8251A的C/D端,與STD5221相反,這一點在應用時要注意)。注:據(jù)實驗結(jié)果,在C/D=1寫入的第一個命令字之后,先向數(shù)據(jù)口寫同步字符,才能啟動同步發(fā)送(在流程圖中有標示)。
五、通訊模板及程序說明
STD5221 是一種通用的串行數(shù)據(jù)通訊插件,它提供了兩套完全獨立的RS232-C串行數(shù)據(jù)通道。本例子在STD V40系統(tǒng)Ⅱ下開發(fā), 以STD5221作為通訊模板經(jīng)過 Modem以同步方式互發(fā)一串字符。限于篇幅未能完全收錄。
評論
查看更多