新型通用異步收發(fā)器MAX3100在單片機(jī)系統(tǒng)中的應(yīng)用
在MCS-51單片機(jī)應(yīng)用系統(tǒng)中,串行數(shù)據(jù)通信通常采用同步/異步接收發(fā)送器8251,但因8251的通信波特率不高,且芯片不能應(yīng)用于晶振較高的系統(tǒng),這就使得要求高運(yùn)行速度、高速收發(fā)數(shù)據(jù)的系統(tǒng)無法應(yīng)用8251芯片收發(fā)數(shù)據(jù),MAXIM公司推出的新型UART芯片MAX3100正好填補(bǔ)了這個空白。MAX3100具有以下幾個鮮明的特點(diǎn):
l 支持高速通信,最高通信波特率可達(dá)230KBPS;
2 能工作在較高頻率的系統(tǒng)中,如可用在晶振為40MHZ的系統(tǒng)中;
3 支持低電壓,低功耗;
4 體積小,可節(jié)省印制版空間;
5 支持紅外通信。
一、引腳功能
MAX3100有DIP和QSOP兩種封裝形式,以DIP封裝為例,它的引腳排列如圖1所示,各引腳的功能簡述如下:
1) DIN:串行數(shù)據(jù)輸入端。串行時鐘的上升沿鎖存DIN數(shù)據(jù)。
2) DOUT:串行數(shù)據(jù)輸出端。數(shù)據(jù)由串行時鐘的下降沿同步輸出,當(dāng)
3) SCLK:串行時鐘輸入端。
4)
5) IRQ:中斷請求信號。低電平有效。
6)
7) X1和X2:晶振引腳。
8)
9)
10) RX:接收輸入端
11)TX:發(fā)送輸出端
二、 讀寫控制指令及時序
1. 寫控制字
寫控制字各位含義如表1所示??刂谱謱懭牒髮⑶宄?/span>FIFO寄存器以及R、T、RA/FE、D0r~ D7r、D0t~D7t、Pt、Pt等寄存器,而
2.讀控制字
從MAX3100讀回的控制字如表2所示,讀控制字同時還可以通過配置命令最低位TEST=1,使器件進(jìn)入測試狀態(tài),此時TX和RX構(gòu)成回路,完成自發(fā)自收的操作。
3.寫數(shù)據(jù)
寫數(shù)據(jù)格式如表3所示,要發(fā)送的數(shù)據(jù)由寫數(shù)據(jù)操作寫到數(shù)據(jù)寄存器,16位字中的最后7位或8位是實(shí)際發(fā)送的數(shù)據(jù)。如果只想改變
4.讀數(shù)據(jù)
從MAX3100讀得的數(shù)據(jù)如表4所示,在讀數(shù)據(jù)的同時將清除R和
三、 工作原理
MAX3100的工作原理如圖2所示,它包含一個簡單的UART和波特率發(fā)生器,以及SPI接口和中斷發(fā)生器,只須往一個內(nèi)部寄存器寫入控制字,即可設(shè)置UART的波特率、數(shù)據(jù)字長、校驗(yàn)使能。該“寫配置”寄存器包括四個中斷屏蔽位,并可選擇普通UART或IRDA定時兩種工作模式。可編程波特率發(fā)生器可被設(shè)置于300到230K波特間。通過寫配置寄存器的分頻比(BRD),對晶振頻率進(jìn)行分頻。MAX3100的振蕩器可選用1.8432MHz或3.6864MHz的晶體,也可由X1端輸入占空比為45%到55%的外部時鐘。
SPI接口是與微控制芯片的同步串行口,和普通的I/O口相連,接受從微控制芯片發(fā)出的片選,數(shù)據(jù)及時鐘信號,并將其裝載到發(fā)送緩沖器,內(nèi)部邏輯添加起始位和停止位,并按照選定的波特率進(jìn)行移位,通過TX發(fā)送出去。在接收數(shù)據(jù)時,發(fā)出中斷請求,并把接收到的數(shù)據(jù)傳送給微控制芯片。波特率發(fā)生器根據(jù)寫入B0,B1,B2,B3的值,為UART提供時鐘信號。UART包括收/發(fā)緩沖區(qū),收/發(fā)移位寄存器,發(fā)送時,按設(shè)定的波特率,將數(shù)據(jù)轉(zhuǎn)換成串行異步通信格式,通過TX引腳發(fā)送出去。接收時,并根據(jù)由高到低的跳變自動檢測起始位,MAX3100以16倍頻的速率采集RX引腳,將采集到的數(shù)據(jù)放入8位的FIFO寄存器中。
在MAX3100中,可發(fā)出4種中斷請求信號:奇偶校驗(yàn)中斷、接收中斷、幀錯誤/(待機(jī)接收)中斷、發(fā)送中斷??筛鶕?jù)需要,對中斷屏蔽位(TM、RM、PM
向MAX3100寫入數(shù)據(jù)時,在DIN寫入的是一個16位的字,其中高八位設(shè)置的內(nèi)容是:寫入標(biāo)志、允許TX輸出、RTS引腳設(shè)定以及傳送校驗(yàn)位設(shè)定。低八位才是要傳送的數(shù)據(jù)。 從MAX3100讀出數(shù)據(jù)時,仍舊要在DIN寫入一個16位的字(0000H),再從DOUT讀入16位的字,其中的高八位是:接收/發(fā)送緩沖區(qū)的狀態(tài),數(shù)據(jù)錯/溢出狀態(tài),接收/校驗(yàn)位狀態(tài)和CTS的狀態(tài),低八位才是接收到的數(shù)據(jù)。
值得注意的是:由于MAX3100采用的是全雙工通信,即DIN,DOUT引腳上同時有數(shù)據(jù)傳送。在SCLK時鐘的下降沿,將數(shù)據(jù)從DOUT引腳發(fā)送出去,在SCLK時鐘的上升沿,從DIN引腳接收數(shù)據(jù)。
四、應(yīng)用實(shí)例
1. 硬件設(shè)計
圖4所示為MAX3100與78E58單片機(jī)采用SPI接口方式,實(shí)現(xiàn)高速串行數(shù)據(jù)收發(fā)的應(yīng)用實(shí)例,在電路中用MAX3100取代了以往常用的UART8251,以實(shí)現(xiàn)高性能的通信模式。78E58的P1.0~P1.3分別接MAX3100的DIN、DOUT、SCLK以及
78E58單片機(jī)接收時,上位機(jī)傳過來的數(shù)據(jù)通過串行口由RS-232轉(zhuǎn)換TTL電平后,MAX3100串行接收,串行輸入到MCU中。78E58單片機(jī)發(fā)送時,MCU將要發(fā)送的數(shù)據(jù)串行送入MAX3100,通過RS-232轉(zhuǎn)換成232電平后串行輸出。
圖4 MAX3100與78E58單片機(jī)應(yīng)用實(shí)例
2. 軟件設(shè)計
上述電路相應(yīng)的用C51編寫的參考程序如下:
在程序設(shè)計時,我們要注意的是:如果是大批量的數(shù)據(jù)的接收,要通過硬件設(shè)置分批發(fā)送。當(dāng)接收完一批數(shù)據(jù)后,由于當(dāng)TE為高電平時,只改變
同時我們還要考慮MAX3100在通知計算機(jī)不要發(fā)送數(shù)據(jù)后還有一批的數(shù)據(jù)在緩沖區(qū)內(nèi),這批數(shù)據(jù)要注意接收,而且這些數(shù)據(jù)應(yīng)留有一個接收的時間余地。也就是說在通知計算機(jī)不要發(fā)送數(shù)據(jù)之后和開始執(zhí)行操作之前要延時一段時間,以保證數(shù)據(jù)的全部接收。
五: 結(jié)論
采用MAX3100作為擴(kuò)展的UART,具有價格低廉,功耗小,實(shí)現(xiàn)容易的特點(diǎn),而且比傳統(tǒng)的UART8251占用體積小,傳輸速度快,工作頻率高,具有比8251更優(yōu)越的性能。
前面所給程序是通過端口發(fā)送與接收數(shù)據(jù)的關(guān)鍵,對于任何一種基于MCS-51單片機(jī)采用MAX3100實(shí)現(xiàn)串行收發(fā)的應(yīng)用系統(tǒng)來說都是非常有幫助的。經(jīng)過實(shí)踐證明,該系統(tǒng)運(yùn)行效果良好,數(shù)據(jù)傳送安全可靠,傳送快,應(yīng)用廣泛。
在實(shí)踐中發(fā)現(xiàn)在系統(tǒng)晶振采用40MHZ,振蕩器晶振選用1.8432MHZ時,C語言編寫的MAX3100接收程序工作在115200波特率時有數(shù)據(jù)丟失的情況,最高只能到57600波特率,用匯編語言編寫的程序則可以達(dá)到115200波特率。如果MAX3100晶振選用3.6864MHZ時,用匯編語言編寫的程序可以達(dá)到其最高的波特率。