usb作為一種新的pc機互連協議,使外設到計算機的連線更加高效、便利。這種介面適合於多種裝置,不僅具有快速、即插即用、支援熱插拔的特點,還能同時連線多達127個裝置,解決了如資源衝突、中斷請求(irqs)和直接資料通道(dmas)等問題。因此,越來越多的開發者欲在自己的產品中使用這種標準介面。而rs232是單個裝置接入計算機時,常採用的一種接入方式,其硬體實現簡單, 因此在傳統的裝置中有很多採用了這種通訊方式。 一般的ic卡門禁考勤系統也使用rs232介面與pc機通訊。如果將usb技術應用於ic卡門禁考勤系統與pc機之間的資料通訊,這樣,不僅能使ic卡門禁考勤裝置具備usb通訊的諸多優點,而且對pc機而言還可以節餘1個rs232串列埠為其它通訊所用。
1 usb系統概述
usb規範描述了匯流排特性、協議定義、程式設計介面以及其它設計和構建系統時所要求的特性。usb是一種主從匯流排,工作時usb主機處於主模式,裝置處於從模式。usb系統所需要的唯一的系統資源是,usb系統軟體所使用的記憶體空間、usb主控制器所使用的記憶體位址空間(i/o位址空間)和中斷請求(irq)線。usb裝置可以是功能性的,如顯示器、滑鼠或者集線器之類。它們可以作低速或者高速裝置實現。低速裝置最大速率限制在1.5 mb/s,每乙個裝置有一些專有暫存器,也就是端點(endpoint)。在進行資料交換時,可以通過裝置驅動間接訪問它。每乙個端點支援幾種特殊的傳輸型別,並且有乙個唯一的位址和傳輸方向。不同的是端點0僅用作控制傳輸,並且其傳輸可以是雙向的。
系統上電後,usb主機負責檢測裝置的連線與拆除、初始化裝置的列舉過程,並根據裝置描述表安裝裝置驅動後自動重新配置系統,收集每個裝置的狀態資訊。裝置描述表標識了裝置的屬性、特徵並描述了裝置的通訊要求。usb主機根據這些資訊配置裝置、查詢驅動,並且與裝置通訊。
典型的usb資料傳輸是由裝置驅動開始的,當它需要與裝置通訊時,裝置驅動提供記憶體緩衝區,用來存放裝置收到或者即將傳送的資料。usb驅動提供usb裝置驅動和usb主控制器之間的介面,並將傳輸請求轉化為usb事務,轉化時需要與頻寬要求及協議結構保持一致。某些傳輸是由大塊資料構成的,這時需要先將它劃分為幾個事物再進行傳輸。
具有相似功能的裝置可以組成一類,這樣便於分享共有的特性和使用共同的裝置驅動程式。每個類可以定義其自己的描述符,如:hid類描述符和 report描述符。hid類是由人控制計算機系統的裝置組成的,它定義了乙個描述hid裝置的結構,並且表明了裝置的通訊要求。hid裝置描述符必須支援端點輸入中斷,韌體也必須包括乙個報告描述符,表明接收和傳送資料的格式。在ic卡門禁考勤系統引入rs232到usb的介面轉換模組後,從系統所具有的特性來看,應該屬於hid裝置。因此,兩種特殊的hid類請求必須被支援:setreport和getreport 。這些請求使裝置能接收和傳送一般的裝置資訊給主機。在沒有中斷輸出終端時,setreport是主機傳送資料給hid裝置的唯一方式。
2 系統要求
為了實現ic卡門禁考勤系統中rs232-usb的介面轉換,需要1臺支援usb的主機,同時還要提供主機上用於與外設通訊的驅動,一般由作業系統提供。此外,還需開發在主機上執行的客戶端應用程式。在裝置端,需要提供具有usb介面的主控制器晶元,以及編寫主控制器上執行的usb通訊**和用於執行外設功能的相關**。
2.1 主機要求
主機必須能夠通過裝置驅動接收usb資料,並且使這些資料對處理這些請求的應用程式有效。在主機中必須有乙個驅動負責處理usb傳輸、辨識裝置、向usb裝置收發資料;同時,還需要有乙個裝置驅動-虛擬化序列口,仿效真實的串列埠。這個驅動必須能夠像真實的串列埠接收和傳送usb資料。
從應用的觀點,裝置驅動必須能收發資料,可以通過使用乙個虛擬化的串列埠或通過轉化為usb 資料實現。微軟提供了乙個叫作usb pos的裝置驅動,它允許應用程式訪問usb裝置時,好像它們連線到標準串列埠上一樣。系統大致結構方框圖如圖1所示。
裝置要求
在定義即將使用的微控制器時,必須說明一些通訊要求,如:通訊速率、頻率、傳輸的資料量等。考慮到ic卡門禁考勤系統有效的通訊速率,可以把轉換器作為乙個低速的裝置使用,低速裝置通訊速度可以在10~100 kb/s的範圍變化。考慮到傳輸的資料量和傳輸的頻率, 此系統中使用中斷的傳輸型別。中斷傳輸可以在2個方向進行,但不能同時進行,這種型別的傳輸要求在規定的時間裡完成相當大資料量的傳輸任務。
對於轉換模組,它可以用於pc機的資料收發,作業系統提供了hid驅動, 允許使用中斷傳輸模式。對於低速裝置的乙個事務,中斷傳輸最大的包容量是 8位元組,如果需要傳送大量的資料,則必須把它分割為很多事務。
轉換模組要定義的另乙個特性是所需端點數。如上所述, 端點是微控制器在usb通訊過程中所用來傳送和接收資料的緩衝區。此系統中,該轉換器定義了2個端點:乙個端點(端點0)用來控制傳輸,另乙個端點是中斷輸入端點,定義為發資料給pc機。
根據以上要求,通過研究比較現有的微控制器,考慮到如記憶體空間、**和開發包等因素,我們選用cypress家族的一種8位risc微控制器cy7c634xx/5xx。 它使用哈佛匯流排結構,是對較高 i/o要求的低速應用裝置的低價解決方案。
圖2為ic卡門禁考勤系統usb通訊實現硬體方框原理圖。
軟體設計和執行
系統軟體由6部分組成:定義描述符、裝置檢測和列舉、端點中斷服務程式、usb資料交換模組、序列口資料交換模組、usb/serial模組介面。 下面簡要描述其中部分模組程式的功能和實現思想。
3.1 描述符定義
描述符是資料結果或資訊的格式化塊,它可以使主機知道這個裝置。每個描述符包含了這個裝置整體的資訊或者某個元素的資訊。所有的usb外設必須響應對標準的usb描述符的請求。
該系統中使用了1個介面和2個終端(控制和中斷輸入)。由於受win98的限制還不能使用中斷輸出終端,因此為了解決這個問題,我們通過在端點0中使用setreport傳輸pc機欲送往ic卡門禁考勤裝置的資料。
資料接收是在output reports中完成的。它根據送往ic卡門禁考勤裝置最大的資料量,系統定義為16k個8位域。傳送資料給主機是在輸入報告中完成的,它是8k個8位域。
3.2 裝置檢測和列舉
當1個usb 人機介面類(hid)裝置第一次連線到匯流排, 它將被匯流排供電但仍然非功能性等待1個匯流排復位。d-端的上拉電阻通知hub連線上了新的裝置,主機也同時知道了新連線的usb裝置,並將它復位。緊跟輸入包之後,主機傳送1個配置包,從預設位址0處讀取裝置描述符。讀到描述符後,主機將分配乙個新的位址給裝置,並繼續查詢關於裝置描述、配置描述、人機報告描述的資訊,裝置將開始對新分配的位址作出反應。根據從裝置處返回的資訊,主機知道了被裝置支援的資料終端的數量,完成列舉過程。列舉結束後,windows將把新的裝置加入到控制面板的裝置管理器中顯示。
為此,在微控制器中必須寫入訪問描述符的**,這樣便於對主機在列舉裝置時傳送的請求作出有效的辨識和響應。在裝置方面需要建立乙個inf檔案,使windows能夠辨識裝置,並且為裝置找到其驅動。由於作業系統提供了簡單的inf檔案,因此,開發中只需要編寫寫入到微控制器中的程式。
3.3 資料傳送和接收過程
傳送資料到門禁考勤系統是通過控制端點0中使用setreport來完成的。主機先向門禁考勤系統請求傳送資料,裝置響應請求後,主機便開始執行。 當有資料到達裝置的終端0時,將對裝置產生乙個中斷。此時,相應的中斷服務程式便將資料複製到資料緩衝區。 一旦進入端點0的中斷服務程式,所有的中斷必須關閉,確保能夠正確地複製資料。
微處理器的資料緩衝區程式設計為可以接收64個位元組,這個值是存放在設定包的包頭請求資訊中。從主機處接收到的最大包大小,是根據它將傳送給門禁考勤系統的最大資料量來決定的。
系統還使用了put_command執行緒,通過1個 i/o埠引腳,向門禁考勤系統串列埠傳送資料。在執行此執行緒時,根據串列埠通訊協議插入了起始位、停止位以及相應的延時。
從門禁考勤系統接收資料的過程是利用端點1完成的。端點1配置為1個中斷輸入端點,當有1個起始位到達引腳時,gpio中斷必須開啟,並關閉所有其它型別中斷。 設計中通過使用1個get_serial執行緒來收集i/o引腳發出的序列資料,並把它存入資料緩衝區。 同時該執行緒負責檢驗接收到的起始位和停止位的正確性。當收到8個位元組時,將接收緩衝區中的資料複製到終端1的緩衝區,並且允許微處理器響應中斷輸入請求。
考慮到一般序列口的有效波特率的範圍在300~19 200 bps, 我們按處於最大波特率19 200 bps 的情況來考慮, 傳輸1個字元需要時間接近0.75 ms;而1個輸入中斷大約每10 ms送1個8位元組的資料報,因此,設計1個128位元組的快速資料緩衝區便可以保證不會丟失資料。
RS232介面電路
什麼是 rs 232介面?1 rs 232的歷史和作用 在序列通訊時 要求通訊雙方都採用乙個標準介面,使不同 的裝置可以方便地連線起來進行 通訊。rs 232 c介面 又稱 eia rs 232 c 是目前最常用的一種序列通訊介面。rs 232 c 中 的 c 只不過表示rs 232的版本 所以與 ...
RS232介面簡介
rs232介面最初並非專為pc機通訊所開發,它所針對的是更廣域的通訊介面應用,因此在實際應用中使用最為廣泛,並且由於其 便宜 程式設計容易,所以在相當長時間內,還可能與usb firewire等這些新標準介面並存。rs232介面聯結器可使用9針外殼和25針外殼,它們都有9個非同步通訊電壓訊號腳,25...
RS232介面定義
rs232串列埠線用於裝置之間的序列通訊,使用廣泛。rs232串列埠線接法要視情況而定。rs232串列埠線為db9針,其引腳定義如下 正對人面,大邊朝上,一排5針 朝上 公頭從左到右12345,母頭從右2往左12345。一排4針 朝下 公頭從左向右6789,母頭從右往左6789。rs232串列埠線顏...