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