AT89C5131在接口設計中的應用
AT89C5131的USB2.0全速從接口的結構如圖3所示,其包括USB D+/D-的接口緩沖,數字鎖相環(huán),串行接口引擎(SIE)和通用功能接口(UFI)。其中數字鎖相環(huán)以單片機的時(shí)鐘為輸入,產(chǎn)生了USB接口其他部分所需的48MHz時(shí)鐘。串行接口引擎完成USB通信物理層NRZI碼的編碼與解碼,CRC生成以及校驗與糾錯。通用功能接口包含了一個(gè)雙端口的數據存儲器,其一端與串行接口引擎鏈接,另一端通過(guò)數據總線(xiàn)與單片機相連接,使單片機可以通過(guò)特殊功能寄存器完成對USB2.0從接口的控制與通信。
1 系統硬件設計
基于A(yíng)T89C5131的通信和控制模塊主要完成以下功能:在通信方面,通過(guò)USB實(shí)現與計算機的通信,接收計算機對設備的控制命令和計算機發(fā)送的數據,并將設備的工作狀態(tài)發(fā)送給計算機,同時(shí)將計算機傳來(lái)的控制命令和數據通過(guò)SPI接口傳送到其他設備模塊,并收集其他設備模塊的狀態(tài)信息;在控制方面,AT89C5131負責收集設備控制顯示面板的控制命令,更新設備顯示狀態(tài)等。由于采用USB通信系統,AT89C5131除了能夠根據控制面板控制設備的運行,也能根據計算機的命令控制設備的運行,實(shí)現了對設備的雙重控制。該系統中AT89C5131的外圍連接如圖1所示。
![]() |
1.1 AT89C5131的鍵盤(pán)端口特性及鍵盤(pán)設計
AT89C5131擁有一個(gè)允許與8×n矩陣鍵盤(pán)連接的鍵盤(pán)接口,其輸入均具有高或低電平可編程中斷能力。鍵盤(pán)接口與C51內核的通信通過(guò)3個(gè)特殊功能寄存器實(shí)現,分別是鍵盤(pán)電平選擇寄存器(KBLS)、鍵盤(pán)中斷使能寄存器(KBE)和鍵盤(pán)標志寄存器(KBF)。
AT89C5131的鍵盤(pán)輸入被設計為分享同一個(gè)中斷向量的8個(gè)獨立的中斷源,寄存器IEN1中的中斷使能位KBD允許鍵盤(pán)中斷全局的使能及不使能,根據KBLS每一位的值,每一個(gè)鍵盤(pán)輸入都有檢測出可編程電平的能力,然后鍵盤(pán)檢測就被反應到KBF中,而通過(guò)軟件使用KBE可以屏蔽中斷標志KBF.正是這樣的結構使得鍵盤(pán)排列可以從1×n延伸至8×n的矩陣,同時(shí)還使得P1輸入用于其他用途。
在該設計中,將4個(gè)鍵盤(pán)端口(P1.O,P1.2,P1.3,P1.4)及2個(gè)外部中斷端口(P3.2,P3.3)與控制面板上的6個(gè)按鍵相連;實(shí)現系統的內外、啟停、暫停繼續控制及參數組的選擇等功能。這6個(gè)端口都采用低電平觸發(fā)產(chǎn)生中斷。
1.2 USB各端口的特性及USB通信設計
AT89C5131的USB2.0全速從接口包含了7個(gè)終端點(diǎn),其中0號終端點(diǎn)被配置成為默認的控制終端點(diǎn)。其他1~6號終端點(diǎn)都可以通過(guò)特殊寄存器配置為控制(Control),突發(fā)(Bulk),中斷(Interrupt)和周期性(Isochronous)模式。由于每一個(gè)終端點(diǎn)都由一組獨立的寄存器對該終端點(diǎn)進(jìn)行控制、狀態(tài)識別和數據的存取,則如果將這些寄存器直接映射到51單片機的特殊功能寄存器地址空間顯然是容納不下的。因此,這7個(gè)終端點(diǎn)的7組寄存器在單片機的地址空間中其實(shí)使用的是同一組寄存器的地址,而通過(guò)一個(gè)特殊功能寄存器(UEPNUM)來(lái)選擇當前該組寄存器實(shí)際選擇的是哪個(gè)終端點(diǎn)的寄存器組,這樣就大大節省了所占用的地址空間,為集成其他特殊外設提供了可能。
在該設計中,PC機將數據通過(guò)USB傳給AT89C5131,傳輸完一次后AT89C5131向PC機回傳數據傳輸正確與否的標志,PC機可以根據收到的標志進(jìn)行相應的操作。PC機向AT89C5131傳輸的數據主要是參數和控制命令兩種類(lèi)型。為將其區分開(kāi)來(lái),使用USB的端口4和端口6接收這兩種數據。其中,端口4用來(lái)接收控制命令;端口6用來(lái)接收參數。相應地,控制命令的回傳使用端口5;參數的回傳使用端口3.為簡(jiǎn)單起見(jiàn),端口3~端口6均被配置為批量類(lèi)型;端口3、端口5為IN端口;端口4、端口6為OUT端口。
1.3 SPI端口特性及SPI通信設計
SPI(Serial Peripheral Interface--串行外設接口)總線(xiàn)系統是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進(jìn)行通信以交換信息。SPI有三個(gè)寄存器分別為:控制寄存器SPCR,狀態(tài)寄存器SPSR,數據寄存器SPDR.外圍設置FLASHRAM、網(wǎng)絡(luò )控制器、LCD顯示驅動(dòng)器、A/D轉換器和MCU等。SPI總線(xiàn)系統可直接與各個(gè)廠(chǎng)家生產(chǎn)的多種標準外圍器件直接接口,該接口一般使用4條線(xiàn):串行時(shí)鐘線(xiàn)(SCLK)、主機輸入/從機輸出數據線(xiàn)MISO、主機輸出/從機輸入數據線(xiàn)MOSI和低電平有效的從機選擇線(xiàn)SS(有的SPI接口芯片帶有中斷信號線(xiàn)INT、有的SPI接口芯片沒(méi)有主機輸出/從機輸入數據線(xiàn)MOSI)。SPI接口的全稱(chēng)是"Serial Peripheral Interface",意為串行外圍接口,是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應用在EEPROM,FLASH,實(shí)時(shí)時(shí)鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。
AT89C5131的SPI模塊允許在McU和其他外圍設備之間實(shí)現全雙工、同步、串行通信,它能以配置為主或者從兩種操作模式提供可編程極性和相位串行時(shí)鐘,同時(shí)還提供8個(gè)可編程的主機時(shí)鐘率。SPI模塊包括4個(gè)端點(diǎn)(MOSI,MISO,SCK,SS),MOSI和MISO都是用來(lái)傳輸數據的,且每次只能傳輸1個(gè)字節的數據。不同的是,MOSI將數據由主機輸出從機輸入,而MISO正好相反。SCK信號用以使通過(guò)MOSI和MI-SO的數據輸人/輸出設備同步,它可以由主機驅動(dòng)產(chǎn)生8個(gè)時(shí)鐘周期,用以完成一個(gè)字節在串行通道上的交換。SS用于從機的選擇,低有效。SPI模塊的配置和初始化可以通過(guò)寄存器SPCON完成,而數據的交換則需要使用寄存器SPSTA和SPDAT兩個(gè)寄存器,在軟件編寫(xiě)過(guò)程中,SPI能否正常工作主要取決于對上述3個(gè)寄存器的操作。
在該設計中,SPI被配置為主機模式;SS端口處于無(wú)效狀態(tài);AT89C5131通過(guò)MOSI端口向DSP傳輸參數及控制命令;DSP通過(guò)軟件設置P1.1(SS)端口的狀態(tài)表明數據是否正確接收,即若正確接收,則置P1.1為1,否則置P1.1為0;AT89C5131通過(guò)檢測P1.1的值來(lái)決定是否重傳數據。
2 系統實(shí)現
要使得上述設計在工程應用中得以實(shí)現,在硬件設計的基礎上。還需對接口進(jìn)行軟件設計。AT89C5131的軟件設計主要是USB固件程序的設計,軟件設計采用C語(yǔ)言編程,最后軟件通過(guò)FLIP下載到AT89C5131芯片中。這里所采用的編譯環(huán)境為KeilμVision 3軟件設計平臺。在具體的工程實(shí)現過(guò)程中,也遇到了一些問(wèn)題,但經(jīng)過(guò)反復的修改及調試,這些問(wèn)題都得到了很好的解決,其中主要有以下幾個(gè)方面:
按鍵功能實(shí)現控制面板按鍵的功能是通過(guò)電平觸發(fā)中斷實(shí)現的。在設計之初,手動(dòng)按下一次按鍵總會(huì )觸發(fā)多次中斷,對應的LED顯示總會(huì )很快的跳變,不能滿(mǎn)足按一次按鍵就顯示一個(gè)狀態(tài)的要求,于是筆者就在按鍵功能實(shí)現的程序中添加了等待函數,即每發(fā)生完一次中斷,就等待一段時(shí)間,經(jīng)過(guò)調試,上面的問(wèn)題沒(méi)有再出現。
USB通信系統系統要求USB能夠快速、高效地實(shí)現通信,對于速度問(wèn)題可以通過(guò)Ping-pong模式得以解決。系統還要求USB實(shí)現雙向通信,為使其接收和發(fā)送數據互不干擾,所以選用了幾個(gè)端口實(shí)現不同數據的傳輸。
SPI端口通信 SPI端口工程實(shí)現的關(guān)鍵是速度和工作模式的匹配。在設計之初,AT89C5131的SPI工作于從機模式,其數據傳輸受到DSP的控制,由于其傳輸速度遠遠低于DSP中SPI端口的處理速度,所以每通過(guò)AT89C5131的SPI傳輸一組數據時(shí),DSP總需要通過(guò)軟件控制等待很長(cháng)一段時(shí)間,既便如此也不能保證數據得到正確接收。于是,后來(lái)就將AT89C5131的SPI工作模式修改為主機模式,由AT89C5131主動(dòng)控制數據的傳輸。然而實(shí)現雙向通信的關(guān)鍵是對SS信號的控制,在上述工作模式下,SS必須無(wú)效,Slave才能較可靠地向發(fā)送寄存器寫(xiě)數。
3 結 語(yǔ)
AT89C5131宜于構成低成本的USB控制和通信系統,能實(shí)現計算機與設備的通信,并可靈活選擇多種通信協(xié)議。文中介紹基于A(yíng)T89C5131的接口設計,主要是實(shí)現PC機與MCU以及MCU與DSP的通信,該設計已經(jīng)在工程實(shí)際中得到應用。經(jīng)過(guò)實(shí)踐檢驗,證明其合理且操作靈活,具有一定的實(shí)用意義。在設計過(guò)程中,深切體會(huì )到硬件設計與軟件設計的極大不同。編譯正確且邏輯沒(méi)有問(wèn)題的程序源代碼,將其燒寫(xiě)至芯片后,硬件電路并不一定能完全地實(shí)現所要求的功能,所以必須經(jīng)過(guò)反復的修改程序、燒寫(xiě)、調試,直至正確實(shí)現功能。
評論