用多路復用器擴展MCU串口
多微控制器(MCU)/微機組成的分布式、主從式系統(tǒng)是現(xiàn)代復雜通信、控制系統(tǒng)的典型解決方案。分布式環(huán)境下的多機協(xié)同,要求系統(tǒng)狀態(tài)和控制信息在多機間進行快速傳遞,這通常借助簡單有效的串行通信方式。現(xiàn)有的微控制器一般所帶的串行接口非常適用于點對點通信的場合;但對于實時性要求高的多機通信場合,這類接口必須在串口數(shù)量和功能上進行擴展,才能滿足對實時性要求較高的應用場合的需要。
本文引用地址:http://www.ex-cimer.com/article/3030.htm本文討論了一種適用于多機實時環(huán)境下的、新的可重配置串口擴展方案。圖1為本方案框圖。多路復用器是本方案的硬件核心。方案的要點是利用Mux動態(tài)地將MCU的串口在串行通道間切換,以達到串口擴展的目的。本文中MCU以89C51為例,Mux 以MAX353為例。
MAX353 是Maxim公司推出的高性能多路復用器,實際可構成兩對單刀單擲模擬開關,兩對開關狀態(tài)由一個引腳控制。MAX353基本參數(shù)為導通電阻小于35Ω;導通時間小于175ns,關斷時間小于145ns。以上參數(shù)完全滿足本方案的使用要求。
以下介紹本串口擴展方案的基本工作原理。
兩串行通道和MAX353、89C51的連接 兩串行通道CH1,CH2通過多路復用器MAX353接到89C51的串口,多路復用器MAX353由89C51的一個I/O引腳控制。其中串行通道CH2的輸出TXD2同時接到89C51的外部中斷輸入請求INT0或INT1上。為了適應各種串口通信協(xié)議的需要,可在電路中加上電平轉換器件,如圖1所示。
中斷源的使用和設置 CH1仍舊使用串口中斷,而CH2使用外部中斷INT0或INT1(下面以INT0為例)。當CH2有信息來時,TXD2上將出現(xiàn)起始標志:一個下跳沿。應將INT0設置成為邊沿觸發(fā),該下跳沿將使89C51進入外部中斷服務程序,將串口切換到CH2。
基本工作原理簡介 假定外部中斷的優(yōu)先級比串口中斷優(yōu)先級高,又假定在默認情況下,89C51通過I/O口控制Max353,將CH1和89C51的串口相連。當CH1有信息來,將引起89C51的串口中斷,實時地接收CH1的信息;反之,當CH2發(fā)來信息時,即由遠端機發(fā)來“發(fā)送字符”(發(fā)送該字符的目的僅僅是要89C51產生外部中斷,該字符姑且稱之為“發(fā)送字符”)以引起外部中斷。利用該中斷,控制MAX353將CH2切到89C51的串口,為接受來自CH2的正規(guī)信息作準備;CH2再有信息來時,即可通過89C51串口接收,實現(xiàn)串口擴展。
通過以上步驟,系統(tǒng)已經在硬件上已經完成了串口擴展,尚需編制相應的支撐軟件。
如果89C51是發(fā)送方,那么端機地址(這里地址指的是通道)顯然已知,據(jù)此控制MAX353,將串口切換到正確的通道上即可;如果89C51是接收方,89C51不知道信息何時、從何通道來,為此需要建立特定的全局標志。
首先89C51的串口中斷服務程序應區(qū)分是CH1還是CH2引起的串口中斷,檢查控制MAX353串口I/O引腳狀態(tài)可作出判斷;設置全局標志CH1_Abort作為CH1串口中斷服務程序提前終止標志;設置全局標志Extern_on以表明外部中斷曾發(fā)生。CH1串口中斷服務程序檢測該標志,決定是否需要快速退出并復位Extern_on;為了提供系統(tǒng)的容錯能力,用一個定時器檢查CH2占用串口的時間。定時器的時間定為通道切換的最長時間(包括軟件和硬件所需時間)。圖2給出了89C51的詳細工作流程。在此采用了下面直觀的類狀態(tài)遷移圖的形式,特別是對全局性的狀態(tài)標志(如Extern_on、CH1_Abort等)的設立和復位進行說明。
從圖1可以清楚地看出,本方案硬件開銷極少;原則上,以此方法可對微控制器的串口作進一步的擴展。串口的擴展為系統(tǒng)提供了實時性強、可靠性高的串行通信能力;可通過改變通道和MAX353連接改變兩通道的優(yōu)先級,達到靈活配置通道優(yōu)先級的目的。■
參考文獻
1. 何立民:《MCS-51系列單片機應用系統(tǒng)設計系統(tǒng)配置與接口技術》,北京航空航天大學出版社,1996年12月;
2. AT89C51:8-Bit Microcontroller with 4K Bytes Flash;Atmel Corp.
3. 劉樂善等:《微型計算機接口技術原理及應用》,華中理工大學出版社,1998年1月。
評論