基于AT89C5131的接口設(shè)計
引 言
本文引用地址:http://butianyuan.cn/article/273422.htmAT89C5131是一個基于52內(nèi)核的單片機(jī)。在存儲器方面,其內(nèi)部集成了32 KB的FLASH存儲器用于代碼的存儲;l KB的E2PROM存儲器用于用戶數(shù)據(jù)的存儲;用戶可以使用片上的Bootloader或FLASHAPI,通過USB接口或其他接口(如UART和I2C總線)對FLASH存儲器和E2PROM存儲器進(jìn)行ISP或者IAP編程。AT89C5131支持USB 1.1和USB 2.0協(xié)議,擁有1個控制端口和6個普通可編程端口,支持控制、批量、中斷和同步傳輸4種傳輸方式,還支持串行I/O接口模式及Master和Slave的SPI接口模式。
1 系統(tǒng)硬件設(shè)計
基于AT89C5131的通信和控制模塊主要完成以下功能:在通信方面,通過USB實現(xiàn)與計算機(jī)的通信,接收計算機(jī)對設(shè)備的控制命令和計算機(jī)發(fā)送的數(shù)據(jù),并將設(shè)備的工作狀態(tài)發(fā)送給計算機(jī),同時將計算機(jī)傳來的控制命令和數(shù)據(jù)通過SPI接口傳送到其他設(shè)備模塊,并收集其他設(shè)備模塊的狀態(tài)信息;在控制方面,AT89C5131負(fù)責(zé)收集設(shè)備控制顯示面板的控制命令,更新設(shè)備顯示狀態(tài)等。由于采用USB通信系統(tǒng),AT89C5131除了能夠根據(jù)控制面板控制設(shè)備的運行,也能根據(jù)計算機(jī)的命令控制設(shè)備的運行,實現(xiàn)了對設(shè)備的雙重控制。該系統(tǒng)中AT89C5131的外圍連接如圖1所示。
1.1 AT89C5131的鍵盤端口特性及鍵盤設(shè)計
AT89C5131擁有一個允許與8×n矩陣鍵盤連接的鍵盤接口,其輸入均具有高或低電平可編程中斷能力。鍵盤接口與C51內(nèi)核的通信通過3個特殊功能寄存器實現(xiàn),分別是鍵盤電平選擇寄存器(KBLS)、鍵盤中斷使能寄存器(KBE)和鍵盤標(biāo)志寄存器(KBF)。AT89C5131的鍵盤輸入被設(shè)計為分享同一個中斷向量的8個獨立的中斷源,寄存器IEN1中的中斷使能位KBD允許鍵盤中斷全局的使能及不使能,根據(jù)KBLS每一位的值,每一個鍵盤輸入都有檢測出可編程電平的能力,然后鍵盤檢測就被反應(yīng)到KBF中,而通過軟件使用KBE可以屏蔽中斷標(biāo)志KBF。正是這樣的結(jié)構(gòu)使得鍵盤排列可以從1×n延伸至8×n的矩陣,同時還使得P1輸入用于其他用途。
在該設(shè)計中,將4個鍵盤端口(P1.O,P1.2,P1.3,P1.4)及2個外部中斷端口(P3.2,P3.3)與控制面板上的6個按鍵相連;實現(xiàn)系統(tǒng)的內(nèi)外、啟停、暫停繼續(xù)控制及參數(shù)組的選擇等功能。這6個端口都采用低電平觸發(fā)產(chǎn)生中斷。
1.2 USB各端口的特性及USB通信設(shè)計
AT89C5131的控制端口O總是默認(rèn)為控制類型,用于控制傳輸,有32字節(jié)的FIFO;而其他6個可編程端口可以通過設(shè)置UEPTYPE的值配置為控制、批量、中斷和同步類型;Ping-pong模式的端口可以配置成批量、中斷和同步類型,對于批量、中斷和同步類型的端口,其方向可以通過設(shè)置UEPCONX的值配置為輸入或者輸出。端口1~端口3有32字節(jié)的FIFO;端口4,端口5有2個64 B的FIFO;端口6有2個512 B的FIFO,并且后三個端口均可工作于Ping-pong模式。
在該設(shè)計中,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。為簡單起見,端口3~端口6均被配置為批量類型;端口3、端口5為IN端口;端口4、端口6為OUT端口。
1.3 SPI端口特性及SPI通信設(shè)計
AT89C5131的SPI模塊允許在McU和其他外圍設(shè)備之間實現(xiàn)全雙工、同步、串行通信,它能以配置為主或者從兩種操作模式提供可編程極性和相位串行時鐘,同時還提供8個可編程的主機(jī)時鐘率。SPI模塊包括4個端點(MOSI,MISO,SCK,SS),MOSI和MISO都是用來傳輸數(shù)據(jù)的,且每次只能傳輸1個字節(jié)的數(shù)據(jù)。不同的是,MOSI將數(shù)據(jù)由主機(jī)輸出從機(jī)輸入,而MISO正好相反。SCK信號用以使通過MOSI和MI-SO的數(shù)據(jù)輸人/輸出設(shè)備同步,它可以由主機(jī)驅(qū)動產(chǎn)生8個時鐘周期,用以完成一個字節(jié)在串行通道上的交換。SS用于從機(jī)的選擇,低有效。SPI模塊的配置和初始化可以通過寄存器SPCON完成,而數(shù)據(jù)的交換則需要使用寄存器SPSTA和SPDAT兩個寄存器,在軟件編寫過程中,SPI能否正常工作主要取決于對上述3個寄存器的操作。
在該設(shè)計中,SPI被配置為主機(jī)模式;SS端口處于無效狀態(tài);AT89C5131通過MOSI端口向DSP傳輸參數(shù)及控制命令;DSP通過軟件設(shè)置P1.1(SS)端口的狀態(tài)表明數(shù)據(jù)是否正確接收,即若正確接收,則置P1.1為1,否則置P1.1為0;AT89C5131通過檢測P1.1的值來決定是否重傳數(shù)據(jù)。
2 系統(tǒng)實現(xiàn)
要使得上述設(shè)計在工程應(yīng)用中得以實現(xiàn),在硬件設(shè)計的基礎(chǔ)上。還需對接口進(jìn)行軟件設(shè)計。AT89C5131的軟件設(shè)計主要是USB固件程序的設(shè)計,包括系統(tǒng)的初始化,USB接口、UART接口和SPI接口數(shù)據(jù)的收發(fā)以及控制面板按鍵的功能實現(xiàn)幾個方面。軟件設(shè)計采用C語言編程,最后軟件通過FLIP下載到AT89C5131芯片中。這里所采用的編譯環(huán)境為KeilμVision 3軟件設(shè)計平臺。在具體的工程實現(xiàn)過程中,也遇到了一些問題,但經(jīng)過反復(fù)的修改及調(diào)試,這些問題都得到了很好的解決,其中主要有以下幾個方面:
按鍵功能實現(xiàn)控制面板按鍵的功能是通過電平觸發(fā)中斷實現(xiàn)的。在設(shè)計之初,手動按下一次按鍵總會觸發(fā)多次中斷,對應(yīng)的LED顯示總會很快的跳變,不能滿足按一次按鍵就顯示一個狀態(tài)的要求,于是筆者就在按鍵功能實現(xiàn)的程序中添加了等待函數(shù),即每發(fā)生完一次中斷,就等待一段時間,經(jīng)過調(diào)試,上面的問題沒有再出現(xiàn)。
USB通信系統(tǒng) 系統(tǒng)要求USB能夠快速、高效地實現(xiàn)通信,對于速度問題可以通過Ping-pong模式得以解決。系統(tǒng)還要求USB實現(xiàn)雙向通信,為使其接收和發(fā)送數(shù)據(jù)互不干擾,所以選用了幾個端口實現(xiàn)不同數(shù)據(jù)的傳輸。
SPI端口通信 SPI端口工程實現(xiàn)的關(guān)鍵是速度和工作模式的匹配。在設(shè)計之初,AT89C5131的SPI工作于從機(jī)模式,其數(shù)據(jù)傳輸受到DSP的控制,由于其傳輸速度遠(yuǎn)遠(yuǎn)低于DSP中SPI端口的處理速度,所以每通過AT89C5131的SPI傳輸一組數(shù)據(jù)時,DSP總需要通過軟件控制等待很長一段時間,既便如此也不能保證數(shù)據(jù)得到正確接收。于是,后來就將AT89C5131的SPI工作模式修改為主機(jī)模式,由AT89C5131主動控制數(shù)據(jù)的傳輸。然而實現(xiàn)雙向通信的關(guān)鍵是對SS信號的控制,在上述工作模式下,SS必須無效,Slave才能較可靠地向發(fā)送寄存器寫數(shù)。
3 結(jié) 語
AT89C5131宜于構(gòu)成低成本的USB控制和通信系統(tǒng),能實現(xiàn)計算機(jī)與設(shè)備的通信,并可靈活選擇多種通信協(xié)議。文中介紹基于AT89C5131的接口設(shè)計,主要是實現(xiàn)PC機(jī)與MCU以及MCU與DSP的通信,該設(shè)計已經(jīng)在工程實際中得到應(yīng)用。經(jīng)過實踐檢驗,證明其合理且操作靈活,具有一定的實用意義。在設(shè)計過程中,深切體會到硬件設(shè)計與軟件設(shè)計的極大不同。編譯正確且邏輯沒有問題的程序源代碼,將其燒寫至芯片后,硬件電路并不一定能完全地實現(xiàn)所要求的功能,所以必須經(jīng)過反復(fù)的修改程序、燒寫、調(diào)試,直至正確實現(xiàn)功能。
評論