帶全速USB接口的PIC18F4550應用設計
隨著(zhù)USB(Universal Serial Bus)技術(shù)的發(fā)展,特別是高速(480 Mbps)USB2.0協(xié)議的出現,幾乎所有的PC外設都可以移植到USB上,所以USB的PC外設的發(fā)展空間是巨大的,甚至在不久的將來(lái),USB將完全取代異步串口和打印機并口,PC機廠(chǎng)商將不會(huì )再生產(chǎn)機箱上帶異步串口和打印機并口的PC機了,機箱上也不會(huì )再有那么多的連線(xiàn)了。
USB是一種快速的、雙向同步傳輸的、廉價(jià)并可以進(jìn)行熱插拔的串行接口。利用USB總線(xiàn)技術(shù),開(kāi)發(fā)適用于科學(xué)研究和工業(yè)牛產(chǎn)的各種儀器儀表設備,借以取代傳統計算機測控系統中采用串行RS232或并行接口的儀器儀表設備,使計算機測控系統更加高效實(shí)時(shí),方便靈活。
利用USB總線(xiàn)的數據采集方案有兩種,一種是采用普通單片機加上專(zhuān)用的USB通信芯片。該方案可充分利用開(kāi)發(fā)人員原有的硬件資源和軟件知識,開(kāi)發(fā)成本較低,但系統的設計和調試較為麻煩,且電磁兼容性差,容易造成主機不能識別USB設備。另一種是利用具有USB接口功能的單片機。使用這些專(zhuān)用芯片構成的數據采集系統電路設計簡(jiǎn)單,調試方便,電磁兼容性好。然而,目前大部分具有USB功能的單片機都是專(zhuān)門(mén)針對個(gè)人計算機外圍設備或消費市場(chǎng)的需要而設計的,忽略了嵌入式工程師的需要。Microchip公司新款PIC18F4550系列單片機的問(wèn)世,為廣泛的嵌入式應用增添了全速USB的優(yōu)勢,即使遇到惡劣的操作環(huán)境或在只能不定時(shí)地連接個(gè)人計算機的情況下,也能正常工作。
本文以光柵位移傳感器檢測系統的設計為背景,詳細介紹了帶全速USB接口的單片機PIC18F4550的應用設計方法。
PIC18F4550是Microchip公司最新生產(chǎn)的帶全速USB接口的8位高檔單片機,芯片為40/44腳封裝。該單片機除了具有PIC單片機所特有的精簡(jiǎn)指令集(RISC)、數據總線(xiàn)和指令總線(xiàn)相互獨立的哈佛(Harvard)結構等特點(diǎn)外,還配備了自編程閃存存儲器以及納瓦節能技術(shù),工作頻率達48 MHz,數據傳輸速率高達12 Mbps。另外,還具有Microchip先進(jìn)PMOS電可擦除單元(PEEC)閃存技術(shù),耐擦寫(xiě)次數可高達100萬(wàn)次,而數據保存期能超過(guò)40年。因而該芯片有很強的控制能力和靈活的工作方式。
新器件的全速USB 2.0接口具有1 KB雙重存取RAM,支持高達32個(gè)端點(diǎn)(雙向16對)和2種數據傳輸速率(即全速模式1 2 Mbps和低速模式1.5 Mbps),具有USB協(xié)議所規定的4種數據傳輸方式(控制傳輸方式、中斷傳輸方式、批量傳輸方式和實(shí)時(shí)傳輸方式)。該接口包括一個(gè)片上收發(fā)器和一個(gè)并行流端口,能把數據直接傳送到外部的設備,不僅減小了CPU的開(kāi)銷(xiāo),而且大大增強了系統的抗干擾能力和工作可靠性。
PIC18F4550的硬件資源非常豐富,包含33個(gè)I/O,I/O端口為端口A(yíng)、B、C、D、E;具有多個(gè)中斷源和1個(gè)中斷優(yōu)先級選擇,4個(gè)定時(shí)器,32 KB程序閃存,256字節EEP-ROM數據存儲器,2 048字節數據隨機存儲器以及88硬件乘法器;集成了13通道的10位A/D轉換器,2個(gè)CCP(比較/捕捉/PWM)模塊,1個(gè)增強型CCP模塊和1個(gè)看門(mén)狗;具有省電功能的休眠模式;1個(gè)USART不僅支持異步與同步的串行通信,而且支持LIN總線(xiàn);2個(gè)模擬比較器,支持I2C和SPI通信的主控同步串行端口,可編程欠壓復位及低電壓檢測電路等。
PIC18F4550單片機的一個(gè)關(guān)鍵特性在于它配備了32 KB自編程增強型閃存,使得設計人員可以通過(guò)USB端口對最終應用進(jìn)行現場(chǎng)升級。結合新器件配備的一系列片上外設和納瓦技術(shù)(nanoWatt)的功耗管理功能,使其非常適用于多種嵌入式應用,包括工業(yè)、醫療、汽車(chē)、電池供電和消費類(lèi)產(chǎn)品等。
2 PIC18F4550的設計應用
2.1 光柵位移傳感器的基本工作原理、特點(diǎn)
光柵位移傳感器的基本工作原理是利用一對光柵,其中一塊是固定的,而另一塊是運動(dòng)的。當它們發(fā)生相對運動(dòng)并有光通過(guò)兩者時(shí),能夠獲得相當于干涉儀中得到的條紋信號,即所謂的“莫爾條紋信號”。對于一對計量光柵,彼此移動(dòng)一條刻槽(現代計量光柵常采用4~250 L/mm)就移動(dòng)一條莫爾條紋。條紋寬度不受波長(cháng)影響,并且條紋較寬可進(jìn)行內插,由于誤差平均效應,因而可以獲得很高的精度。與普通位移傳感器相比,它有以下幾個(gè)特點(diǎn):
① 精度高。光柵位移傳感器在大量程測量長(cháng)度或直線(xiàn)位移方面僅僅低于激光干涉傳感器;在圓分度和角位移測量方面,光柵式傳感器屬于精度最高的。
② 大量程測量兼有高分辨率。感應同步器和磁柵式傳感器也具有大量程測量的特點(diǎn),但分辨力和精度都不如光柵位移傳感器。
③ 可動(dòng)態(tài)測量,易于實(shí)現測量及數據處理自動(dòng)化。
④ 具有較強的抗干擾能力,對環(huán)境條件的要求不像激光干涉傳感器那么嚴格,但不如感應同步器和磁柵式傳感器的適應性強。油污和灰塵會(huì )影響它的可靠性,主要適合于在實(shí)驗室和環(huán)境較好的車(chē)間使用。
2.2 PIC18F4550硬件設計
PIC18F4550的USB接口硬件設計比較簡(jiǎn)單,而單片機控制的外圍設備屬于一般單片機設計,可以參照一般PIC單片機的設計方法。對于USB接口,Microchip公司提供了一套開(kāi)發(fā)套件(Demo板)幫助使用者開(kāi)發(fā)自己的產(chǎn)品。它提供了應用程序、驅動(dòng)程序和固件,幫助使用者熟悉USB的工作過(guò)程;同時(shí),可以直接利用開(kāi)發(fā)套件來(lái)擴展外圍設備。
圖1是一個(gè)光柵位移傳感器檢測系統硬件電路框圖,主要實(shí)現數據的采集、處理、傳輸和PWM脈沖的產(chǎn)生等。從光柵傳感器輸入的信號有5路:sin,cos以及零窗信號zero。經(jīng)差分放大電路合成,分3路進(jìn)入PIC單片機模擬量輸入口進(jìn)行A/D轉換;同時(shí),經(jīng)差分放大電路合成后的sin、cos信號經(jīng)過(guò)零比較器后轉換成數字脈沖信號,然后經(jīng)D觸發(fā)器和“與”門(mén)電路完成光柵位移的辨向。PIC單片機T0和T1口接收來(lái)自“與”門(mén)電路的數字脈沖,完成光柵位移的計數(計算光柵尺移動(dòng)的完整光柵數);PIC單片機RC1口輸出4 MHz的PWM脈沖信號作為D觸發(fā)器的CP信號。計算機的USB接口兩根數據線(xiàn)分別接PIC18F4550的D+和D-口,用于完成計算機和單片機之間的數據通信。計算機的USB電源一方面為PIC微處理器提供能源,另一方面通過(guò)電源模塊轉換成12 V電源,為運放電路提供正負電源。
2.3 單片機軟件部分設計
單片機的軟件部分主要完成光柵位移傳感器的數據采集、A/D轉換、計算光柵位移傳感器的正向、反向莫爾條紋的個(gè)數、為數字電路提供CP脈沖以及完成USB的通信等工作。圖2是單片機軟件部分的流程圖。
2.4 PIC18F4550的固件設計
微芯公司提供了一系列的USB寄存器,使用這些寄存器可以完成USB通信。大多數的USB通信都是通過(guò)中斷來(lái)完成的,在USB中斷服務(wù)程序內,要實(shí)現輸入/輸出接口,允許大多數的USB程序在后臺完成。從應用的觀(guān)點(diǎn)來(lái)看,枚舉過(guò)程和數據通信的發(fā)生好像沒(méi)有聯(lián)系。
對于單片機控制程序,目前沒(méi)有任何廠(chǎng)商提供自動(dòng)生成固件(firmware)的工具,因此所有程序都要由自己手工編制。由于USB協(xié)議的復雜性,并且考慮 到廣大客戶(hù)的需求,因此,Microchip公司在推出PIC18F4550系列芯片時(shí),提供了面向不同客戶(hù)群的DEMO程序,這就大大減輕了系統開(kāi)發(fā)人員的負擔,同時(shí)縮短了開(kāi)發(fā)周期。本系統的設計就是在Microchip公司提供的DEMO程序的基礎上,進(jìn)行必要的修改來(lái)完成的。本設計的具體固件主要由以下8個(gè)文件組成。
① main.c:系統的主程序,包括InitializeSystem()和USBTasks(void)兩個(gè)子程序,主要完成系統的初始化以及其他各種子程序的調用。
② usb9.c:實(shí)現的是USB協(xié)議第9章的功能,包括枚舉總線(xiàn)的接口和核心功能,以及USB的中斷服務(wù)程序。它處理由USB用戶(hù)所產(chǎn)生的所有的中斷。在這個(gè)程序中,主要實(shí)現對描述符的枚舉以及休眠、復位功能,主要包括USBCheckStdRequest(void)、USBStdGetDscHandler(void)和USBStdFeatureReqHandler(void)等5個(gè)子程序。
③ usbctrltrf.c:主要實(shí)現USB控制傳輸所需的各種功能,主要由USBCtrlTrfSetupHandler(void)、USBCtr-lEPServiceComplete(void)和USBPrepareForNextSetup-Trf(void)等8個(gè)子程序組成。
④ usbdrv.c:主要實(shí)現與USB驅動(dòng)相關(guān)的功能,包括檢查總線(xiàn)狀態(tài)、USB模塊使能、USB模塊掛起、遠程喚醒等功能;主要由USBSuspend(void)、USBModuleEnable(void)、USBSoftDetach(void)和USBDriverService(void)等12個(gè)子程序組成。
⑤ usbdsc.c:主要是對該系統的描述,包括廠(chǎng)商、產(chǎn)品號等的描述。
⑥ usbgen.c:對USB設備類(lèi)的配置(在這里把它配置為通用USB類(lèi)),主要包括USB通用類(lèi)的初始化端點(diǎn)和讀寫(xiě),由USBGenInitEP(void)、USBGenRead(byte*buffer,byte len)和USBGenWrite(byte*buffer,bytelen)三個(gè)子程序組成。
⑦ usbmmap.c:主要用于檢查USB在通信過(guò)程中,端點(diǎn)號與BDT(緩沖器描述符表)之間的匹配。
⑧ user.c:直接面向用戶(hù)的應用程序,可以幫助用戶(hù)完成自己的初始化配置、處理數據的讀/寫(xiě)、I/O口的處理,設備的請求等。本設計中下位機的大部分功能都是由這個(gè)程序來(lái)實(shí)現的,比如A/D轉換及其數據的讀取、1MHz的PWM波形產(chǎn)生等。它主要包括UserInit(void)、BlinkUSBStatus(void)、ServiceRequests(void)、ProcessIO(void)、ResetTempLog(void)和ReadPOT(void)六個(gè)子程序。
2.5 PC機軟件編程
要編寫(xiě)PC機上的軟件,可以利用Microchip公司提供的開(kāi)發(fā)工具包。該工具包是一個(gè)安裝程序,安裝后可以在安裝目錄下找到USB通用的驅動(dòng)程序、用Borland C編寫(xiě)的應用程序、一些固件代碼,以及編寫(xiě)應用程序所需的API函數等。對于一般的應用,驅動(dòng)程序可以直接使用,無(wú)需重編。在編程中主要用到以下7個(gè)API函數:MPUSBGetDLL Version(),返回DLL的版本號;MPUSB-GetDeviceCount(),返回連接沒(méi)備的數目;MPUSBOpen(),返回指定pVID_PID和pEP的USB設備端點(diǎn)的句柄,返回的是一個(gè)端點(diǎn)句柄;MPUSBRead(),從IN端點(diǎn)讀取數據并填入緩沖區;MPUSBWrite(),對一個(gè)OUT端點(diǎn)寫(xiě)入數據并使用pData緩沖區;MPUSBReadInt(),從Inter-rupt IN端點(diǎn)讀取數據并填人緩沖區;MPUSBClose(),關(guān)閉一個(gè)端點(diǎn)的句柄。因為Microchip公司提供的MPUS-BAPI.DLL源程序是用Borland C編寫(xiě)的,這一程序無(wú)法在VC環(huán)境下編譯,所以也不能產(chǎn)生隱式調用所需的.LIB文件,因此本設計在使用DLL時(shí)用的是顯式鏈接。
PC機的軟件部分主要用于實(shí)現上位機同下位機之間的USB通信,光柵位移傳感器位移信號的細分和顯示等功能。實(shí)現這一功能的方法有很多種,比如采用簡(jiǎn)單的VB、數據處理能力很強的Delphi,或國內外廣泛采用的Borland C和VC等。為了下一步的軟件開(kāi)發(fā)以及與廠(chǎng)家的其他軟件接口,本系統上位機的軟件部分采用VC++6.0來(lái)實(shí)現。圖3是PC機軟件部分的流程圖。
結 語(yǔ)
選擇何種芯片來(lái)設計嵌入式系統,需要根據系統的需求、設計的難易程度和性?xún)r(jià)比等幾個(gè)方面來(lái)考慮。Micro-chip公司為PIC18F4550系列單片機提供通用的驅動(dòng)程序、API函數、DEMO板和一系列范例程序等。其中,一些固件的端點(diǎn)與PC機通信的子程序可以直接調用,而不需要重寫(xiě),從而大大提高了開(kāi)發(fā)效率,縮短了產(chǎn)品的研發(fā)周期,這勢必會(huì )導致該系列單片機會(huì )很快占據一部分USB接口市場(chǎng)。正是由于USB的諸多優(yōu)點(diǎn)和光柵位移傳感器有著(zhù)很多其他位移傳感器無(wú)法比擬的優(yōu)點(diǎn),因此,本設計的應用也將會(huì )越來(lái)越廣泛。
干涉儀相關(guān)文章:干涉儀原理
評論