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