劉 王瑩,董春曦
摘 要:介紹計算機與設備、設備與其他模塊間的通信。采用帶有USB微控制器單片機芯片AT89C5131為通信的控制核心。AT89C5131是Atmel公司推出的芯片,有較快的處理速度和較大的存儲容量,還可以在系統編程,是USB接口設計的理想選擇。合理設計其外圍電路并用Keil Uvision 3開發(fā)固件程序,主要針對USB接口、SPI接口和鍵盤接口的設計與程序開發(fā)。實現計算機和設備控制面板對設備的雙重控制,以及計算機通過AT89C5131使用SPI等通信協議與其他設備模塊的通信。這里將USB接口通信的輸入與輸出通道分割開來,提高了通信速度。
關鍵詞:端口特性;USB通信;SPI通信;鍵盤設計
中圖分類號:TP302文獻標識碼:B
文章編號:1004-373X(2009)12-028-03
Interface Design Based on AT89C5131
LIU Ying,DONG Chunxi
(School of Electronic Engineering,Xidian University,Xi′an,710071,China)
Abstract:Communication between computer and device,and communication between device and other modules are introduced.AT89C5131 with USB device controller is used as the processor which is produced by Atmel Corporation and has higher process speed and larger memory capability.AT89C5131 also allows in-system programming and it is a perfect choice for USB interface design.The peripheral circuit is designed rationally and the hardware program is developed with Keil Uvision 3,mainly about the design and development of USB,SPI and keyboard interface.It implements the double control from computer and device control panel to device and the communication between computer and other device module through AT89C5131 using SPI or other communication protocols.The input and output of USB interface communication is divided up,which improves the communication speed.
Keywords:port characteristics;USB communication;SPI communication;keyboard design
0 引 言
AT89C5131是一個基于52內核的單片機[1]。在存儲器方面,其內部集成了32 KB的FLASH存儲器用于代碼的存儲;1 KB的E2PROM存儲器用于用戶數據的存儲;用戶可以使用片上的Bootloader或FLASH API,通過USB接口或其他接口(如UART和I2C總線)對FLASH存儲器和E2PROM存儲器進行ISP或者IAP編程。AT89C5131支持USB 1.1和USB 2.0協議,擁有1個控制端口和6個普通可編程端口,支持控制、批量、中斷和同步傳輸4種傳輸方式,還支持串行I/O接口模式及Master和Slave的SPI接口模式[2]。
1 系統硬件設計
基于AT89C5131的通信和控制模塊主要完成以下功能:在通信方面,通過USB實現與計算機的通信,接收計算機對設備的控制命令和計算機發(fā)送的數據,并將設備的工作狀態(tài)發(fā)送給計算機,同時將計算機傳來的控制命令和數據通過SPI接口傳送到其他設備模塊,并收集其他設備模塊的狀態(tài)信息;在控制方面,AT89C5131負責收集設備控制顯示面板的控制命令,更新設備顯示狀態(tài)等。由于采用USB通信系統,AT89C5131除了能夠根據控制面板控制設備的運行,也能根據計算機的命令控制設備的運行,實現了對設備的雙重控制。該系統中AT89C5131的外圍連接如圖1所示。
1.1 AT89C5131的鍵盤端口特性及鍵盤設計
AT89C5131擁有一個允許與8×n矩陣鍵盤連接的鍵盤接口,其輸入均具有高或低電平可編程中斷能力[2]。鍵盤接口與C51內核的通信通過3個特殊功能寄存器實現,分別是鍵盤電平選擇寄存器(KBLS)、鍵盤中斷使能寄存器(KBE)和鍵盤標志寄存器(KBF)。AT89C5131的鍵盤輸入被設計為分享同一個中斷向量的8個獨立的中斷源,寄存器IEN1中的中斷使能位KBD允許鍵盤中斷全局的使能及不使能,根據KBLS每一位的值,每一個鍵盤輸入都有檢測出可編程電平的能力,然后鍵盤檢測就被反應到KBF中,而通過軟件使用KBE可以屏蔽中斷標志KBF。正是這樣的結構使得鍵盤排列可以從1×n延伸至8×n的矩陣,同時還使得P1輸入用于其他用途。
在該設計中,將4個鍵盤端口(P1.0,P1.2,P1.3,P1.4)及2個外部中斷端口(P3.2,P3.3)與控制面板上的6個按鍵相連;實現系統的內外、啟停、暫停繼續(xù)控制及參數組的選擇等功能。這6個端口都采用低電平觸發(fā)產生中斷。
圖1 AT89C5131的連接關系
1.2 USB各端口的特性及USB通信設計
AT89C5131的控制端口0總是默認為控制類型,用于控制傳輸,有32字節(jié)的FIFO;而其他6個可編程端口可以通過設置UEPTYPE的值配置為控制、批量、中斷和同步類型;Ping-pong模式的端口可以配置成批量、中斷和同步類型,對于批量、中斷和同步類型的端口,其方向可以通過設置UEPCONX的值配置為輸入或者輸出[2]。端口1~端口3有32字節(jié)的FIFO;端口4,端口5有2個64 B的FIFO;端口6有2個512 B的FIFO,并且后三個端口均可工作于Ping-pong模式。
在該設計中,PC機將數據通過USB傳給AT89C5131,傳輸完一次后AT89C5131向PC機回傳數據傳輸正確與否的標志,PC機可以根據收到的標志進行相應的操作。PC機向AT89C5131傳輸的數據主要是參數和控制命令兩種類型。為將其區(qū)分開來,使用USB的端口4和端口6接收這兩種數據。其中,端口4用來接收控制命令;端口6用來接收參數。相應地,控制命令的回傳使用端口5;參數的回傳使用端口3。為簡單起見,端口3~端口6均被配置為批量類型;端口3、端口5為IN端口;端口4、端口6為OUT端口。
1.3 SPI端口特性及SPI通信設計
AT89C5131的SPI模塊允許在MCU和其他外圍設備之間實現全雙工、同步、串行通信,它能以配置為主或者從兩種操作模式提供可編程極性和相位串行時鐘,同時還提供8個可編程的主機時鐘率[2]。SPI模塊包括4個端點(MOSI,MISO,SCK,SS),MOSI和MISO都是用來傳輸數據的,且每次只能傳輸1個字節(jié)的數據。不同的是,MOSI將數據由主機輸出從機輸入,而MISO正好相反。SCK信號用以使通過MOSI和MISO的數據輸入/輸出設備同步,它可以由主機驅動產生8個時鐘周期,用以完成一個字節(jié)在串行通道上的交換。SS用于從機的選擇,低有效。SPI模塊的配置和初始化可以通過寄存器SPCON完成,而數據的交換則需要使用寄存器SPSTA和SPDAT兩個寄存器,在軟件編寫過程中,SPI能否正常工作主要取決于對上述3個寄存器的操作。
在該設計中,SPI被配置為主機模式;SS端口處于無效狀態(tài);AT89C5131通過MOSI端口向DSP傳輸參數及控制命令;DSP通過軟件設置P1.1(SS)端口的狀態(tài)表明數據是否正確接收,即若正確接收,則置P1.1為1,否則置P1.1為0;AT89C5131通過檢測P1.1的值來決定是否重傳數據。
2 系統實現
要使得上述設計在工程應用中得以實現,在硬件設計的基礎上,還需對接口進行軟件設計。AT89C5131的軟件設計主要是USB固件程序的設計,包括系統的初始化,USB接口、UART接口和SPI接口數據的收發(fā)以及控制面板按鍵的功能實現幾個方面。軟件設計[3]采用C語言編程,最后軟件通過FLIP下載到AT89C5131芯片中。這里所采用的編譯環(huán)境為Keil μVision 3軟件設計平臺。在具體的工程實現過程中,也遇到了一些問題,但經過反復的修改及調試,這些問題都得到了很好的解決,其中主要有以下幾個方面:
按鍵功能實現
控制面板按鍵的功能是通過電平觸發(fā)中斷實現的。在設計之初,手動按下一次按鍵總會觸發(fā)多次中斷,對應的LED顯示總會很快的跳變,不能滿足按一次按鍵就顯示一個狀態(tài)的要求,于是筆者就在按鍵功能實現的程序中添加了等待函數,即每發(fā)生完一次中斷,就等待一段時間,經過調試,上面的問題沒有再出現。
USB通信系統
系統要求USB能夠快速、高效地實現通信,對于速度問題可以通過Ping-pong模式得以解決。系統還要求USB實現雙向通信,為使其接收和發(fā)送數據互不干擾,所以選用了幾個端口實現不同數據的傳輸。
SPI端口通信
SPI端口工程實現的關鍵是速度和工作模式的匹配。在設計之初,AT89C5131的SPI工作于從機模式,其數據傳輸受到DSP的控制,由于其傳輸速度遠遠低于DSP中SPI端口的處理速度,所以每通過AT89C5131的SPI傳輸一組數據時,DSP總需要通過軟件控制等待很長一段時間,既便如此也不能保證數據得到正確接收。于是,后來就將AT89C5131的SPI工作模式修改為主機模式,由AT89C5131主動控制數據的傳輸。然而實現雙向通信的關鍵是對SS信號的控制,在上述工作模式下,SS必須無效,Slave才能較可靠地向發(fā)送寄存器寫數。
3 結 語
AT89C5131宜于構成低成本的USB控制和通信系統,能實現計算機與設備的通信,并可靈活選擇多種通信協議。文中介紹基于AT89C5131的接口設計,主要是實現PC機與MCU以及MCU與DSP的通信,該設計已經在工程實際中得到應用。經過實踐檢驗,證明其合理且操作靈活,具有一定的實用意義。在設計過程中,深切體會到硬件設計與軟件設計的極大不同。編譯正確且邏輯沒有問題的程序源代碼, 將其燒寫至芯片后,硬件電路并不一定能完全地實現所要求的功能,所以必須經過反復的修改程序、燒寫、調試,直至正確實現功能。
參考文獻
[1]廖濟林.USB 2.0應用系統開發(fā)實例精講[M].北京:電子工業(yè)出版社,2006.
[2]美國ATMEL公司.AT89C5131單片機[Z].2006.
[3]徐愛鈞,彭秀華.Keil Cx51 V7.0單片機高級語言編程與Vision 2應用實踐[M].北京:電子工業(yè)出版社,2004.
[4]曾斯堅,梁杰申.基于USB的大型建筑分布式數據采集系統[J].微計算機信息,2006,22(4):167-169.
[5]才永勝,李杏春,王占國.AT89C5131在USB設計中的應用[J].儀器儀表用戶,2006,13(6):105-106.
[6]余易翀,謝劍英,陳應麟.基于AT89C5131的車輛行駛記錄儀的硬件設計[J].控制工程,2006,13(3):262-263,267.
[7]米昶,董峰,解統燕.Protel DXP電路設計基礎敎程[M].北京:機械工業(yè)出版社,2005.
[8]吳明琪.嵌入式系統的USB虛擬串口設計[EB/OL].CE China,2006.
[9]郁成軍,韓振鐸,馬燕飛.基于單片機89C51的異步串行接口鍵盤設計[EB/OL].21IC中國電子網,2007.
[10]郭水保,高艷霞,王道洪.基于AT89C51單片機的LED彩燈控制器設計[EB/OL].21IC中國電子網,2007.