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