AT89C5131是一個(gè)基于52內(nèi)核的單片機(jī)。AT89C5131的USB2.0全速?gòu)?a href="http://ttokpm.com/emb/dsp/20110822211327.html" target="_blank">接口的結(jié)構(gòu)如圖3所示,其包括USB D+/D-的接口緩沖,數(shù)字鎖相環(huán),串行接口引擎(SIE)和通用功能接口(UFI)。其中數(shù)字鎖相環(huán)以單片機(jī)的時(shí)鐘為輸入,產(chǎn)生了USB接口其他部分所需的48MHz時(shí)鐘。串行接口引擎完成USB通信物理層NRZI碼的編碼與解碼,CRC生成以及校驗(yàn)與糾錯(cuò)。通用功能接口包含了一個(gè)雙端口的數(shù)據(jù)存儲(chǔ)器,其一端與串行接口引擎鏈接,另一端通過數(shù)據(jù)總線與單片機(jī)相連接,使單片機(jī)可以通過特殊功能寄存器完成對(duì)USB2.0從接口的控制與通信。
1 系統(tǒng)硬件設(shè)計(jì)
基于AT89C5131的通信和控制模塊主要完成以下功能:在通信方面,通過USB實(shí)現(xiàn)與計(jì)算機(jī)的通信,接收計(jì)算機(jī)對(duì)設(shè)備的控制命令和計(jì)算機(jī)發(fā)送的數(shù)據(jù),并將設(shè)備的工作狀態(tài)發(fā)送給計(jì)算機(jī),同時(shí)將計(jì)算機(jī)傳來的控制命令和數(shù)據(jù)通過SPI接口傳送到其他設(shè)備模塊,并收集其他設(shè)備模塊的狀態(tài)信息;在控制方面,AT89C5131負(fù)責(zé)收集設(shè)備控制顯示面板的控制命令,更新設(shè)備顯示狀態(tài)等。由于采用USB通信系統(tǒng),AT89C5131除了能夠根據(jù)控制面板控制設(shè)備的運(yùn)行,也能根據(jù)計(jì)算機(jī)的命令控制設(shè)備的運(yùn)行,實(shí)現(xiàn)了對(duì)設(shè)備的雙重控制。該系統(tǒng)中AT89C5131的外圍連接如圖1所示。
?
1.1 AT89C5131的鍵盤端口特性及鍵盤設(shè)計(jì)
AT89C5131擁有一個(gè)允許與8×n矩陣鍵盤連接的鍵盤接口,其輸入均具有高或低電平可編程中斷能力。鍵盤接口與C51內(nèi)核的通信通過3個(gè)特殊功能寄存器實(shí)現(xiàn),分別是鍵盤電平選擇寄存器(KBLS)、鍵盤中斷使能寄存器(KBE)和鍵盤標(biāo)志寄存器(KBF)。
AT89C5131的鍵盤輸入被設(shè)計(jì)為分享同一個(gè)中斷向量的8個(gè)獨(dú)立的中斷源,寄存器IEN1中的中斷使能位KBD允許鍵盤中斷全局的使能及不使能,根據(jù)KBLS每一位的值,每一個(gè)鍵盤輸入都有檢測(cè)出可編程電平的能力,然后鍵盤檢測(cè)就被反應(yīng)到KBF中,而通過軟件使用KBE可以屏蔽中斷標(biāo)志KBF.正是這樣的結(jié)構(gòu)使得鍵盤排列可以從1×n延伸至8×n的矩陣,同時(shí)還使得P1輸入用于其他用途。
在該設(shè)計(jì)中,將4個(gè)鍵盤端口(P1.O,P1.2,P1.3,P1.4)及2個(gè)外部中斷端口(P3.2,P3.3)與控制面板上的6個(gè)按鍵相連;實(shí)現(xiàn)系統(tǒng)的內(nèi)外、啟停、暫停繼續(xù)控制及參數(shù)組的選擇等功能。這6個(gè)端口都采用低電平觸發(fā)產(chǎn)生中斷。
1.2 USB各端口的特性及USB通信設(shè)計(jì)
AT89C5131的USB2.0全速?gòu)慕涌诎?個(gè)終端點(diǎn),其中0號(hào)終端點(diǎn)被配置成為默認(rèn)的控制終端點(diǎn)。其他1~6號(hào)終端點(diǎn)都可以通過特殊寄存器配置為控制(Control),突發(fā)(Bulk),中斷(Interrupt)和周期性(Isochronous)模式。由于每一個(gè)終端點(diǎn)都由一組獨(dú)立的寄存器對(duì)該終端點(diǎn)進(jìn)行控制、狀態(tài)識(shí)別和數(shù)據(jù)的存取,則如果將這些寄存器直接映射到51單片機(jī)的特殊功能寄存器地址空間顯然是容納不下的。因此,這7個(gè)終端點(diǎn)的7組寄存器在單片機(jī)的地址空間中其實(shí)使用的是同一組寄存器的地址,而通過一個(gè)特殊功能寄存器(UEPNUM)來選擇當(dāng)前該組寄存器實(shí)際選擇的是哪個(gè)終端點(diǎn)的寄存器組,這樣就大大節(jié)省了所占用的地址空間,為集成其他特殊外設(shè)提供了可能。
在該設(shè)計(jì)中,PC機(jī)將數(shù)據(jù)通過USB傳給AT89C5131,傳輸完一次后AT89C5131向PC機(jī)回傳數(shù)據(jù)傳輸正確與否的標(biāo)志,PC機(jī)可以根據(jù)收到的標(biāo)志進(jìn)行相應(yīng)的操作。PC機(jī)向AT89C5131傳輸?shù)臄?shù)據(jù)主要是參數(shù)和控制命令兩種類型。為將其區(qū)分開來,使用USB的端口4和端口6接收這兩種數(shù)據(jù)。其中,端口4用來接收控制命令;端口6用來接收參數(shù)。相應(yīng)地,控制命令的回傳使用端口5;參數(shù)的回傳使用端口3.為簡(jiǎn)單起見,端口3~端口6均被配置為批量類型;端口3、端口5為IN端口;端口4、端口6為OUT端口。