關鍵詞:電子巡更系統(tǒng) 信息鈕扣 USB接口 設備驅動程序
電子巡更系統(tǒng)是智能樓宇中保安系統(tǒng)的一個子系統(tǒng)。保安巡更時,需按指定的路線和時間,依次以達各個巡更點進行巡更。在此系統(tǒng)中,各巡更點設有信息鈕扣,保安用巡更機讀取信息鈕及當前時間。巡更完畢后,將巡更機交至安保中心,使之與計算機的USB接口相連,將存儲在巡更機中的巡更數(shù)據(jù)輸入計算機。所以,通過它可以了解保安的巡更情況,有效地管理和督促保安的工作。
1996年,Intel、Microsoft、IBM等七家公司共同推出USB1.0通用串行接口標準,隨后帶USB接口的產(chǎn)品陸續(xù)出現(xiàn)。USB接口具有速度快、支持熱插拔和即插即用、易擴展、可提供總線供電等優(yōu)點。
基于USB接口的諸多優(yōu)點和本設計中巡更機的特點,我們在設計巡更系統(tǒng)時,采用了USB接口。該電子巡更系統(tǒng)具有使用方便、數(shù)據(jù)傳輸速度快、易擴展、充電方便、功耗低、性價比高等優(yōu)點,有效地解決了傳統(tǒng)巡更機的不足。
圖1 巡更機硬件原理框圖
1 電子巡更系統(tǒng)硬件設計
針對電子巡更系統(tǒng)的特點,為了降低開發(fā)成本,提高系統(tǒng)的性價比,本設計采用MCU+USB接口芯片的方案。MCU采用Atmel公司的AT89C52單片機,可以設置成低功耗方式。USB接口芯片采用Philips公司的PDIUSBD12。帶USB接口的電子巡更系統(tǒng)硬件原理框圖如圖1所示。其中DS1302為高性能、低功耗、寬電壓、帶有RAM實時時鐘芯片,它適合于工作電池供電設備的系統(tǒng)時鐘。這里MCU通過它讀了當前時間;24LC64為低功耗、寬電壓、64Kb、支持I2C協(xié)議的串行CMOS電可擦除程序存儲器EEPROM,這里用于存儲巡更點信息鈕扣的ID值和讀取信息鈕扣時間數(shù)據(jù)。DS1990A外形上是一種圓形不銹鋼器件,內(nèi)部存有64b的二進制代碼,以此代碼作為巡更點的ID值。DS1302和24LC64電壓工作范圍為2.5~5.5V,以I2C總線和MCU通信。DS1990A以單總線(1-Wire總線)和MCU通信。
本系統(tǒng)中巡更機采用3.6V可充電電池供電,充電電源由USB接口的5V電源線提供,電源電壓監(jiān)測電路如圖2所示。其呂AMS1117是一個DC-DC電壓變換器,其輸入端為USB接口的5個電源線,輸出端為3.3V電壓,以此電壓為3.6V電源充電。MAX9117是一個帶有1.245V基準電壓(Vref)的比較器。當電池電壓下降到3V以下時,LED點亮,指示電量不足。
PDIUSBD12是一種性能優(yōu)化的USB器件。它是一種與微控制器進行通信的高速愛用并行接口,它同時也支持本地DMA傳輸。設計人員可以在各種不同類型的微控制器中選擇出最合適的微控制器,而且不需要專用的開發(fā)設備。這種組件方式增強了系統(tǒng)開發(fā)的靈活性,減少了開發(fā)時間、風險和費用,是開發(fā)USB外設的一種快捷和經(jīng)濟的途徑。PDIUSBD12符合USB1.1規(guī)范,也符合大多數(shù)在規(guī)范,如成像類、大容量存儲類、通信類、打印類和人工輸入設備等。因此,PDIUSBD12非常適合數(shù)外圍設備,如打印機、掃描儀、外部大容易存儲器(Zip驅動器)和數(shù)碼相機等的接口芯片。它使得當前使用SCSI的系統(tǒng)可以立即降低成本。
2 電子巡更系統(tǒng)軟件設計
2.1 巡更機固件程序
巡更機固件程序從功能上主要分為兩部分。
①信息鈕扣的讀取操作程序。這一部分實現(xiàn)MCU主外圍器件的初始化、讀取信息鈕以及對DS1302和24LC64的讀寫操作。調(diào)試時要注意I2C總線的時序問題。巡更機固件程序采用C語言編程。信息鈕讀取操作程序流程如圖3所示。
②MCU和USB接口的通信程序。這一部分程序要實現(xiàn)將24LC64中的數(shù)據(jù)經(jīng)USB接口讀入到上位計算機中。USB接口芯片PDIUSBD12的端點適用于不同類型的設備,可通過命令配置為4種不同的模式:模式0(非同步傳輸)、模式1(同步輸出傳輸)、模式2(同步輸入傳輸)和模式3(同步輸入輸出傳輸)。PDIUSBD12帶有三個端點,即端點0、端點1和端點2。這里僅列出模式0(非同步傳輸)時各端點的配置表格,如表1所列。
表1 模式0各端點配置
端點號 | 端點索引 | 傳輸類型 | 端點類型 | 方向 |
最大數(shù)據(jù)包容量/B |
0 | 0 1 |
控制輸出 控制輸入 |
缺少值 | 輸出 輸入 |
16 16 |
1 | 2 3 |
普通輸出 普通輸入 |
普通 普通 |
輸出 輸入 |
16 16 |
2 | 4 5 |
普通輸出 普通輸入 |
普通 普通 |
輸出 輸入 |
64×2(雙緩沖區(qū)) 64×2(雙緩沖區(qū)) |
本程序設計時,使用PDIUSBD12的端點1和端點2進行上位計算機與巡更機MCU之間的命令和數(shù)據(jù)的傳輸。端點1和端點2設置成模式0,其中端點1進行命令的傳輸和應答,端點2用于數(shù)據(jù)的傳輸。端點1接收上位計算機發(fā)送過來的8字節(jié)的讀指令,指令正確回應后,使用端點2返回讀成功數(shù)據(jù)。通信中所使用的端點情況如圖4所示(括號內(nèi)為使用的端點號)。
PDIUSBD12收到上位計算機的數(shù)據(jù)包時,就以中斷的方式通知巡更機的MCU。固件程序工作過程如下:當PDIUSBD12從USB收到一個數(shù)據(jù)包時,PDIUSBD12就會對MCU產(chǎn)生中斷請求,MCU立即響應中斷。巡更機固件程序將數(shù)據(jù)包從PDIUSBD12內(nèi)部緩沖區(qū)移到數(shù)據(jù)緩沖區(qū),并清零PDIUSBD12的內(nèi)部緩沖區(qū),以使之能接收新的數(shù)據(jù)包。在斷處理程序中,MCU判斷產(chǎn)生的中斷類型,并進行相應的處理。其中斷程序流程如圖5所示。
2.2 巡更機驅動程序
Windows98和Windows2000已經(jīng)為一些USB標準設備提供了驅動程序,巡更機目前還不是標準的計算機外設,所以必須針對巡更機的特點來編寫驅動程序。本設計中巡更機驅動程序是通過Windows DDK來開發(fā)的,它是Microsoft公司提供的一個開發(fā)Windows驅動程序的工具,DDK提供了編譯驅動程序的環(huán)境。該巡更機的驅動程序是WDM類型的,采用VC++編程。
驅動程序中對USB進行操作的請求都應調(diào)用系統(tǒng)例程,將其轉化為一個URB結構,即USB請求塊(USB Request Block),然后使用系統(tǒng)級的IRP將其提交。該驅動程序由四個模塊組成:初始化模塊、即插即用管理模塊、電源管理模塊和I/O控制模塊。
①初始化模塊。DriverEntry為驅動程序的入口處,通過它來執(zhí)行大量的初始化函數(shù)。
②即插即用管理模塊實現(xiàn)設備的熱插拔和動態(tài)配置。驅動程序初始化完成后,接著對設備進行初始化,這主要是通過即插即用(PnP)管理器調(diào)用驅動程序中的AddDevice和IRP_MJ_PNP兩個例程來完成的。當驅動程序從PnP管理器中收到IRP_MN_START_DEVICE請求時,驅動程序啟動設備,并且準備好處理I/O操作。
③電源管理模塊負責設備的喚醒和掛起。電源管理器(powermanager)從整個系統(tǒng)的角度來管理電源,所有與電源相關的IRP都是由它發(fā)出的,它發(fā)出的請求包可以指定一種新的電源狀態(tài)以及查詢或更改一種狀態(tài)。支持電源管理的驅動程序,在最大程序地幫助Windows合理地利用資源方面起著重要作用。值得注意的是,與電源相關的IRP必須在同步操作上有非常嚴格的要求。例如,任何時候在一個PDO(物理設備對象)中。只能有一個IRP_MN_QUERY_POWER或者IRP_MN_SET_POWER;電源IRP的處理要盡可能地快等。
④I/O控制模塊完成輸入輸出請求的大部分功能。設備的控制由設備控制例程(IRP_MJ_DEVICE_CONTROL)負責,主要是對設備進行一些操作命令的發(fā)送或者標志的讀取。數(shù)據(jù)讀寫主要由IRP_MJ_READ和IRP_MJ_WRITE兩個例程完成,只需在AddDevice中申請一個符號鏈接,并且在StartDevice中將此符號鏈接激活即可。
2.3 應用程序設計
在Win32系統(tǒng)中,每一個設備對象都抽象為文件,此時的應用程序只需通過幾條簡單的文件操作API函數(shù),就可以實現(xiàn)與驅動程序中某個設備的通信。在本設計中,應用程序是該電子巡更系統(tǒng)的中心,采用Visual C++編程。其主要功能有:啟動或關閉USB設備、檢查USB設備、設置巡更參數(shù)、從巡更機中讀取數(shù)據(jù)以及顯示、比較、存儲數(shù)據(jù)等。
結語
USB接口因其具有諸多優(yōu)點,近年來為計算機外設的開發(fā)熱點,尤其是USB2.0標準的推出,其傳輸速率可達480Mb/s,使其真正意義上成為了一種通用串行總線。而根據(jù)筆者的實際開發(fā)經(jīng)驗,Philips公司的PDIUSBD12是一種性能優(yōu)良、經(jīng)濟、實用、高效的USB接口器件,很適合投資少、周期短的開發(fā)項目,而且可以根據(jù)自己的實際情況靈活地選擇組件,相信其在各領域必有廣闊的應用前景。