RS-232接口又稱(chēng)之為RS-232��串口、異步口或一�(gè)COM(通信)口�"RS-232"是其最明確的名�(chēng)� 在計(jì)算機(jī)世界中,大量的接口是串口或異步口,但并不一定符合RS-232�(biāo)�(zhǔn),但我們也通常�(rèn)為它是RS-232�� �(yán)格地講RS-232接口是DTE(數(shù)�(jù)終端�(shè)備)和DCE(數(shù)�(jù)通信�(shè)備)之間的一�(gè)接口,DTE包括�(jì)算機(jī)、終�、串口打印機(jī)等設(shè)�。DCE通常只有�(diào)�解調(diào)�(MODEM)和某些交換�(jī)COM口是DCE。標(biāo)�(zhǔn)指出DTE�(yīng)該擁有一�(gè)插頭(針輸出�,DCE擁有一�(gè)插座(孔輸出�。這經(jīng)常被制造商忽視(如:WYSE終端就是孔輸出DTE串口)但影響不大,只要搞清楚DCE、DTE就行�,然后按照標(biāo)�(zhǔn)接線圖接線就不會(huì)�(cuò)��
目前RS232是PC與通信工業(yè)中應(yīng)用最廣泛的一種串行接�,RS代表推薦�(biāo)�(zhǔn)�232是標(biāo)�(shí)�(hào)�RS232采取不平衡傳輸方式,即單端通信。一�(gè)完整�RS232接口�22根線,采用標(biāo)�(zhǔn)�25芯插頭座。除此之�,目前廣泛應(yīng)用的還有一�9芯的RS232接口。它們的外觀都是一�(gè)D形,�(duì)接的兩�(gè)接口又分為針式和孔式兩種�
RS232�(biāo)�(zhǔn)中定義了邏輯1和邏�0電壓�(jí)�(shù),以及標(biāo)�(zhǔn)的傳輸速率和連接器類(lèi)�。信�(hào)大小在正的和�(fù)�3�15 V之間�RS232�(guī)定接�0的電平是�(wú)效的,邏�1�(guī)定為�(fù)電平,有效負(fù)電平的信�(hào)狀�(tài)�(chēng)為傳�(hào)(Marking),它的功能意義為OFF;邏�0�(guī)定為正電�,有效正電平的信�(hào)狀�(tài)�(chēng)為空�(hào)(Spacing),它的功能意義為ON�
�RS232�(biāo)�(zhǔn)中規(guī)定的�(shè)備可以分為數(shù)�(jù)終端�(shè)�(DTE)和數(shù)�(jù)通信�(shè)�(DCE)兩類(lèi),這種分類(lèi)定義了不同的線路用來(lái)�(fā)送和接收信號(hào)。一般來(lái)�(shuō),計(jì)算機(jī)和終端設(shè)備有DTE連接�,調(diào)制解�(diào)器和打印�(jī)有DCE連接器�
本文采用被廣泛使用的9�RS232接口�(jìn)行數(shù)�(jù)采集�
表所示為在PC�(jī)、調(diào)制解�(diào)器和路由器等�(wǎng)�(luò)�(shè)備中使用�9芯RS 232接口的信�(hào)和管腳分配�
1.PC�(jī)串口的RTS和DTR及擴(kuò)展電�
RTS和DTR是PC�(jī)�8250芯片的MODEM控制寄存器的兩�(gè)輸出引角D1和D0�,口地址為COM1的是3FCH,口地址為COM2的是2FCH。我們可以利用對(duì)MODEM控制寄存�3FCH�2FCH的寫(xiě)操作�(duì)其�(jìn)行控�。從而利用該操作和擴(kuò)展電路實(shí)�(xiàn)�(duì)TXD和RXD�(jìn)行多線擴(kuò)展,是其�(kuò)展電�� 在PC�(jī)串口�(kuò)展電路中�74LS161是二�(jìn)制計(jì)�(shù)器,1腳是�0��2腳是�(jì)�(shù)�,計(jì)�(shù)脈沖為負(fù)脈沖信號(hào)�4051是八選一雙向�(shù)�/模擬電子�(kāi)�(guān)電路,其中一片用于正向輸出,一片用于反向輸�。該�(kuò)展電路工作原理是通過(guò)控制PC�(jī)串口的DTR輸出的高低電平來(lái)形成74LS161的P2腳計(jì)�(shù)端的�(fù)脈沖信號(hào),使161的輸出端P14(QA�、P13(QB�、P12(QC�、P11(QD)腳依次�0000�1111十六�(gè)狀�(tài)中變�,本電路僅使用了QA、QB、QC三�(gè)輸出�(lái)形成�(duì)4051的ABC控制,最終使�4051�1)的輸入端TXD依次通過(guò)與TX1~TX8�(dǎo)通而得到輸出信�(hào)�4051�2)的輸出端RXD與RX1~RX8依次�(dǎo)通形成輸入信�(hào)。由于RXD和TXD的導(dǎo)通是一一�(duì)�(yīng)�,因此串口通信就可以依次通過(guò)與多�(dá)8�(gè)帶有三線基本串口的外部設(shè)備�(jìn)行通信傳輸以實(shí)�(xiàn)�(shù)�(jù)傳�。PC�(jī)端的電平�(zhuǎn)換電路是將RS232電平�(zhuǎn)換為T(mén)TL電平,外�(shè)端的電平�(zhuǎn)換電路是將TTL電平�(zhuǎn)換為RS232電平��
2.電路使用程� �(duì)PC�(jī)串口COM1的編程如下:
�(duì)COM1口的波特率等�(shè)�� MOV DX�3FCH MOV AL,XXXXXX01B OUT DX,AL;D1生成RTS�(fù)脈沖,對(duì)74LS161輸出端清0 MOV AL,XXXXXX11B� OUT DX,AL �4051的RX1和TX1�(dǎo)� CALL COM ;調(diào)用通信子程�,與�(gè)外部�(shè)備通信� MOV CX�7 ;設(shè)置循�(huán)�(jì)�(shù)器; NEXT:MOV DX �3FCH MOV AL,XXXXXX10B OUT DX ,AL ;D0位生成DTR的負(fù)脈沖,形�161的P2腳計(jì)�(shù)脈沖 MOV AL,XXXXXX11B OUT DX,AL ;RX2和TX2�(dǎo)� CALL COM ;調(diào)用通信子程�,與第二�(gè)外部�(shè)備通信 LOOP NEXT ;循�(huán)與另�6�(gè)外部�(shè)備通信� 3.使用說(shuō)�
由于該擴(kuò)展的多路接口在通信�(shí)共用一�(gè)子程�,因此在與某一路導(dǎo)通時(shí),系�(tǒng)只能與這一路的外部�(shè)備�(jìn)行通信�(lián)�(luò)� 如果工作�(xiàn)�(chǎng)需要立即和某一路通信,則需要對(duì)3FCH的D1位執(zhí)行兩�(gè)�(xiě)操作并在RTS腳形成負(fù)脈沖,以�(duì)7416I�0�,再連接�(zhí)行若干次�(duì)DTR的兩次寫(xiě)操作。例如想�(duì)�4路外�(shè)通信,則需要執(zhí)行完成對(duì)74LS161�0后,再連續(xù)三次�(duì)3FCH的D0位�(jìn)行兩�(gè)�(xiě)操作以形成DTR腳的�(fù)脈沖,然后即可調(diào)用通信子程�� 如需使用PC�(jī)的COM2串口,只需將程序中�3F8H�3FDH全部換成2F8H�2FDH即可� 如果使用十六選一雙向�(shù)�/模擬電子�(kāi)�(guān)電路,可�74LS161的QA、QB、QC、QD四�(gè)輸出端接至電子開(kāi)�(guān)的四�(gè)控制端A、B、C、D,這樣就可以達(dá)到一�(gè)PC�(jī)的RS232口與16�(gè)帶有串口的外�(shè)的數(shù)�(jù)通信�
RS-232接口又稱(chēng)之為RS-232�、串口、異步口或一�(gè)COM(通信)口�"RS-232"是其最明確的名�(chēng)� 在計(jì)算機(jī)世界�,大量的接口是串口或異步口,但并不一定符合RS-232�(biāo)�(zhǔn),但我們也通常�(rèn)為它是RS-232�� �(yán)格地講RS-232接口是DTE(數(shù)�(jù)終端�(shè)備)和DCE(數(shù)�(jù)通信�(shè)備)之間的一�(gè)接口,DTE包括�(jì)算機(jī)、終�、串口打印機(jī)等設(shè)備。DCE通常只有�(diào)制解�(diào)器(MODEM)和某些交換�(jī)COM口是DCE。標(biāo)�(zhǔn)指出DTE�(yīng)該擁有一�(gè)插頭(針輸出),DCE擁有一�(gè)插座(孔輸出�。這經(jīng)常被制造商忽視(如:WYSE終端就是孔輸出DTE串口)但影響不大,只要搞清楚DCE、DTE就行�,然后按照標(biāo)�(zhǔn)接線圖接線就不會(huì)�(cuò)�。(DTE、DCE 引腳定義相同�
接口的電氣特� 在RS-232-C中任何一條信�(hào)線的電壓均為�(fù)邏輯�(guān)�。即:邏 輯�1��-5� -15V;邏輯�0� +5� +15V 。噪聲容限為2V。即 要求接收器能�(shí)別低�+3V的信�(hào)作為邏輯�0�,高�-3V的信�(hào) 作為邏輯�1�
接口的物理結(jié)�(gòu) RS-232-C接口連接器一般使用型�(hào)為DB-25�25芯插頭座,通常插頭在DCE�,插座在DTE�. 一些設(shè)備與PC�(jī)連接的RS-232-C接口,�?yàn)椴皇褂脤?duì)方的傳送控制信�(hào),只需三條接口�,即“發(fā)送數(shù)�(jù)�、“接收數(shù)�(jù)”和“信�(hào)地”。所以采用DB-9�9芯插頭座,傳輸線采用屏蔽雙絞線�
傳輸電纜�(zhǎng)� 由RS-232C�(biāo)�(zhǔn)�(guī)定在碼元畸變小于4%的情況下,傳輸電纜長(zhǎng)度應(yīng)�50英尺,其�(shí)這�(gè)4%的碼元畸變是很保守的,在�(shí)際應(yīng)用中,約�99%的用�(hù)是按碼元畸變10-20%的范圍工作的,所以實(shí)際使用中距離�(huì)�(yuǎn)超過(guò)50英尺,美�(guó)DEC公司曾規(guī)定允許碼元畸�?yōu)?10%而得出附�2 的實(shí)�(yàn)�(jié)�。其�1�(hào)電纜為屏蔽電�,型�(hào)為DECP.NO.9107723 �(nèi)有三�(duì)雙絞線,每對(duì)�22# AWG 組成,其外覆以屏蔽網(wǎng)�2�(hào)電纜為不帶屏蔽的電纜。型�(hào)為DECP.NO.9105856-04�22#AWG的四芯電�� 附表2 DEC 公司的實(shí)�(yàn)�(jié)果�
USB作為一種新的PC�(jī)互連協(xié)�,使外設(shè)到計(jì)算機(jī)的連接更加高效、便�。這種接口適合于多種設(shè)備,不僅具有快�、即插即用、支持熱插拔的特�(diǎn),還能同�(shí)連接多達(dá)127�(gè)�(shè)�,解決了如資源沖�、中斷請(qǐng)求(IRQs)和直接�(shù)�(jù)通道(DMAs)等�(wèn)�。因�,越來(lái)越多的開(kāi)�(fā)者欲在自己的�(chǎn)品中使用這種�(biāo)�(zhǔn)接口。而RS232是單�(gè)�(shè)備接入計(jì)算機(jī)�(shí),常采用的一種接入方�,其硬件�(shí)�(xiàn)�(jiǎn)�� 因此在傳�(tǒng)的設(shè)備中有很多采用了這種通信方式� 一般的IC卡門(mén)禁考勤系統(tǒng)也使用RS232接口與PC�(jī)通信。如果將USB技�(shù)�(yīng)用于IC卡門(mén)禁考勤系統(tǒng)與PC�(jī)之間的數(shù)�(jù)通信,這樣,不僅能使IC卡門(mén)禁考勤�(shè)備具備USB通信的諸多優(yōu)�(diǎn),而且�(duì)PC�(jī)而言還可以節(jié)�1�(gè)RS232串口為其它通信所��
1 USB系統(tǒng)概述
USB�(guī)范描述了總線特性、協(xié)議定�、編程接口以及其它設(shè)�(jì)和構(gòu)建系�(tǒng)�(shí)所要求的特性。USB是一種主從總�,工作時(shí)USB主機(jī)處于主模式,�(shè)備處于從模式。USB系統(tǒng)所需要的的系�(tǒng)資源�,USB系統(tǒng)軟件所使用的內(nèi)存空�、USB主控制器所使用的內(nèi)存地址空間(I/O地址空間)和中斷�(qǐng)求(IRQ)線。USB�(shè)備可以是功能性的,如顯示�、鼠�(biāo)或者集線器之類(lèi)。它們可以作低速或者高速設(shè)備實(shí)�(xiàn)。低速設(shè)備速率限制�1.5 Mb/s,每一�(gè)�(shè)備有一些專(zhuān)有寄存器,也就是端點(diǎn)(endpoint)。在�(jìn)行數(shù)�(jù)交換�(shí),可以通過(guò)�(shè)備驅(qū)�(dòng)間接訪問(wèn)它。每一�(gè)端點(diǎn)支持幾種特殊的傳輸類(lèi)�,并且有一�(gè)的地址和傳輸方向。不同的是端�(diǎn)0 僅用作控制傳�,并且其傳輸可以是雙向的�
系統(tǒng)上電�,USB主機(jī)�(fù)�(zé)檢測(cè)�(shè)備的連接與拆�、初始化�(shè)備的列舉�(guò)�,并根據(jù)�(shè)備描述表安裝�(shè)備驅(qū)�(dòng)后自�(dòng)重新配置系統(tǒng),收集每�(gè)�(shè)備的狀�(tài)信息。設(shè)備描述表�(biāo)�(shí)了設(shè)備的屬�、特征并描述了設(shè)備的通信要求。USB主機(jī)根據(jù)這些信息配置�(shè)�、查找驅(qū)�(dòng),并且與�(shè)備通信�
典型的USB�(shù)�(jù)傳輸是由�(shè)備驅(qū)�(dòng)�(kāi)始的,當(dāng)它需要與�(shè)備通信�(shí),設(shè)備驅(qū)�(dòng)提供�(nèi)存緩沖區(qū),用�(lái)存放�(shè)備收到或者即將發(fā)送的�(shù)�(jù)。USB�(qū)�(dòng)提供USB�(shè)備驅(qū)�(dòng)和USB主控制器之間的接口,并將傳輸�(qǐng)求轉(zhuǎn)化為USB事務(wù),轉(zhuǎn)化時(shí)需要與帶寬要求及協(xié)議結(jié)�(gòu)保持一�。某些傳輸是由大塊數(shù)�(jù)�(gòu)成的,這時(shí)需要先將它劃分為幾�(gè)事物再�(jìn)行傳��
具有相似功能的設(shè)備可以組成一�(lèi),這樣便于分享共有的特性和使用共同的設(shè)備驅(qū)�(dòng)程序。每�(gè)�(lèi)可以定義其自己的描述符,如:HID�(lèi)描述符和 Report描述�。HID�(lèi)是由人控制計(jì)算機(jī)系統(tǒng)的設(shè)備組成的,它定義了一�(gè)描述HID�(shè)備的�(jié)�(gòu),并且表明了�(shè)備的通信要求。HID�(shè)備描述符必須支持端點(diǎn)輸入中斷,固件也必須包括一�(gè)�(bào)告描述符,表明接收和�(fā)送數(shù)�(jù)的格式。在IC卡門(mén)禁考勤系統(tǒng)引入RS232到USB的接口轉(zhuǎn)換模塊后,從系統(tǒng)所具有的特性來(lái)�,應(yīng)該屬于HID�(shè)�。因�,兩種特殊的HID�(lèi)�(qǐng)求必須被支持:SetReport和GetReport 。這些�(qǐng)求使�(shè)備能接收和發(fā)送一般的�(shè)備信息給主機(jī)。在�(méi)有中斷輸出終端時(shí),SetReport是主�(jī)�(fā)送數(shù)�(jù)給HID�(shè)備的方式�
2 系統(tǒng)要求
為了�(shí)�(xiàn)IC卡門(mén)禁考勤系統(tǒng)中RS232-USB的接口轉(zhuǎn)�,需�1�(tái)支持USB的主�(jī),同�(shí)還要提供主機(jī)上用于與外設(shè)通信的驅(qū)�(dòng),一般由操作系統(tǒng)提供。此�,還需�(kāi)�(fā)在主�(jī)上執(zhí)行的客戶(hù)端應(yīng)用程�。在�(shè)備端,需要提供具有USB接口的主控制器芯�,以及編�(xiě)主控制器上執(zhí)行的USB通信代碼和用于執(zhí)行外�(shè)功能的相�(guān)代碼�
2.1 主機(jī)要求
主機(jī)必須能夠通過(guò)�(shè)備驅(qū)�(dòng)接收USB�(shù)�(jù),并且使這些�(shù)�(jù)�(duì)處理這些�(qǐng)求的�(yīng)用程序有效。在主機(jī)中必須有一�(gè)�(qū)�(dòng)�(fù)�(zé)處理USB傳輸、辨�(shí)�(shè)備、向USB�(shè)備收�(fā)�(shù)�(jù);同�(shí),還需要有一�(gè)�(shè)備驅(qū)�(dòng)-虛擬化串行口,仿效真�(shí)的串�。這�(gè)�(qū)�(dòng)必須能夠像真�(shí)的串口接收和�(fā)送USB�(shù)�(jù)�
從應(yīng)用的觀�(diǎn),設(shè)備驅(qū)�(dòng)必須能收�(fā)�(shù)�(jù),可以通過(guò)使用一�(gè)虛擬化的串口或通過(guò)�(zhuǎn)化為USB �(shù)�(jù)�(shí)�(xiàn)。微軟提供了一�(gè)叫作USB POS的設(shè)備驅(qū)�(dòng),它允許�(yīng)用程序訪�(wèn)USB�(shè)備時(shí),好像它們連接到標(biāo)�(zhǔn)串口上一�。系�(tǒng)大致�(jié)�(gòu)方框圖如�1所��
2.2 �(shè)備要�
在定義即將使用的微控制器�(shí),必須說(shuō)明一些通信要求,如:通信速率、頻�、傳�?shù)�?shù)�(jù)量等??紤]到IC卡門(mén)禁考勤系統(tǒng)有效的通信速率,可以把�(zhuǎn)換器作為一�(gè)低速的�(shè)備使�,低速設(shè)備通信速度可以�10~100 Kb/s的范圍變�??紤]到傳�?shù)�?shù)�(jù)量和傳輸?shù)念l�� 此系�(tǒng)中使用中斷的傳輸�(lèi)型。中斷傳輸可以在2�(gè)方向�(jìn)�,但不能同時(shí)�(jìn)�,這種�(lèi)型的傳輸要求在規(guī)定的�(shí)間里完成相當(dāng)大數(shù)�(jù)量的傳輸任務(wù)�
�(duì)于轉(zhuǎn)換模�,它可以用于PC�(jī)的數(shù)�(jù)收發(fā),操作系�(tǒng)提供了HID�(qū)�(dòng)� 允許使用中斷傳輸模式。對(duì)于低速設(shè)備的一�(gè)事務(wù),中斷傳�?shù)陌萘渴?8字節(jié),如果需要發(fā)送大量的�(shù)�(jù),則必須把它分割為很多事�(wù)�
�(zhuǎn)換模塊要定義的另一�(gè)特性是所需端點(diǎn)�(shù)。如上所�� 端點(diǎn)是微控制器在USB通信�(guò)程中所用來(lái)�(fā)送和接收�(shù)�(jù)的緩沖區(qū)。此系統(tǒng)�,該�(zhuǎn)換器定義�2�(gè)端點(diǎn):一�(gè)端點(diǎn)(端�(diǎn)0)用�(lái)控制傳輸,另一�(gè)端點(diǎn)是中斷輸入端�(diǎn),定義為�(fā)�(shù)�(jù)給PC�(jī)�
根據(jù)以上要求,通過(guò)研究比較�(xiàn)有的微控制器,考慮到如�(nèi)存空�、價(jià)格和�(kāi)�(fā)包等因素,我們選用Cypress家族的一�8位RISC微控制器CY7C634XX/5XX� 它使用哈佛總線結(jié)�(gòu),是�(duì)較高 I/O要求的低速應(yīng)用設(shè)備的低價(jià)解決方案�
�2為IC卡門(mén)禁考勤系統(tǒng)USB通信�(shí)�(xiàn)硬件方框原理圖�
3 軟件�(shè)�(jì)和執(zhí)�
系統(tǒng)軟件�6部分組成:定義描述符、設(shè)備檢�(cè)和列舉、端�(diǎn)中斷服務(wù)程序、USB�(shù)�(jù)交換模塊、串行口�(shù)�(jù)交換模塊、USB/Serial模塊接口� 下面�(jiǎn)要描述其中部分模塊程序的功能和實(shí)�(xiàn)思想�
3.1 描述符定�
描述符是�(shù)�(jù)�(jié)果或信息的格式化�,它可以使主機(jī)知道這�(gè)�(shè)備。每�(gè)描述符包含了這�(gè)�(shè)備整體的信息或者某�(gè)元素的信�。所有的USB外設(shè)必須響應(yīng)�(duì)�(biāo)�(zhǔn)的USB描述符的�(qǐng)��
該系�(tǒng)中使用了1�(gè)接口�2�(gè)終端(控制和中斷輸�)。由于受Win98的限制還不能使用中斷輸出終端,因此為了解決這�(gè)�(wèn)�,我們通過(guò)在端�(diǎn)0中使用SetReport傳輸PC�(jī)欲送往IC卡門(mén)禁考勤�(shè)備的�(shù)�(jù)�
�(shù)�(jù)接收是在Output Reports中完成的。它根據(jù)送往IC卡門(mén)禁考勤�(shè)備的�(shù)�(jù)量,系統(tǒng)定義�16K�(gè)8位域。發(fā)送數(shù)�(jù)給主�(jī)是在輸入�(bào)告中完成的,它是8K�(gè)8位域�
3.2 �(shè)備檢�(cè)和列�
�(dāng)1�(gè)USB 人機(jī)接口�(lèi)(HID)設(shè)備次連接到總�� 它將被總線供電但仍然非功能性等�1�(gè)總線�(fù)位。D-端的上拉電阻通知Hub連接上了新的�(shè)�,主�(jī)也同�(shí)知道了新連接的USB�(shè)備,并將它復(fù)�。緊跟輸入包之后,主�(jī)�(fā)�1�(gè)配置包,從缺省地址0處讀取設(shè)備描述符。讀到描述符�,主�(jī)將分配一�(gè)新的地址給設(shè)備,并繼�(xù)查詢(xún)�(guān)于設(shè)備描�、配置描�、人�(jī)�(bào)告描述的信息,設(shè)備將�(kāi)始對(duì)新分配的地址作出反應(yīng)。根�(jù)從設(shè)備處返回的信息,主機(jī)知道了被�(shè)備支持的�(shù)�(jù)終端的數(shù)�,完成列舉過(guò)�。列舉結(jié)束后,Windows將把新的�(shè)備加入到控制面板的設(shè)備管理器中顯��
為此,在微控制器中必須寫(xiě)入訪�(wèn)描述符的代碼,這樣便于�(duì)主機(jī)在列舉設(shè)備時(shí)�(fā)送的�(qǐng)求作出有效的辨識(shí)和響�(yīng)。在�(shè)備方面需�?jiǎng)?chuàng)建一�(gè)INF文件,使Windows能夠辨識(shí)�(shè)備,并且為設(shè)備找到其�(qū)�(dòng)。由于操作系�(tǒng)提供了簡(jiǎn)單的INF文件,因�,開(kāi)�(fā)中只需要編�(xiě)�(xiě)入到微控制器中的程序�
3.3 �(shù)�(jù)�(fā)送和接收�(guò)�
�(fā)送數(shù)�(jù)到門(mén)禁考勤系統(tǒng)是通過(guò)控制端點(diǎn)0中使用SetReport�(lái)完成的。主�(jī)先向門(mén)禁考勤系統(tǒng)�(qǐng)求發(fā)送數(shù)�(jù),設(shè)備響�(yīng)�(qǐng)求后,主�(jī)便開(kāi)始執(zhí)�� �(dāng)有數(shù)�(jù)到達(dá)�(shè)備的終端0�(shí),將�(duì)�(shè)備產(chǎn)生一�(gè)中斷。此�(shí),相�(yīng)的中斷服�(wù)程序便將�(shù)�(jù)�(fù)制到�(shù)�(jù)緩沖區(qū)� 一旦�(jìn)入端�(diǎn)0的中斷服�(wù)程序,所有的中斷必須�(guān)�,確保能夠正確地�(fù)制數(shù)�(jù)�
微處理器的數(shù)�(jù)緩沖區(qū)編程為可以接�64�(gè)字節(jié),這�(gè)值是存放在設(shè)置包的包頭請(qǐng)求信息中。從主機(jī)處接收到的包大小,是根據(jù)它將�(fā)送給門(mén)禁考勤系統(tǒng)的數(shù)�(jù)量來(lái)決定��
系統(tǒng)還使用了Put_command線程,通過(guò)1�(gè) I/O端口引腳,向門(mén)禁考勤系統(tǒng)串口�(fā)送數(shù)�(jù)。在�(zhí)行此線程�(shí),根�(jù)串口通信�(xié)議插入了起始�、停止位以及相應(yīng)的延�(shí)�
從門(mén)禁考勤系統(tǒng)接收�(shù)�(jù)的過(guò)程是利用端點(diǎn)1完成�。端�(diǎn)1配置�1�(gè)中斷輸入端點(diǎn),當(dāng)�1�(gè)起始位到�(dá)引腳�(shí),GPIO中斷必須打開(kāi),并�(guān)閉所有其它類(lèi)型中�� �(shè)�(jì)中通過(guò)使用1�(gè)Get_Serial線程�(lái)收集I/O引腳�(fā)出的串行�(shù)�(jù),并把它存入�(shù)�(jù)緩沖區(qū)� 同時(shí)該線程負(fù)�(zé)檢驗(yàn)接收到的起始位和停止位的正確�。當(dāng)收到8�(gè)字節(jié)�(shí),將接收緩沖區(qū)中的�(shù)�(jù)�(fù)制到終端1的緩沖區(qū),并且允許微處理器響�(yīng)中斷輸入�(qǐng)求�
考慮到一般串行口的有效波特率的范圍在300~19 200 bps� 我們按處于波特�19 200 bps 的情況來(lái)考慮, 傳輸1�(gè)字符需要時(shí)間接�0.75 ms;�1�(gè)輸入中斷大約�10 ms�1�(gè)8字節(jié)的數(shù)�(jù)�,因此,設(shè)�(jì)1�(gè)128字節(jié)的快速數(shù)�(jù)緩沖區(qū)便可以保證不�(huì)丟失�(shù)�(jù)�
RS232-USB接口�(zhuǎn)換模塊用于改�(jìn)我們的IC卡門(mén)禁考勤系統(tǒng),使用效果良��