一種基于智能sd卡的讀卡器的工作方法
【專利摘要】本發(fā)明公開一種基于智能SD卡的讀卡器的工作方法,包括:讀卡器上電,進行初始化;判斷是否有智能SD卡片插入,是則定義SCSI和CCID兩個卡槽的配置信息,否則定義SCSI卡槽的配置信息;使能USB連接;根據(jù)枚舉指令將對應(yīng)的卡槽的配置信息返回給上位機,當讀卡器檢測到中斷標志置位為USB接收標志時,將中斷標志復位,如接收數(shù)據(jù)的端點的類型為CCID的out端點則根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給智能SD卡;等待并接收智能SD卡返回的處理結(jié)果,通過CCID卡槽的in端點將USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給上位機。通過本發(fā)明提供的方法實現(xiàn)了智能SD卡與上位機的通訊。
【專利說明】—種基于智能SD卡的讀卡器的工作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種基于智能SD卡的讀卡器的工作方法。
【背景技術(shù)】
[0002]目前,隨著科技的發(fā)展,智能手機以及數(shù)碼產(chǎn)品得到廣泛應(yīng)用,SD卡作為一種基于半導體閃存工藝的存儲卡,由于其具有大容量、高性能、安全、讀寫速度高達2M/秒等特點,現(xiàn)已成為智能手機以及數(shù)碼產(chǎn)品中應(yīng)用最廣泛的一種存儲卡。SD卡分為智能SD卡和普通SD卡兩種,其中,智能SD卡是一種加入了智能芯片的SD卡,包括一個金融IC模塊和存儲SD模塊兩部分組成;普通SD卡為只是存儲功能的SD卡,金融IC模塊是一個CPU模塊,正常情況下通過兩個觸點進行讀寫;在現(xiàn)有技術(shù)中,智能SD卡只能依賴智能手機或數(shù)碼產(chǎn)品進行應(yīng)用,卻無法在PC上使用。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種基于智能SD卡的讀卡器的工作方法。
[0004]本發(fā)明提供了一種基于智能SD卡的讀卡器的工作方法,包括:
[0005]步驟AO:所述讀卡器上電,進行初始化;
[0006]步驟Al:所述讀卡器判斷是否有卡片插入,是則執(zhí)行步驟A2,否則返回步驟Al ;
[0007]步驟A2:所述讀卡器通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟A3,否則執(zhí)行步驟A4 ;
[0008]步驟A3:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息,執(zhí)行步驟A5 ;
[0009]步驟A4:所述讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟A5 ;
[0010]步驟A5:所述讀卡器使能USB連接;
[0011]步驟A6:當所述讀卡器接收到上位機下發(fā)的枚舉指令時,根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機,執(zhí)行步驟A7 ;
[0012]步驟A7:當所述讀卡器檢測到中斷標志置位時,所述讀卡器判斷所述中斷標志的類型,如為USB接收標志則執(zhí)行步驟A8 ;如為其他標志則執(zhí)行相應(yīng)操作;
[0013]步驟AS:所述讀卡器將所述中斷標志復位,并判斷接收數(shù)據(jù)的端點的類型,如為SCSI卡槽的out端點則執(zhí)行步驟A9,如為CCID卡槽的out端點則執(zhí)行步驟AlO ;
[0014]步驟A9:所述讀卡器根據(jù)SCSI協(xié)議對接收到的數(shù)據(jù)進行相應(yīng)操作,返回步驟A7 ;
[0015]步驟AlO:所述讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給所述智能SD卡;
[0016]步驟All:所述讀卡器等待并接收所述智能SD卡返回的處理結(jié)果,將所述處理結(jié)果存儲到USB接收緩存區(qū)中;
[0017]步驟A12:所述讀卡器通過CCID卡槽的in端點將所述USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給所述上位機,返回步驟A7。
[0018]進一步地,在所述步驟A6與所述步驟A7之間包括:
[0019]步驟T:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟A7,否則執(zhí)行步驟T。
[0020]進一步地,所述步驟A2-步驟A5替換為:
[0021]步驟B1:所述讀卡器判斷卡槽中是否有卡,是則執(zhí)行步驟B6,否則執(zhí)行步驟B2 ;
[0022]步驟B2:所述讀卡器定義SCSI卡槽的配置信息;
[0023]步驟B3:所述讀卡器使能USB連接;
[0024]步驟B4:當檢測到有卡片插入時,所述讀卡器將卡槽標識復位,通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟B5,否則執(zhí)行步驟A6 ;
[0025]步驟B5:所述讀卡器將USB失能,定義SCSI和CCID兩個卡槽的配置信息,并將所述卡槽標識置位,執(zhí)行步驟B9 ;
[0026]步驟B6:所述讀卡器將卡槽標識復位并通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟B7,否則執(zhí)行步驟B8 ;
[0027]步驟B7:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息,并將所述卡槽標識置位,執(zhí)行步驟B9;
[0028]步驟B8:所述讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟B9 ;
[0029]步驟B9:所述讀卡器使能USB連接,執(zhí)行步驟A6。
[0030]進一步地,在所述步驟A6與所述步驟A7之間還包括:
[0031]步驟T:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟A7,否則執(zhí)行步驟T。
[0032]進一步地,所述步驟A2-所述步驟A6替換為:
[0033]步驟CO:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息;
[0034]步驟Cl:所述讀卡器使能USB連接;
[0035]步驟C2:當所述讀卡器接收到上位機下發(fā)的枚舉指令時,所述讀卡器根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機;
[0036]步驟C3:所述讀卡器判斷是否有卡片插入,是則執(zhí)行步驟C5,否則執(zhí)行步驟C4 ;
[0037]步驟C4:所述讀卡器通過CCID卡槽的中斷端點向所述上位機發(fā)送無卡信息,將卡槽標識復位,執(zhí)行步驟A7 ;
[0038]步驟C5:所述讀卡器通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟C6,否則執(zhí)行步驟C7 ;
[0039]步驟C6:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,并將卡槽標識置位,執(zhí)行步驟A7 ;
[0040]步驟C7:所述讀卡器通過CCID卡槽的中斷端點向所述上位機發(fā)送無卡信息,將卡槽標識復位,執(zhí)行步驟A7。
[0041]進一步地,所述步驟C2與步驟C3之間包括:
[0042]步驟T:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟C3,否則返回步驟T。
[0043]進一步地,所述步驟A7中讀卡器判斷所述中斷標志為卡到位標志時,執(zhí)行步驟Ki ;
[0044]步驟Kl:所述讀卡器根據(jù)卡槽標識判斷插入的卡片是否為智能SD卡,是則執(zhí)行步驟K2,否則返回步驟A7 ;
[0045]步驟K2:所述讀卡器將所述中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟K4,否則執(zhí)行步驟K3 ;
[0046]步驟K3:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回無卡信息,返回步驟A7 ;
[0047]步驟K4:所述讀卡器通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟K5,否則執(zhí)行步驟K6 ;
[0048]步驟K5:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,并將所述卡槽標識置位,返回步驟A2 ;
[0049]步驟K6:所述讀卡器通過CCID卡槽的中斷端點向所述上位機發(fā)送無卡信息,USB失能,并將所述卡槽標識復位,返回步驟A6。
[0050]進一步地,所述當所述讀卡器接收到上位機下發(fā)的枚舉指令時,根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機,包括:
[0051]步驟Dl:當所述讀卡器接收到上位機下發(fā)的枚舉指令時,所述讀卡器檢測所述枚舉指令的類型,如所述枚舉指令是設(shè)備描述符請求,則執(zhí)行步驟D2 ;如所述枚舉指令是配置描述符請求,則執(zhí)行步驟D3 ;如所述枚舉指令是卡槽名稱請求,則執(zhí)行步驟D4 ;如所述枚舉指令是卡槽配置請求,則執(zhí)行步驟D5 ;
[0052]步驟D2:所述讀卡器將設(shè)備描述符發(fā)送給所述上位機,執(zhí)行步驟D6 ;
[0053]步驟D3:所述讀卡器將設(shè)備配置頭字節(jié)和配置數(shù)據(jù)發(fā)送給所述上位機,執(zhí)行步驟D6 ;
[0054]步驟D4:所述讀卡器根據(jù)所述枚舉指令中的標志號判斷所述卡槽名稱請求的類型,如標志號為第一數(shù)值則將SCSI卡槽名稱返回給所述上位機,執(zhí)行步驟D6 ;如標志號為第二數(shù)值則將CCID卡槽名稱返回給所述上位機,執(zhí)行步驟D6 ;
[0055]步驟D5:所述讀卡器根據(jù)所述枚舉指令中的標志號判斷所述卡槽配置請求的類型,如標志號為第一數(shù)值則將SCSI卡槽的配置信息返回給所述上位機,執(zhí)行步驟D6 ;如標志號為第二數(shù)值則將CCID卡槽的配置信息返回給所述上位機,執(zhí)行步驟D6 ;
[0056]步驟D6:所述讀卡器判斷枚舉是否完成,是則將枚舉標志設(shè)為預(yù)定數(shù)據(jù),繼續(xù);否則返回步驟Dl。
[0057]進一步地,所述讀卡器將卡槽的配置信息全部返回給所述上位機之后還包括:將枚舉標志設(shè)為預(yù)定數(shù)據(jù);
[0058]所述讀卡器判斷USB是否為連接狀態(tài)具體包括:判斷所述枚舉標志是否為預(yù)定數(shù)據(jù),是則USB為連接狀態(tài),否則USB不為連接狀態(tài)。
[0059]進一步地,所述步驟A2具體為:
[0060]步驟A2-1:所述讀卡器將所述SWP接口的電源引腳上電;
[0061]步驟A2-2:所述讀卡器將由主設(shè)備到從設(shè)備的信號置為高電平,開啟計時器;
[0062]步驟A2-3:所述讀卡器檢測由從設(shè)備到主設(shè)備的信號是否變?yōu)楦唠娖?,是則執(zhí)行步驟A2-5,否則執(zhí)行步驟A2-4 ;
[0063]步驟A2-4:所述讀卡器判斷所述計時器的值是否超過第一預(yù)設(shè)值,是則所述計時器清零,執(zhí)行步驟A4,否則返回步驟A2-3 ;
[0064]步驟A2-5:所述讀卡器接收所述卡片返回的由主設(shè)備到從設(shè)備的信號置為高電平的成功信息;
[0065]步驟A2-6:所述讀卡器給所述卡片發(fā)送設(shè)置自身處于全功耗模式指令;
[0066]步驟A2-7:所述讀卡器接收所述卡片返回的已準備好信息;
[0067]步驟A2-8:所述讀卡器給所述卡片發(fā)送復位初始化鏈路信息;
[0068]步驟A2-9:所述讀卡器判斷是否接收到所述卡片返回的回復信息,是則執(zhí)行步驟A2-10,否則執(zhí)行步驟A4 ;
[0069]步驟A2-10:所述讀卡器連接管道,并獲取所述卡片中的參數(shù);
[0070]步驟A2-11:所述讀卡器關(guān)閉所有連接的管道,更新所述卡片中的參數(shù);
[0071]步驟A2-12:所述讀卡器創(chuàng)建動態(tài)管道參數(shù),并打開所有連接的管道,執(zhí)行步驟A3。
[0072]進一步地,所述步驟A7中所述讀卡器判斷所述中斷標志的類型為卡到位標志時,則執(zhí)行步驟El ;
[0073]步驟El:所述讀卡器判斷插入的卡片是否為智能SD卡,是則執(zhí)行步驟E2,否則將所述中斷標志復位,返回步驟A7 ;
[0074]步驟E2:所述讀卡器將所述中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟E4,否則執(zhí)行步驟E3 ;
[0075]步驟E3:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,返回步驟A2 ;
[0076]步驟E4:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回無卡信息,USB失能,返回步驟A7。
[0077]進一步地,所述步驟AO中進行初始化包括:將卡槽標識復位;
[0078]所述步驟A3還包括:所述讀卡器將所述卡槽標識置位;
[0079]所述步驟El具體為:所述讀卡器判斷所述卡槽標識是否置位,是則插入的卡片為智能SD卡,否則插入的卡片不為智能SD卡。
[0080]進一步地,所述步驟AlO具體包括:
[0081]步驟A10-1:所述讀卡器判斷所述接收到的數(shù)據(jù)是否合法,是則執(zhí)行步驟A10-2,否則設(shè)置錯誤信息并存儲到USB接收緩存區(qū)中,執(zhí)行步驟A12 ;
[0082]步驟A10-2:所述讀卡器檢測所述接收到的數(shù)據(jù)的指令類型,如是數(shù)據(jù)交換APDU指令則執(zhí)行步驟A10-3,如是其他則執(zhí)行相應(yīng)操作;
[0083]步驟A10-3:所述讀卡器將所述數(shù)據(jù)交換APDU指令存儲到SD卡輸出緩存區(qū)中;
[0084]步驟A10-4:所述讀卡器將所述SD卡輸出緩存區(qū)中的數(shù)據(jù)發(fā)送給所述智能SD卡。
[0085]進一步地,所述步驟A10-2中所述讀卡器檢測到的指令類型為上電指令,則執(zhí)行步驟Fl,如是下電指令,則執(zhí)行步驟F5 ;如是擴展通道指令,則執(zhí)行步驟F6 ;如是其他指令,則設(shè)置不支持信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12 ;
[0086]步驟Fl:所述讀卡器對所述智能SD卡進行上電操作;
[0087]步驟F2:所述讀卡器判斷是否上電激活成功,是則執(zhí)行步驟F3,否則執(zhí)行步驟F4 ;
[0088]步驟F3:所述讀卡器設(shè)置上電成功信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12 ;
[0089]步驟F4:所述讀卡器設(shè)置上電失敗信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12 ;
[0090]步驟F5:所述讀卡器對所述智能SD卡片執(zhí)行下電操作,設(shè)置下電成功信息并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12 ;
[0091]步驟F6:所述讀卡器根據(jù)所述擴展通道指令進行相應(yīng)操作,并將操作結(jié)果存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12。
[0092]進一步地,所述步驟A10-4包括:
[0093]步驟A10-41:所述讀卡器將所述SD卡輸出緩存區(qū)中的數(shù)據(jù)中最低字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù);
[0094]步驟A10-42:所述讀卡器獲取當前字節(jié)數(shù)據(jù)的最高比特位作為當前比特位;
[0095]步驟A10-43:所述讀卡器判斷當前比特位上的值是否為預(yù)定值,是則執(zhí)行步驟A10-44,否則執(zhí)行步驟A10-45 ;
[0096]步驟A10-44:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第一預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第二預(yù)設(shè)時長,執(zhí)行步驟A10-46 ;
[0097]步驟A10-45:所述讀卡器將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第三預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)楦唠娖剑訒r第四預(yù)設(shè)時長,執(zhí)行步驟A10-46 ;
[0098]步驟A10-46:所述讀卡器判斷當前字節(jié)數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟A10-48,否則執(zhí)行步驟A10-47 ;
[0099]步驟A10-47:所述讀卡器將當前比特位的相鄰低位作為當前比特位,返回步驟A10-43 ;
[0100]步驟A10-48:所述讀卡器判斷所述SD卡輸出緩存區(qū)中的數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟Al I,否則執(zhí)行步驟A10-49 ;
[0101]步驟A10-49:所述讀卡器將當前字節(jié)的相鄰高字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù),返回步驟 A10-42。
[0102]進一步地,步驟All具體包括:
[0103]步驟All-1:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第五預(yù)設(shè)時長;
[0104]步驟Al 1-2:所述讀卡器判斷所述SWP接口的輸入采集電平是否為高電平,是則執(zhí)行步驟Al 1-3,否則執(zhí)行步驟Al 1-4 ;
[0105]步驟A11-3:所述讀卡器將補位計數(shù)器加1,并采集一個比特位的高電平值并順序存儲到所述SD卡輸出緩存區(qū)中,執(zhí)行步驟Al 1-7 ;
[0106]步驟A11-4:所述讀卡器判斷所述補位計數(shù)器的值是否等于第一預(yù)設(shè)值,是則執(zhí)行步驟Al 1-5,否則執(zhí)行步驟Al 1-6 ;
[0107]步驟A11-5:所述讀卡器將所述補位計數(shù)器清零,執(zhí)行步驟Al 1-7 ;
[0108]步驟A11-6:所述讀卡器采集一個比特位的低電平值并順序存儲在所述SD卡輸出緩存區(qū)中,將采集計數(shù)器加1,執(zhí)行步驟A11-7 ;
[0109]步驟A11-7:所述讀卡器判斷所述采集計數(shù)器是否等于第二預(yù)設(shè)值,是則執(zhí)行步驟A12,否則執(zhí)行步驟Al 1-8 ;
[0110]步驟A11-8:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第六預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第四預(yù)設(shè)時長,返回步驟All-1。
[0111]本發(fā)明又提供一種基于智能SD卡的讀卡器的工作方法,包括:
[0112]步驟SO:所述讀卡器上電,進行初始化;
[0113]步驟S1:所述讀卡器判斷是否有卡片插入,是則執(zhí)行步驟S2,否則返回步驟SI ;
[0114]步驟S2:所述讀卡器通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟S3,否則執(zhí)行步驟S4 ;
[0115]步驟S3:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息,執(zhí)行步驟S5 ;
[0116]步驟S4:所述讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟S5 ;
[0117]步驟S5:所述讀卡器使能USB連接;
[0118]步驟S6:當所述讀卡器接收到上位機下發(fā)的枚舉指令時進入USB中斷,在所述USB中斷中,所述讀卡器根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機,執(zhí)行步驟S7 ;
[0119]步驟S7:當所述讀卡器檢測到中斷標志置位時,所述讀卡器判斷所述中斷標志的類型,如為USB接收標志則執(zhí)行步驟S8 ;如為其他標志則執(zhí)行相應(yīng)操作;
[0120]步驟S8:所述讀卡器將所述中斷標志復位,并判斷接收數(shù)據(jù)的端點的類型,如為SCSI卡槽的out端點則執(zhí)行步驟S9,如為CCID卡槽的out端點則執(zhí)行步驟SlO ;
[0121]步驟S9:所述讀卡器根據(jù)SCSI協(xié)議對接收到的數(shù)據(jù)進行相應(yīng)操作,返回步驟S7 ;
[0122]步驟SlO:所述讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給所述智能SD卡;
[0123]步驟Sll:所述讀卡器等待并接收所述智能SD卡返回的處理結(jié)果,將所述處理結(jié)果存儲到USB接收緩存區(qū)中;
[0124]步驟S12:所述讀卡器通過CCID卡槽的in端點將所述USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給所述上位機,返回步驟S7。
[0125]進一步地,所述步驟Sll與所述步驟S12之間包括:
[0126]步驟S12’:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟S12,否則執(zhí)行步驟 S12,。
[0127]進一步地,所述步驟S2-所述步驟S5替換為:
[0128]步驟Pl:所述讀卡器判斷卡槽中是否有卡片,是則執(zhí)行步驟P6,否則執(zhí)行步驟P2 ;
[0129]步驟P2:所述讀卡器定義SCSI卡槽的配置信息;
[0130]步驟P3:所述讀卡器使能USB連接;
[0131]步驟P4:當檢測到有卡片插入時,所述讀卡器將卡槽標識復位,通過SWP接口向下發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟P5,否則執(zhí)行步驟S6 ;
[0132]步驟P5:所述讀卡器將USB失能,定義SCSI和CCID兩個卡槽的配置信息并將卡槽標識置位,執(zhí)行步驟P9;
[0133]步驟P6:所述讀卡器將卡槽標識復位并通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟P7,否則執(zhí)行步驟P8 ;
[0134]步驟P7:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息,并將所述卡槽標識置位,執(zhí)行步驟P9;
[0135]步驟P8:所述讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟P9 ;
[0136]步驟P9:所述讀卡器使能USB連接,執(zhí)行步驟S6。
[0137]進一步地,所述步驟Sll與所述步驟S12之間包括:
[0138]步驟S12’:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟S12,否則執(zhí)行步驟 S12,。
[0139]進一步地,所述步驟S7中所述讀卡器判斷所述中斷標志為卡到位標志時,執(zhí)行步驟Kl ;
[0140]步驟Kl:所述讀卡器根據(jù)卡槽標識判斷插入的卡片是否為智能SD卡,是則執(zhí)行步驟K2,否則返回步驟S7 ;
[0141]步驟K2:所述讀卡器將所述中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟K4,否則執(zhí)行步驟K3 ;
[0142]步驟K3:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回無卡信息,返回步驟S7 ;
[0143]步驟K4:所述讀卡器通過所述SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟K5,否則執(zhí)行步驟K6 ;
[0144]步驟K5:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,并將所述卡槽標識置位,返回步驟S2 ;
[0145]步驟K6:所述讀卡器通過CCID卡槽的中斷端點向所述上位機發(fā)送無卡信息,USB失能,并將所述卡槽標識復位,返回步驟S7。
[0146]進一步地,所述在所述USB中斷中,所述讀卡器根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機,包括:
[0147]步驟Yl:所述讀卡器檢測所述枚舉指令的類型,如所述枚舉指令是設(shè)備描述符請求,則執(zhí)行步驟Y2 ;如所述枚舉指令是配置描述符請求,則執(zhí)行步驟Y3 ;如所述枚舉指令是卡槽名稱請求,則執(zhí)行步驟Y4 ;如所述枚舉指令是卡槽配置請求,則執(zhí)行步驟Y5 ;
[0148]步驟Y2:所述讀卡器將設(shè)備描述符發(fā)送給所述上位機,執(zhí)行步驟Y6 ;
[0149]步驟Y3:所述讀卡器將設(shè)備配置頭字節(jié)和配置數(shù)據(jù)發(fā)送給所述上位機,執(zhí)行步驟Y6 ;
[0150]步驟Y4:所述讀卡器根據(jù)所述枚舉指令中的標志號判斷所述卡槽名稱請求的類型,如標志號為第一數(shù)值則將SCSI卡槽名稱返回給所述上位機,執(zhí)行步驟Y6 ;如標志號為第二數(shù)值則將CCID卡槽名稱返回給所述上位機,執(zhí)行步驟Y6 ;
[0151]步驟Y5:所述讀卡器根據(jù)所述枚舉指令中的標志號判斷所述卡槽配置請求的類型,如標志號為第一數(shù)值則將SCSI卡槽的配置信息返回給所述上位機,執(zhí)行步驟Y6 ;如標志號為第二數(shù)值則將CCID卡槽的配置信息返回給所述上位機,執(zhí)行步驟Y6 ;
[0152]步驟Y6:所述讀卡器判斷枚舉是否完成,是則將枚舉標志設(shè)為預(yù)定數(shù)據(jù),退出所述USB中斷;否則直接退出所述USB中斷。
[0153]進一步地,所述在所述USB中斷中,所述讀卡器根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息全部返回給所述上位機之后,包括:將枚舉標志設(shè)為預(yù)定數(shù)據(jù);
[0154]所述讀卡器判斷USB是否為連接狀態(tài)具體包括:判斷所述枚舉標志是否為預(yù)定數(shù)據(jù),是則USB為連接狀態(tài),否則USB不為連接狀態(tài)。
[0155]進一步地,所述步驟S2具體為:
[0156]步驟S2-1:所述讀卡器將所述SWP接口的電源引腳上電;
[0157]步驟S2-2:所述讀卡器將由主設(shè)備到從設(shè)備的信號置為高電平,開啟計時器;
[0158]步驟S2-3:所述讀卡器檢測由從設(shè)備到主設(shè)備的信號是否變?yōu)楦唠娖剑莿t執(zhí)行步驟S2-5,否則執(zhí)行步驟S2-4 ;
[0159]步驟S2-4:所述讀卡器判斷所述計時器的值是否超過第一預(yù)設(shè)值,是則所述計時器清零,執(zhí)行步驟S4,否則返回步驟S2-3 ;
[0160]步驟S2-5:所述讀卡器接收所述卡片返回的由主設(shè)備到從設(shè)備的信號置為高電平的成功信息;
[0161]步驟S2-6:所述讀卡器給所述卡片發(fā)送設(shè)置自身處于全功耗模式指令;
[0162]步驟S2-7:所述讀卡器接收所述卡片返回的已準備好信息;
[0163]步驟S2-8:所述讀卡器給所述卡片發(fā)送復位初始化鏈路信息;
[0164]步驟S2-9:所述讀卡器判斷是否接收到所述卡片返回的回復信息,是則執(zhí)行步驟S2-10,否則執(zhí)行步驟S4 ;
[0165]步驟S2-10:所述讀卡器連接管道,并獲取所述卡片中的參數(shù);
[0166]步驟S2-11:所述讀卡器關(guān)閉所有連接的管道,更新所述卡片中的參數(shù);
[0167]步驟S2-12:所述讀卡器創(chuàng)建動態(tài)管道參數(shù),并打開所有連接的管道,執(zhí)行步驟S3。
[0168]進一步地,所述步驟S7中所述讀卡器判斷所述中斷標志的類型為卡到位標志時,則執(zhí)行步驟LI ;
[0169]步驟L1:所述讀卡器判斷插入的卡片是否為智能SD卡,是則執(zhí)行步驟L2,否則將所述中斷標志復位,返回步驟S7 ;
[0170]步驟L2:所述讀卡器將所述中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟L4,否則執(zhí)行步驟L3 ;
[0171]步驟L3:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,返回步驟S2 ;
[0172]步驟L4:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回無卡信息,USB失能,返回步驟S7。
[0173]進一步地,所述步驟SO中進行初始化包括:將卡槽標識復位;
[0174]所述步驟S3還包括:所述讀卡器將所述卡槽標識置位;
[0175]所述步驟LI具體為:所述讀卡器判斷所述卡槽標識是否置位,是則插入的卡片為智能SD卡,否則插入的卡片不為智能SD卡。
[0176]進一步地,所述步驟SlO具體包括:
[0177]步驟S10-1:所述讀卡器判斷所述接收到的數(shù)據(jù)是否合法,是則執(zhí)行步驟S10-2,否則設(shè)置錯誤信息并存儲到USB接收緩存區(qū)中,執(zhí)行步驟S12 ;
[0178]步驟S10-2:所述讀卡器檢測所述接收到的數(shù)據(jù)的指令類型,如是數(shù)據(jù)交換APDU指令則執(zhí)行步驟S10-3,如是其他則執(zhí)行相應(yīng)操作;
[0179]步驟S10-3:所述讀卡器將所述數(shù)據(jù)交換APDU指令存儲到SD卡輸出緩存區(qū)中;
[0180]步驟S10-4:所述讀卡器將所述SD卡輸出緩存區(qū)中的數(shù)據(jù)發(fā)送給所述智能SD卡。
[0181]進一步地,所述步驟S10-2中所述讀卡器檢測到的指令類型為上電指令,則執(zhí)行步驟Cl,如是下電指令,則執(zhí)行步驟C5 ;如是擴展通道指令,則執(zhí)行步驟C6 ;如是其他指令,則設(shè)置不支持信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12 ;
[0182]步驟Cl:所述讀卡器對所述智能SD卡進行上電操作;
[0183]步驟C2:所述讀卡器判斷是否上電激活成功,是則執(zhí)行步驟C3,否則執(zhí)行步驟C4 ;
[0184]步驟C3:所述讀卡器設(shè)置上電成功信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12 ;
[0185]步驟C4:所述讀卡器設(shè)置上電失敗信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12 ;
[0186]步驟C5:所述讀卡器對所述智能SD卡片執(zhí)行下電操作,設(shè)置下電成功信息并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12 ;
[0187]步驟C6:所述讀卡器根據(jù)所述擴展通道指令進行相應(yīng)操作,并將操作結(jié)果存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12。
[0188]進一步地,所述步驟S10-4包括:
[0189]步驟S10-41:所述讀卡器將所述SD卡輸出緩存區(qū)中的數(shù)據(jù)中最低字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù);
[0190]步驟S10-42:所述讀卡器獲取當前字節(jié)數(shù)據(jù)的最高比特位作為當前比特位;
[0191]步驟S10-43:所述讀卡器判斷當前比特位上的值是否為預(yù)定值,是則執(zhí)行步驟S10-44,否則執(zhí)行步驟S10-45 ;
[0192]步驟S10-44:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第一預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)榈碗娖剑訒r第二預(yù)設(shè)時長,執(zhí)行步驟S10-46 ;
[0193]步驟S10-45:所述讀卡器將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第三預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第四預(yù)設(shè)時長,執(zhí)行步驟S10-46 ;
[0194]步驟S10-46:所述讀卡器判斷當前字節(jié)數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟S10-48,否則執(zhí)行步驟S10-47 ;
[0195]步驟S10-47:所述讀卡器將當前比特位的相鄰低位作為當前比特位,返回步驟S10-43 ;
[0196]步驟S10-48:所述讀卡器判斷所述SD卡輸出緩存區(qū)中的數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟S11,否則將當前字節(jié)的相鄰高字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù),返回步驟S10-42。
[0197]進一步地,步驟Sll具體包括:
[0198]步驟Sll-1:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第五預(yù)設(shè)時長;
[0199]步驟S11-2:所述讀卡器判斷所述SWP接口的輸入采集電平是否為高電平,是則執(zhí)行步驟SI 1-3,否則執(zhí)行步驟SI 1-4 ;
[0200]步驟S11-3:所述讀卡器將補位計數(shù)器加1,并采集一個比特位的高電平值并順序存儲到所述SD卡輸出緩存區(qū)中,執(zhí)行步驟SI 1-7 ;
[0201]步驟S11-4:所述讀卡器判斷所述補位計數(shù)器的值是否等于第一預(yù)設(shè)值,是則執(zhí)行步驟SI 1-5,否則執(zhí)行步驟SI 1-6 ;
[0202]步驟SI 1-5:所述讀卡器將所述補位計數(shù)器清零,執(zhí)行步驟SI 1-7 ;
[0203]步驟S11-6:所述讀卡器采集一個比特位的低電平值并順序存儲在所述SD卡輸出緩存區(qū)中,將采集計數(shù)器加1,執(zhí)行步驟S11-7 ;
[0204]步驟S11-7:所述讀卡器判斷所述采集計數(shù)器是否等于第二預(yù)設(shè)值,是則執(zhí)行步驟S12,否則執(zhí)行步驟SI 1-8 ;
[0205]步驟S11-8:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第六預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第四預(yù)設(shè)時長,返回步驟S11-1。
[0206]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點:
[0207]本發(fā)明提供的方法,可自動識別SD卡類型,并建立獨立的通信接口(SWP接口),實現(xiàn)了智能SD卡與PC(上位機)的通訊。
【專利附圖】
【附圖說明】
[0208]圖1為本發(fā)明實施例一提供的一種基于智能SD卡的讀卡器的工作方法流程圖;
[0209]圖2為本發(fā)明實施例一中步驟102的細化流程圖;
[0210]圖3為本發(fā)明實施例一中步驟116的細化流程圖;
[0211]圖4為本發(fā)明實施例一中步驟116-11的細化流程圖;
[0212]圖5為本發(fā)明實施例一中步驟117的細化流程圖;
[0213]圖6為本發(fā)明實施例二提供的一種基于智能SD卡的讀卡器的工作方法流程圖;
[0214]圖7為本發(fā)明實施例三提供的一種基于智能SD卡的讀卡器的工作方法流程圖;
[0215]圖8為本發(fā)明實施例三的另一種實現(xiàn)方式流程圖;
[0216]圖9為本發(fā)明實施例四提供的一種基于智能SD卡的讀卡器的工作方法流程圖。
【具體實施方式】
[0217]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0218]在本實施例中,是根據(jù)SWP規(guī)范在智能SD卡中設(shè)置SWP接口,來實現(xiàn)智能SD卡與PC (上位機)的通訊。
[0219]實施例一
[0220]本發(fā)明實施例一提供一種基于智能SD卡的讀卡器的工作方法,如圖1所示,包括:
[0221]步驟100:讀卡器上電,進行初始化;
[0222]本實施例中,讀卡器對10、終端外部硬件、USB時鐘和其他USB寄存器配置進行初始化;還包括將枚舉標志的值設(shè)為預(yù)設(shè)初始值,將中斷標志復位;
[0223]步驟101:讀卡器判斷是否有卡片插入,是則執(zhí)行步驟102,否則返回步驟101 ;
[0224]步驟102:讀卡器將接口標識復位,通過SWP接口向卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟103,否則執(zhí)行步驟104 ;
[0225]在本實施例中,步驟102的具體實現(xiàn)過程如圖2所示,包括:
[0226]步驟102-1:讀卡器將SWP接口電源引腳(SWP_VCC)上電;
[0227]步驟102-2:讀卡器將SI (由主設(shè)備到從設(shè)備的信號)置為高電平,開啟計時器;
[0228]步驟102-3:讀卡器檢測S2(由從設(shè)備到主設(shè)備的信號)是否變?yōu)楦唠娖?,是則執(zhí)行步驟102-5,否則執(zhí)行步驟102-4 ;
[0229]步驟102-4:讀卡器判斷計時器的值是否超過第一預(yù)設(shè)值,是則計時器清零,執(zhí)行步驟104,否則返回步驟102-3 ;
[0230]步驟102-5:讀卡器收到卡片返回的SI成功信息;
[0231]具體的,本實施例該步驟中的SI成功信息為7E 69 FB DB 00 F4 IB ;
[0232]步驟102-6:讀卡器給卡片發(fā)送設(shè)置自身處于全功耗模式的指令;
[0233]在本實施例中,設(shè)置自身處于全功耗模式的指令具體為:7E 62 01 60 66 7F ;
[0234]步驟102-7:讀卡器收到卡片返回的已準備好信息;
[0235]在本實施例中,已準備好信息具體為:7E 60 8D 56 7F ;
[0236]步驟102-8:讀卡器給卡片發(fā)送復位初始化鏈路信息;
[0237]具體的,復位初始化鏈路信息為:7E F9 04 00 7D 9B 7F ;
[0238]步驟102-9:讀卡器判斷是否接收到卡片返回的回復信息,是則執(zhí)行步驟102-10,否則執(zhí)行步驟104 ;
[0239]具體的,回復信息為7E E6 7C 18 7F ;
[0240]步驟102-10:讀卡器連接管道,并獲取卡片中的參數(shù);
[0241]步驟102-11:讀卡器關(guān)閉所有連接的管道,更新卡片中的參數(shù);
[0242]步驟102-12:讀卡器創(chuàng)建動態(tài)管道參數(shù),并打開所有連接的管道,執(zhí)行步驟103 ;
[0243]步驟103:讀卡器定義SCSI和CCID兩個卡槽的配置信息并將卡槽標識置位,執(zhí)行步驟105 ;
[0244]在本實施例中,如卡槽標識置位則表示讀卡器中插入的卡為智能SD卡;
[0245]步驟104:讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟105 ;
[0246]在本實施例中,CCID卡槽的配置信息包括out端點、in端點、中斷端點;SCSI卡槽的配置信息包括out端點、in端點;
[0247]步驟105:讀卡器使能USB連接;
[0248]步驟106:當讀卡器接收到上位機下發(fā)的枚舉指令時,讀卡器將對應(yīng)的卡槽的配置信息返回給上位機;
[0249]在本實施例中,當讀卡器接收到上位機下發(fā)的枚舉指令時,讀卡器將對應(yīng)的卡槽的配置信息返回給上位機,具體包括:
[0250]步驟106-1:當讀卡器接收到上位機下發(fā)的枚舉指令時,讀卡器檢測枚舉指令的類型,如枚舉指令是設(shè)備描述符請求,則執(zhí)行步驟106-2 ;如枚舉指令是配置描述符請求,則執(zhí)行步驟106-3 ;如枚舉指令是卡槽名稱請求,則執(zhí)行步驟106-4 ;如枚舉指令是卡槽配置請求,則執(zhí)行步驟106-5;
[0251]步驟106-2:讀卡器將設(shè)備描述符發(fā)送給上位機,執(zhí)行步驟106-6 ;
[0252]在本實施例中,上位機通過發(fā)送Get_Device_Descriptor命令來獲取設(shè)備描述符,設(shè)備描述符包括數(shù)據(jù)包長度、描述符類型、USB設(shè)備支持的版本號、設(shè)備類型、子設(shè)備類型、設(shè)備支持的協(xié)議、最大數(shù)據(jù)包長度、VID, PID、設(shè)備標識、設(shè)備版本號、廠商、設(shè)備信息及其編號、各編號設(shè)備的配置;
[0253]優(yōu)選的,步驟106-2中執(zhí)行步驟106-6之前還包括:將枚舉標志的值設(shè)為第一預(yù)設(shè)值;
[0254]在步驟106-2之前還可以包括:判斷枚舉標志的值是否為預(yù)設(shè)初始值,是則執(zhí)行步驟106-2,否則報錯,等待接收上位機下發(fā)的枚舉指令,返回步驟106-1 ;
[0255]步驟106-3:讀卡器將設(shè)備配置頭字節(jié)和配置數(shù)據(jù)發(fā)送給上位機,執(zhí)行步驟106-6 ;
[0256]本實施例中的配置頭字節(jié)為09 ;配置數(shù)據(jù)包括:讀卡器類型(CCID),讀卡器卡槽數(shù)量(bNum中斷erfaces)、每個卡槽對應(yīng)的標志號、CCID類描述符(CCID支持的協(xié)議),各個卡槽的USB輸入輸出端點地址等;具體的,本實施例中的卡槽數(shù)量為三個,包括A卡槽、B卡槽和C卡槽,分別映射為三個設(shè)備A、B、C,對應(yīng)的標志號分別第一數(shù)值、第二數(shù)值、第三數(shù)值,優(yōu)選的,第一數(shù)值、第二數(shù)值、第三數(shù)值分別為4、5、6 ;
[0257]優(yōu)選的,步驟106-3中執(zhí)行步驟106-6之前還包括:將枚舉標志的值設(shè)為第二預(yù)設(shè)值;
[0258]在步驟106-3之前還可以包括:判斷枚舉標志的值是否為第一預(yù)設(shè)值,是則執(zhí)行步驟106-3,否則報錯,等待接收上位機下發(fā)的枚舉指令,返回步驟106-1 ;
[0259]步驟106-4:讀卡器根據(jù)枚舉指令中的標志號判斷卡槽名稱請求的類型,如標志號為第一數(shù)值則將SCSI卡槽名稱返回給上位機,執(zhí)行步驟106-6 ;如標志號為第二數(shù)值則將CCID卡槽名稱返回給上位機,執(zhí)行步驟106-6 ;
[0260]優(yōu)選的,步驟106-4中執(zhí)行步驟106-6之前還包括:將枚舉標志的值設(shè)為第三預(yù)設(shè)值;
[0261]在步驟106-4之前還可以包括:判斷枚舉標志的值是否為第二預(yù)設(shè)值,是則執(zhí)行步驟106-4,否則報錯,等待接收上位機下發(fā)的枚舉指令,返回步驟106-1 ;
[0262]優(yōu)選的,本實施例中的第一數(shù)值、第二數(shù)值、第三數(shù)值分別為4、5、6 ;
[0263]步驟106-5:讀卡器根據(jù)枚舉指令中的標志號判斷卡槽配置請求的類型,如標志號為第一數(shù)值則將SCSI卡槽的配置信息返回給上位機,執(zhí)行步驟106-6 ;如標志號為第二數(shù)值則將CCID卡槽的配置信息返回給上位機,執(zhí)行步驟106-6 ;
[0264]在步驟106-5之前還可以包括:判斷枚舉標志的值是否第三預(yù)設(shè)值,是則執(zhí)行步驟106-5,否則報錯,等待接收上位機下發(fā)的枚舉指令,返回步驟106-1 ;
[0265]具體的,本實施例中的每個卡槽的配置信息包括:卡槽類型描述符、輸出端點配置描述符、輸入端點配置描述符;優(yōu)選的,本實施例中的SCSI卡槽的輸出端點配置描述符、輸入端點配置描述符分別為第一端點、第二端點;CCID卡槽的輸出端點配置描述符、輸入端點配置描述符分別為第四端點、第五端點;
[0266]優(yōu)選的,每個卡槽的配置信息還包括中斷端點描述符,SCSI卡槽和CCID卡槽的中斷端點描述符分別為第三端點、第六端點;
[0267]步驟106-6:讀卡器判斷枚舉是否完成,是則將枚舉標志設(shè)為預(yù)定數(shù)據(jù),執(zhí)行步驟107 ;否則返回步驟106-1 ;
[0268]步驟107:讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟108,否則返回步驟107 ;
[0269]在本實施例中,步驟107具體為:判斷枚舉標志是否為預(yù)定值,是則USB為連接狀態(tài),否則USB不為連接狀態(tài);
[0270]步驟108:讀卡器判斷是否存在置位的中斷標志,是則執(zhí)行步驟109,否則返回步驟 108 ;
[0271]本實施例中,當讀卡器檢測到卡到位引腳電平發(fā)生變化時,進入插拔卡中斷,在該中斷中將卡到位標志置位后退出中斷,在插拔卡中斷中還將卡槽標識復位;當讀卡器接收到數(shù)據(jù)時,進入USB接收數(shù)據(jù)中斷,在該中斷中將USB接收數(shù)據(jù)標志置位后退出中斷,并將接收到的數(shù)據(jù)存儲到讀卡器的USB存儲器中;
[0272]在本實施例中還有一種實現(xiàn)方式是,在進入中斷時先將中斷標志復位,再將其置位,在主流程中不對中斷標志進行操作,即步驟110和114中不用對中斷標志復位;
[0273]步驟109:讀卡器判斷中斷標志的類型,如為卡到位標志則執(zhí)行步驟110,如為USB接收標志則執(zhí)行步驟114,如為無效標志則返回步驟108 ;
[0274]步驟110:讀卡器將中斷標志復位,根據(jù)卡槽標識判斷插入的卡是否為智能SD卡,是則執(zhí)行步驟111,否則返回步驟108 ;
[0275]具體的,在本實施例中,如卡槽標識置位則插入的卡為智能SD卡;
[0276]步驟111:讀卡器檢測卡到位電平是否為低電平,是則執(zhí)行步驟112,否則執(zhí)行步驟 113 ;
[0277]在本實施例中,如卡到位電平為低電平則表示卡槽中無卡;
[0278]步驟112:讀卡器通過CCID卡槽的中斷端點向上位機返回有卡信息,返回步驟102 ;
[0279]步驟113:讀卡器通過CCID卡槽的中斷端點向上位機返回無卡信息,USB失能,返回步驟108 ;
[0280]步驟114:讀卡器將中斷標志復位,獲取USB存儲器中的數(shù)據(jù),并判斷接收數(shù)據(jù)的端點類型,如為SCSI卡槽的out端點則執(zhí)行步驟115 ;如為CCID卡槽的out端點則執(zhí)行步驟 116 ;
[0281]步驟115:讀卡器根據(jù)SCSI協(xié)議對接收到的數(shù)據(jù)進行相應(yīng)操作,返回步驟108 ;
[0282]在本實施例中,步驟115中接收到的數(shù)據(jù)包括:查詢卡槽指令、數(shù)據(jù)操作指令等;操作完成后讀卡器將操作結(jié)果返回給上位機。
[0283]步驟116:讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給智能SD卡;
[0284]在本實施例中,讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析的實現(xiàn)過程如圖3所示,包括:
[0285]步驟116-1:讀卡器判斷接收到的數(shù)據(jù)是否合法,是則執(zhí)行步驟116-2,否則設(shè)置錯誤信息并存儲到USB接收緩存區(qū)中,執(zhí)行步驟118 ;
[0286]本實施例中步驟116-1的具體實現(xiàn)過程為:讀卡器對接收到的數(shù)據(jù)進行解析得到指令類型、數(shù)據(jù)長度值,判斷解析得到的數(shù)據(jù)長度值與USB緩存區(qū)中的整體數(shù)據(jù)的長度是否相同,是則接收到的數(shù)據(jù)合法,否則接收到的數(shù)據(jù)不合法;如指令類型為數(shù)據(jù)交換APDU指令則解析結(jié)果還包括APDU數(shù)據(jù);
[0287]步驟116-2:讀卡器檢測接收到數(shù)據(jù)的指令類型,如是上電指令,則執(zhí)行步驟116-3,如是下電指令,則執(zhí)行步驟116-7 ;如是擴展通道指令,則執(zhí)行步驟116-9 ;如是數(shù)據(jù)交換APDU指令,則執(zhí)行步驟116-10 ;如是其他指令,則設(shè)置不支持信息,并將其存儲到USB接收緩存區(qū),執(zhí)行步驟118;
[0288]步驟116-3:讀卡器對SD卡進行上電操作;
[0289]步驟116-4:讀卡器判斷是否上電激活成功,是則執(zhí)行步驟116-5,否則執(zhí)行步驟
116-6 ;
[0290]步驟116-5:讀卡器設(shè)置上電成功信息,并將其存儲到USB接收緩存區(qū),執(zhí)行步驟118 ;
[0291]步驟116-6:讀卡器設(shè)置上電失敗信息,并將其存儲到USB接收緩存區(qū),執(zhí)行步驟118 ;
[0292]步驟116-7:讀卡器對智能SD卡執(zhí)行下電操作;
[0293]步驟116-8:讀卡器設(shè)置下電成功信息,并將其存儲到USB接收緩存區(qū),執(zhí)行步驟118 ;
[0294]步驟116-9:讀卡器根據(jù)擴展通道指令進行相應(yīng)操作,并將操作結(jié)果存儲到USB接收緩存區(qū),執(zhí)行步驟118;
[0295]步驟116-10:讀卡器將該數(shù)據(jù)交換APDU指令存儲到SD卡輸出緩存區(qū)中;
[0296]步驟116-11:讀卡器將SD卡輸出緩存區(qū)中的數(shù)據(jù)發(fā)送給智能SD卡,執(zhí)行步驟117 ;
[0297]在本實施例中,步驟116-11具體實現(xiàn)過程如圖4所示,包括:
[0298]步驟al:讀卡器將SD卡輸出緩存區(qū)中的數(shù)據(jù)中最低字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù);
[0299]步驟a2:讀卡器獲取當前字節(jié)數(shù)據(jù)的最高比特位作為當前比特位;
[0300]步驟a3:讀卡器判斷當前比特位上的值是否為0,是則執(zhí)行步驟a4,否則執(zhí)行步驟a5 ;
[0301]步驟a4:讀卡器將SWP接口的輸出電平變?yōu)楦唠娖?,延時第一預(yù)設(shè)時長后將SWP接口的輸出電平變?yōu)榈碗娖剑訒r第二預(yù)設(shè)時長,執(zhí)行步驟a6 ;
[0302]優(yōu)選的,本實施例中的第一預(yù)設(shè)時長為5微秒,第二預(yù)設(shè)時長為25微秒;
[0303]步驟a5:讀卡器將SWP接口的輸出電平變?yōu)榈碗娖?,延時第三預(yù)設(shè)時長后將SWP接口的輸出電平變?yōu)楦唠娖剑訒r第四預(yù)設(shè)時長,執(zhí)行步驟a6 ;
[0304]優(yōu)選的,本實施例中的第三預(yù)設(shè)時長為30微秒,第四預(yù)設(shè)時長為8微秒;
[0305]步驟a6:讀卡器判斷當前字節(jié)數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟a8,否則執(zhí)行步驟a7 ;
[0306]步驟a7:讀卡器將當前比特位的相鄰低位作為當前比特位,返回步驟a3 ;
[0307]步驟a8:讀卡器判斷SD卡輸出緩存區(qū)中的數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟117,否則執(zhí)行步驟a9 ;
[0308]步驟a9:讀卡器將當前字節(jié)的相鄰高字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù),返回步驟a2 ;
[0309]步驟117:讀卡器接收智能SD卡返回的處理結(jié)果,并將處理結(jié)果存儲到USB接收緩存區(qū)中;
[0310]具體的,本實施例中,步驟117的具體實現(xiàn)過程如圖5所示,包括:
[0311]步驟117-1:讀卡器將SWP接口的輸出電平變?yōu)楦唠娖?,延時第五預(yù)設(shè)時長;
[0312]優(yōu)選的,本實施例中的第五預(yù)設(shè)時間為16微秒;
[0313]步驟117-2:讀卡器判斷SWP接口的輸入采集電平是否為高電平,是則執(zhí)行步驟
117-3,否則執(zhí)行步驟117-4 ;
[0314]步驟117-3:讀卡器將補位計數(shù)器加1,并采集一個比特位的高電平值并順序存儲到SD卡輸出緩存區(qū)中,執(zhí)行步驟117-7 ;
[0315]步驟117-4:讀卡器判斷補位計數(shù)器的值是否等于第一預(yù)設(shè)值,是則執(zhí)行步驟
117-5,否則執(zhí)行步驟117-6 ;
[0316]優(yōu)選的,本實施例中的第一預(yù)設(shè)值為5 ;
[0317]步驟117-5:讀卡器將補位計數(shù)器清零,執(zhí)行步驟117-8 ;
[0318]在本實施例中,如補位計數(shù)器的值等于第一預(yù)設(shè)值,則表示當前比特位是補位比特位,不需采集;
[0319]步驟117-6:讀卡器采集一個比特位的低電平值并順序存儲在SD卡輸出緩存區(qū)中,執(zhí)行步驟117-7 ;
[0320]步驟117-7:讀卡器將采集計數(shù)器加1,執(zhí)行步驟117-8 ;
[0321]步驟117-8:讀卡器判斷采集計數(shù)器是否等于第二預(yù)設(shè)值,是則讀卡器將SD卡輸出緩存區(qū)中的數(shù)據(jù)發(fā)送給上位機,執(zhí)行步驟108,否則執(zhí)行步驟117-9 ;
[0322]步驟117-9:讀卡器將SWP接口的輸出電平變?yōu)楦唠娖剑訒r第六預(yù)設(shè)時長后將SWP接口的輸出電平變?yōu)榈碗娖?,延時第四預(yù)設(shè)時長,返回步驟117-1 ;
[0323]優(yōu)選的,本實施例中的第六預(yù)設(shè)時長為15微秒;
[0324]步驟118:讀卡器將USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給上位機,返回步驟108。
[0325]實施例二
[0326]本發(fā)明實施例二提供一種基于智能SD卡的讀卡器的工作方法,如圖6所示,包括:
[0327]步驟200:讀卡器上電,進行初始化;
[0328]步驟201:讀卡器判斷卡槽中是否有卡,是則執(zhí)行步驟202,否則執(zhí)行步驟206 ;
[0329]步驟202:讀卡器定義SCSI卡槽的配置信息;
[0330]步驟203:讀卡器使能USB連接;
[0331]步驟204:當檢測到有卡片插入時,讀卡器將卡槽標識復位,通過SWP接口向卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟205,否則執(zhí)行步驟210 ;
[0332]步驟205:讀卡器將USB失能,定義SCSI卡槽和CCID卡槽的配置信息并將卡槽標識置位,執(zhí)行步驟209 ;
[0333]步驟206:讀卡器將卡槽標識復位,通過SWP接口向卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟207,否則執(zhí)行步驟208 ;
[0334]步驟207:讀卡器定義SCSI和CCID兩個卡槽的配置信息并將卡槽標識置位,執(zhí)行步驟209 ;
[0335]步驟208:讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟209 ;
[0336]步驟209:讀卡器使能USB連接;
[0337]步驟210:當讀卡器接收到上位機下發(fā)的枚舉指令時,讀卡器將對應(yīng)的卡槽的配置信息返回給上位機,執(zhí)行步驟211 ;
[0338]在本實施例中,步驟210的具體實現(xiàn)方式與實施例一中的步驟106相同,在此不再贅述,枚舉成功后將枚舉標志設(shè)為預(yù)定值;
[0339]步驟211:讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟212,否則返回步驟211 ;
[0340]步驟211具體為:判斷枚舉標志是否為預(yù)定值,是則USB為連接狀態(tài),否則USB不為連接狀態(tài);
[0341]步驟212:讀卡器判斷是否存在置位的中斷標志,是則執(zhí)行步驟213,否則返回步驟 212 ;
[0342]本實施例中,當讀卡器檢測到卡到位引腳電平發(fā)生變化時,進入插拔SD卡中斷,在該中斷中將卡到位標志置位后退出中斷;當讀卡器接收到數(shù)據(jù)時,進入USB接收數(shù)據(jù)中斷,在該中斷中將USB接收數(shù)據(jù)標志置位后退出中斷,并將接收到的數(shù)據(jù)存儲到讀卡器的USB存儲器中;
[0343]在本實施例中還有一種實現(xiàn)方式是,在進入中斷時先將中斷標志復位,再將其置位,在主流程中不對中斷標志進行操作,即步驟211和213中不用對中斷標志復位;
[0344]步驟213:讀卡器判斷中斷標志的類型,如為卡到位標志則執(zhí)行步驟214,如為USB接收標志則執(zhí)行步驟218,如為無效標志則返回步驟212 ;
[0345]步驟214:讀卡器根據(jù)卡槽標識判斷插入的卡是否為智能SD卡,是則執(zhí)行步驟215,否則返回步驟212 ;
[0346]具體的,在本實施例中,如卡槽標識置位則插入的卡為智能SD卡;
[0347]步驟215:讀卡器將中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟216,否則執(zhí)行步驟217 ;
[0348]在本實施例中,如卡到位電平為低電平則表示卡槽中無卡;
[0349]步驟216:讀卡器通過CCID卡槽的中斷端點向上位機返回有卡信息,返回步驟206 ;
[0350]步驟217:讀卡器通過CCID卡槽的中斷端點向上位機返回無卡信息,USB失能,返回步驟212 ;
[0351]步驟218:讀卡器將中斷標志復位,獲取USB存儲器中的數(shù)據(jù),并判斷接收數(shù)據(jù)的端點類型,如為SCSI卡槽的out端點則執(zhí)行步驟219 ;如為CCID卡槽的out端點則執(zhí)行步驟 220 ;
[0352]步驟219:讀卡器根據(jù)SCSI協(xié)議對接收到的數(shù)據(jù)進行相應(yīng)操作,返回步驟212 ;
[0353]在本實施例中,步驟219中讀卡器操作完成后將操作結(jié)果返回給上位機。
[0354]步驟220:讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給智能SD卡;
[0355]在本實施例中步驟220的實現(xiàn)過程與實施例一中的步驟116相同,在此不再贅述;
[0356]步驟221:讀卡器接收智能SD卡返回的處理結(jié)果,并將處理結(jié)果存儲到USB接收緩存區(qū)中;
[0357]在本實施例中步驟221的實現(xiàn)過程與實施例一中的步驟117相同,在此不再贅述;
[0358]步驟222:讀卡器通過CCID卡槽的in端點將USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給上位機,返回步驟212。
[0359]實施例三
[0360]本發(fā)明實施例三提供一種基于智能SD卡的讀卡器的工作方法,如圖7所示,包括:
[0361]步驟701:讀卡器上電,進行初始化;
[0362]本實施例中,讀卡器對10、終端外部硬件、USB時鐘和其他USB寄存器配置進行初始化;還包括將枚舉標志的值設(shè)為預(yù)設(shè)初始值,將中斷標志復位;
[0363]步驟702:讀卡器判斷是否有卡插入,是則執(zhí)行步驟703,否則返回步驟702 ;
[0364]步驟703:讀卡器將卡槽標識復位,通過SWP接口向卡發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟704,否則執(zhí)行步驟705 ;
[0365]在本實施例中,步驟703的具體實現(xiàn)過程與實施例一相同,在此不再贅述;
[0366]步驟704:讀卡器定義SCSI和CCID兩個卡槽的配置信息并將卡槽標識置位,執(zhí)行步驟706 ;
[0367]在本實施例中,如卡槽標識置位則表示讀卡器中插入的卡為智能SD卡;
[0368]步驟705:讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟706 ;
[0369]在本實施例中,CCID卡槽的配置信息包括out端點、in端點、中斷端點;SCSI卡槽的配置信息包括out端點、in端點;
[0370]步驟706:讀卡器使能USB連接;
[0371]在本實施例中,讀卡器使能USB連接之后,當接收到枚舉指令時進入USB中斷進行枚舉操作,具體包括:
[0372]步驟Al:讀卡器檢測枚舉指令的類型,如枚舉指令是設(shè)備描述符請求,則執(zhí)行步驟A2 ;如枚舉指令是配置描述符請求,則執(zhí)行步驟A3 ;如枚舉指令是卡槽名稱請求,則執(zhí)行步驟A4 ;如枚舉指令是卡槽配置請求,則執(zhí)行步驟A5 ;
[0373]步驟A2:讀卡器將設(shè)備描述符發(fā)送給上位機,執(zhí)行步驟A6 ;
[0374]步驟A3:讀卡器將設(shè)備配置頭字節(jié)和配置數(shù)據(jù)發(fā)送給上位機,執(zhí)行步驟A6 ;
[0375]步驟A4:讀卡器根據(jù)枚舉指令中的標志號判斷卡槽名稱請求的類型,如標志號為第一數(shù)值則將SCSI卡槽名稱返回給上位機,執(zhí)行步驟A6 ;如標志號為第二數(shù)值則將CCID卡槽名稱返回給上位機,執(zhí)行步驟A6 ;
[0376]步驟A5:讀卡器根據(jù)枚舉指令中的標志號判斷卡槽配置請求的類型,如標志號為第一數(shù)值則將SCSI卡槽的配置信息返回給上位機,執(zhí)行步驟A6 ;如標志號為第二數(shù)值則將CCID卡槽的配置信息返回給上位機,執(zhí)行步驟A6 ;
[0377]步驟A6:讀卡器判斷枚舉是否完成,是則將枚舉標志設(shè)為預(yù)定值,退出USB中斷;否則直接退出USB中斷;
[0378]步驟707:當讀卡器檢測到置位的中斷標志時,判斷中斷標志的類型,如為卡到位標志則執(zhí)行步驟708,如為USB接收標志則執(zhí)行步驟714,如為無效標志則返回步驟707 ;
[0379]本實施例中,當讀卡器檢測到卡到位引腳電平發(fā)生變化時,進入插拔能SD卡中斷,在該中斷中將卡到位標志置位后退出中斷,在插拔SD卡中斷中還將卡槽標識復位;當讀卡器接收到數(shù)據(jù)時,進入USB接收數(shù)據(jù)中斷,在該中斷中將USB接收數(shù)據(jù)標志置位后退出中斷,并將接收到的數(shù)據(jù)存儲到讀卡器的USB存儲器中;
[0380]步驟708:讀卡器根據(jù)卡槽標識判斷插入的卡是否為智能SD卡,是則執(zhí)行步驟709,否則返回步驟707 ;
[0381]具體的,在本實施例中,如卡槽標識置位則插入的卡為智能SD卡;
[0382]步驟709:讀卡器將中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟710,否則執(zhí)行步驟712 ;
[0383]在本實施例中,如卡到位電平為低電平則表示卡槽中無卡;
[0384]步驟710:讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟711,否則返回步驟710 ;
[0385]步驟710具體為:判斷枚舉標志是否為預(yù)定值,是則USB為連接狀態(tài),否則USB不為連接狀態(tài);
[0386]步驟711:讀卡器通過CCID卡槽的中斷端點向上位機返回有卡信息,返回步驟703 ;
[0387]步驟712:讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟713,否則返回步驟712 ;
[0388]在本實施例中,步驟712與步驟710實現(xiàn)相同;
[0389]步驟713:讀卡器通過CCID卡槽的in端點向上位機返回無卡信息,USB失能,返回步驟707 ;
[0390]步驟714:讀卡器將中斷標志復位,獲取USB存儲器中的數(shù)據(jù),并判斷接收數(shù)據(jù)的端點類型,如為SCSI卡槽的out端點則執(zhí)行步驟715 ;如為CCID卡槽的out端點則執(zhí)行步驟 716 ;
[0391]步驟715:讀卡器根據(jù)SCSI協(xié)議對接收到的數(shù)據(jù)進行相應(yīng)操作,返回步驟707 ;
[0392]在本實施例中,步驟715中接收到的數(shù)據(jù)包括:查詢卡槽指令、數(shù)據(jù)操作指令等;讀卡器操作完成后將操作結(jié)果返回給上位機。
[0393]步驟716:讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給智能SD卡;
[0394]在本實施例中,讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析的實現(xiàn)過程與實施例一相同,在此不再贅述;
[0395]步驟717:讀卡器接收智能SD卡返回的處理結(jié)果,并將處理結(jié)果存儲到USB接收緩存區(qū)中;
[0396]具體的,本實施例中,步驟717的具體實現(xiàn)過程與實施例一相同,在此不再贅述;
[0397]步驟718:讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟719,否則返回步驟718 ;
[0398]在本實施例中,步驟718與步驟710實現(xiàn)相同;
[0399]步驟719:讀卡器通過CCID卡槽的in端點將USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給上位機,返回步驟707。
[0400]在本發(fā)明中,實施例三中的另一種實現(xiàn)方式參照圖8,具體為:步驟210的枚舉過程在USB中斷里執(zhí)行,包括:當接收到枚舉指令時進入USB中斷進行枚舉操作,枚舉操作參見本實施例的實現(xiàn)方式;步驟211(即判斷USB是否連接)在讀卡器將數(shù)據(jù)返回給上位機之前(即步驟216、217、222之前)進行,具體實現(xiàn)過程可以參考實施例三,在此不再贅述。
[0401]實施例四
[0402]本發(fā)明實施例四提供一種基于智能SD卡的讀卡器的工作方法,如圖9所示,包括:
[0403]步驟900:讀卡器上電,進行初始化;
[0404]本實施例中,讀卡器對10、終端外部硬件、USB時鐘和其他USB寄存器配置進行初始化;還包括將枚舉標志的值設(shè)為預(yù)設(shè)初始值,將中斷標志復位;
[0405]步驟901:讀卡器定義SCSI和CCID兩個卡槽的配置信息;
[0406]在本實施例中,CCID卡槽的配置信息包括out端點、in端點、中斷端點;SCSI卡槽的配置信息包括out端點、in端點;
[0407]步驟902:讀卡器使能USB連接;
[0408]步驟903:當讀卡器接收到上位機下發(fā)的枚舉指令時,讀卡器將對應(yīng)的卡槽的配置信息返回給上位機;
[0409]在本實施例中,步驟903的具體實現(xiàn)方式與實施例一中的步驟106相同,在此不再贅述,枚舉成功后將枚舉標志設(shè)為預(yù)定值;
[0410]步驟904:讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟905,否則返回步驟904 ;
[0411]步驟904具體為:判斷枚舉標志是否為預(yù)定值,是則USB為連接狀態(tài),否則USB不為連接狀態(tài);
[0412]步驟905:讀卡器判斷是否有卡片插入,是則執(zhí)行步驟907,否則返回步驟906 ;
[0413]步驟906:讀卡器通過CCID卡槽的中斷端點向上位機發(fā)送無卡信息,將卡槽標識復位,執(zhí)行步驟910 ;
[0414]步驟907:讀卡器通過SWP接口向卡發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟908,否則執(zhí)行步驟909 ;
[0415]在本實施例中,步驟907的具體實現(xiàn)過程與實施例一相同,在此不再贅述;
[0416]步驟908:讀卡器通過CCID卡槽的中斷端點向上位機返回有卡信息,并將卡槽標識置位,執(zhí)行步驟910 ;
[0417]步驟909:讀卡器通過CCID卡槽的中斷端點向上位機發(fā)送無卡信息,將卡槽標識復位,執(zhí)行步驟910 ;
[0418]步驟910:當讀卡器檢測到置位的中斷標志時,判斷中斷標志的類型,如為卡到位標志則執(zhí)行步驟911,如為USB接收標志則執(zhí)行步驟917,如為無效標志則返回步驟910 ;
[0419]本實施例中,當讀卡器檢測到卡到位引腳電平發(fā)生變化時,進入插拔卡中斷,在該中斷中將卡到位標志置位后退出中斷,在插拔卡中斷中還將卡槽標識復位;當讀卡器接收到數(shù)據(jù)時,進入USB接收數(shù)據(jù)中斷,在該中斷中將USB接收數(shù)據(jù)標志置位后退出中斷,并將接收到的數(shù)據(jù)存儲到讀卡器的USB存儲器中;
[0420]步驟911:讀卡器根據(jù)卡槽標識判斷插入的卡是否為智能SD卡,是則執(zhí)行步驟912,否則返回步驟910 ;
[0421]具體的,在本實施例中,如卡槽標識置位則插入的卡為智能SD卡;
[0422]步驟912:讀卡器將中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟914,否則執(zhí)行步驟913 ;
[0423]在本實施例中,如卡到位電平為低電平則表示卡槽中無卡;
[0424]步驟913:讀卡器通過CCID卡槽的in端點向上位機返回無卡信息,返回步驟910 ;
[0425]步驟914:讀卡器通過SWP接口向卡發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟915,否則執(zhí)行步驟916 ;
[0426]在本實施例中,步驟914的具體實現(xiàn)過程與實施例一相同,在此不再贅述;
[0427]步驟915:讀卡器通過CCID卡槽的中斷端點向上位機返回有卡信息,并將卡槽標識置位,返回步驟910 ;
[0428]步驟916:讀卡器通過CCID卡槽的中斷端點向上位機發(fā)送無卡信息,并將卡槽標識復位,返回步驟910 ;
[0429]步驟917:讀卡器將中斷標志復位,獲取USB存儲器中的數(shù)據(jù),并判斷接收數(shù)據(jù)的端點類型,如為SCSI卡槽的out端點則執(zhí)行步驟918 ;如為CCID卡槽的out端點則執(zhí)行步驟 919 ;
[0430]步驟918:讀卡器根據(jù)SCSI協(xié)議對接收到的數(shù)據(jù)進行相應(yīng)操作,返回步驟910 ;
[0431]在本實施例中,步驟918中接收到的數(shù)據(jù)包括:查詢卡槽指令、數(shù)據(jù)操作指令等;在本實施例中,步驟918中讀卡器操作完成后將操作結(jié)果返回給上位機。
[0432]步驟919:讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給智能SD卡;
[0433]在本實施例中,讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析的實現(xiàn)過程與實施例一相同,在此不再贅述;
[0434]步驟920:讀卡器接收智能SD卡返回的處理結(jié)果,并將處理結(jié)果存儲到USB接收緩存區(qū)中;
[0435]具體的,本實施例中,步驟920的具體實現(xiàn)過程與實施例一相同,在此不再贅述;
[0436]步驟921:讀卡器通過CCID卡槽的in端點將USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給上位機,返回步驟910。
[0437]以上所述,僅為本發(fā)明較佳的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明公開的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。
【權(quán)利要求】
1.一種基于智能SD卡的讀卡器的工作方法,其特征在于,包括: 步驟AO:所述讀卡器上電,進行初始化; 步驟Al:所述讀卡器判斷是否有卡片插入,是則執(zhí)行步驟A2,否則返回步驟Al ; 步驟A2:所述讀卡器通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟A3,否則執(zhí)行步驟A4 ; 步驟A3:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息,執(zhí)行步驟A5 ; 步驟A4:所述讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟A5 ; 步驟A5:所述讀卡器使能USB連接; 步驟A6:當所述讀卡器接收到上位機下發(fā)的枚舉指令時,根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機,執(zhí)行步驟A7 ; 步驟A7:當所述讀卡器檢測到中斷標志置位時,所述讀卡器判斷所述中斷標志的類型,如為USB接收標志則執(zhí)行步驟A8 ;如為其他標志則執(zhí)行相應(yīng)操作; 步驟AS:所述讀卡器將所述中斷標志復位,并判斷接收數(shù)據(jù)的端點的類型,如為SCSI卡槽的out端點則執(zhí)行步驟A9,如為CCID卡槽的out端點則執(zhí)行步驟AlO ; 步驟A9:所述讀卡器根據(jù)SCSI協(xié)議對接收到的數(shù)據(jù)進行相應(yīng)操作,返回步驟A7 ; 步驟AlO:所述讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給所述智能SD卡; 步驟All:所述讀卡器等待并接收所述智能SD卡返回的處理結(jié)果,將所述處理結(jié)果存儲到USB接收緩存區(qū)中; 步驟A12:所述讀卡器通過CCID卡槽的in端點將所述USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給所述上位機,返回步驟A7。
2.如權(quán)利要求1所述的方法,其特征在于,在所述步驟A6與所述步驟A7之間包括: 步驟T:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟A7,否則執(zhí)行步驟T。
3.如權(quán)利要求1所述的方法,其特征在于,所述步驟A2-步驟A5替換為: 步驟B1:所述讀卡器判斷卡槽中是否有卡,是則執(zhí)行步驟B6,否則執(zhí)行步驟B2 ; 步驟B2:所述讀卡器定義SCSI卡槽的配置信息; 步驟B3:所述讀卡器使能USB連接; 步驟B4:當檢測到有卡片插入時,所述讀卡器將卡槽標識復位,通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟B5,否則執(zhí)行步驟A6 ;步驟B5:所述讀卡器將USB失能,定義SCSI和CCID兩個卡槽的配置信息,并將所述卡槽標識置位,執(zhí)行步驟B9; 步驟B6:所述讀卡器將卡槽標識復位并通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟B7,否則執(zhí)行步驟B8 ; 步驟B7:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息,并將所述卡槽標識置位,執(zhí)行步驟B9 ; 步驟B8:所述讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟B9 ; 步驟B9:所述讀卡器使能USB連接,執(zhí)行步驟A6。
4.如權(quán)利要求3所述的方法,其特征在于,在所述步驟A6與所述步驟A7之間還包括: 步驟T:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟A7,否則執(zhí)行步驟T。
5.如權(quán)利要求1所述的方法,其特征在于,所述步驟A2-所述步驟A6替換為: 步驟CO:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息; 步驟Cl:所述讀卡器使能USB連接; 步驟C2:當所述讀卡器接收到上位機下發(fā)的枚舉指令時,所述讀卡器根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機; 步驟C3:所述讀卡器判斷是否有卡片插入,是則執(zhí)行步驟C5,否則執(zhí)行步驟C4 ; 步驟C4:所述讀卡器通過CCID卡槽的中斷端點向所述上位機發(fā)送無卡信息,將卡槽標識復位,執(zhí)行步驟A7 ; 步驟C5:所述讀卡器通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟C6,否則執(zhí)行步驟C7 ; 步驟C6:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,并將卡槽標識置位,執(zhí)行步驟A7 ; 步驟C7:所述讀卡器通過CCID卡槽的中斷端點向所述上位機發(fā)送無卡信息,將卡槽標識復位,執(zhí)行步驟A7。
6.如權(quán)利要求5所述的方法,其特征在于,所述步驟C2與步驟C3之間包括: 步驟T:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟C3,否則返回步驟T。
7.如權(quán)利要求1-6任意一項所述的方法,其特征在于,所述步驟A7中讀卡器判斷所述中斷標志為卡到位標志時,執(zhí)行步驟Kl ; 步驟Kl:所述讀卡器根據(jù)卡槽標識判斷插入的卡片是否為智能SD卡,是則執(zhí)行步驟K2,否則返回步驟A7 ; 步驟K2:所述讀卡器將所述中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟K4,否則執(zhí)行步驟K3; 步驟K3:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回無卡信息,返回步驟A7 ; 步驟K4:所述讀卡器通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟K5,否則執(zhí)行步驟K6 ; 步驟K5:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,并將所述卡槽標識置位,返回步驟A2; 步驟K6:所述讀卡器通過CCID卡槽的中斷端點向所述上位機發(fā)送無卡信息,USB失能,并將所述卡槽標識復位,返回步驟A6。
8.如權(quán)利要求1-6任意一項所述的方法,其特征在于,所述當所述讀卡器接收到上位機下發(fā)的枚舉指令時,根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機,包括: 步驟Dl:當所述讀卡器接收到上位機下發(fā)的枚舉指令時,所述讀卡器檢測所述枚舉指令的類型,如所述枚舉指令是設(shè)備描述符請求,則執(zhí)行步驟D2 ;如所述枚舉指令是配置描述符請求,則執(zhí)行步驟D3 ;如所述枚舉指令是卡槽名稱請求,則執(zhí)行步驟D4 ;如所述枚舉指令是卡槽配置請求,則執(zhí)行步驟D5 ; 步驟D2:所述讀卡器將設(shè)備描述符發(fā)送給所述上位機,執(zhí)行步驟D6 ; 步驟D3:所述讀卡器將設(shè)備配置頭字節(jié)和配置數(shù)據(jù)發(fā)送給所述上位機,執(zhí)行步驟D6 ; 步驟D4:所述讀卡器根據(jù)所述枚舉指令中的標志號判斷所述卡槽名稱請求的類型,如標志號為第一數(shù)值則將SCSI卡槽名稱返回給所述上位機,執(zhí)行步驟D6 ;如標志號為第二數(shù)值則將CCID卡槽名稱返回給所述上位機,執(zhí)行步驟D6 ; 步驟D5:所述讀卡器根據(jù)所述枚舉指令中的標志號判斷所述卡槽配置請求的類型,如標志號為第一數(shù)值則將SCSI卡槽的配置信息返回給所述上位機,執(zhí)行步驟D6 ;如標志號為第二數(shù)值則將CCID卡槽的配置信息返回給所述上位機,執(zhí)行步驟D6 ; 步驟D6:所述讀卡器判斷枚舉是否完成,是則將枚舉標志設(shè)為預(yù)定數(shù)據(jù),繼續(xù);否則返回步驟Dl。
9.如權(quán)利要求2或4或6所述的方法,其特征在于,所述讀卡器將卡槽的配置信息全部返回給所述上位機之后還包括:將枚舉標志設(shè)為預(yù)定數(shù)據(jù); 所述讀卡器判斷USB是否為連接狀態(tài)具體包括:判斷所述枚舉標志是否為預(yù)定數(shù)據(jù),是則USB為連接狀態(tài),否則USB不為連接狀態(tài)。
10.如權(quán)利要求1-6任意一項所述的方法,其特征在于,所述步驟A2具體為: 步驟A2-1:所述讀卡器將所述SWP接口的電源引腳上電; 步驟A2-2:所述讀卡器將由主設(shè)備到從設(shè)備的信號置為高電平,開啟計時器; 步驟A2-3:所述讀卡器檢測由從設(shè)備到主設(shè)備的信號是否變?yōu)楦唠娖?,是則執(zhí)行步驟A2-5,否則執(zhí)行步驟A2-4 ; 步驟A2-4:所述讀卡器判斷所述計時器的值是否超過第一預(yù)設(shè)值,是則所述計時器清零,執(zhí)行步驟A4,否則返回步驟A2-3 ; 步驟A2-5:所述讀卡器接收所述卡片返回的由主設(shè)備到從設(shè)備的信號置為高電平的成功信息; 步驟A2-6:所述讀卡器給所述卡片發(fā)送設(shè)置自身處于全功耗模式指令; 步驟A2-7:所述讀卡器接收所述卡片返回的已準備好信息; 步驟A2-8:所述讀卡器給所述卡片發(fā)送復位初始化鏈路信息; 步驟A2-9:所述讀卡器判斷是否接收到所述卡片返回的回復信息,是則執(zhí)行步驟A2-10,否則執(zhí)行步驟A4 ; 步驟A2-10:所述讀卡器連接管道,并獲取所述卡片中的參數(shù); 步驟A2-11:所述讀卡器關(guān)閉所有連接的管道,更新所述卡片中的參數(shù); 步驟A2-12:所述讀卡器創(chuàng)建動態(tài)管道參數(shù),并打開所有連接的管道,執(zhí)行步驟A3。
11.如權(quán)利要求1-6任意一項所述的方法,其特征在于, 所述步驟A7中所述讀卡器判斷所述中斷標志的類型為卡到位標志時,則執(zhí)行步驟El ;步驟El:所述讀卡器判斷插入的卡片是否為智能SD卡,是則執(zhí)行步驟E2,否則將所述中斷標志復位,返回步驟A7 ; 步驟E2:所述讀卡器將所述中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟E4,否則執(zhí)行步驟E3 ; 步驟E3:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,返回步驟A2 ; 步驟E4:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回無卡信息,USB失能,返回步驟A7。
12.如權(quán)利要求11所述的方法,其特征在于, 所述步驟AO中進行初始化包括:將卡槽標識復位; 所述步驟A3還包括:所述讀卡器將所述卡槽標識置位; 所述步驟El具體為:所述讀卡器判斷所述卡槽標識是否置位,是則插入的卡片為智能SD卡,否則插入的卡片不為智能SD卡。
13.如權(quán)利要求1-6任意一項所述的方法,其特征在于,所述步驟AlO具體包括: 步驟A10-1:所述讀卡器判斷所述接收到的數(shù)據(jù)是否合法,是則執(zhí)行步驟A10-2,否則設(shè)置錯誤信息并存儲到USB接收緩存區(qū)中,執(zhí)行步驟A12 ; 步驟A10-2:所述讀卡器檢測所述接收到的數(shù)據(jù)的指令類型,如是數(shù)據(jù)交換APDU指令則執(zhí)行步驟A10-3,如是其他則執(zhí)行相應(yīng)操作; 步驟A10-3:所述讀卡器將所述數(shù)據(jù)交換APDU指令存儲到SD卡輸出緩存區(qū)中; 步驟A10-4:所述讀卡器將所述SD卡輸出緩存區(qū)中的數(shù)據(jù)發(fā)送給所述智能SD卡。
14.如權(quán)利要求13所述的方法,其特征在于,所述步驟A10-2中所述讀卡器檢測到的指令類型為上電指令,則執(zhí)行步驟Fl,如是下電指令,則執(zhí)行步驟F5 ;如是擴展通道指令,則執(zhí)行步驟F6 ;如是其他指令,則設(shè)置不支持信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12 ; 步驟Fl:所述讀卡器對所述智能SD卡進行上電操作; 步驟F2:所述讀卡器判斷是否上電激活成功,是則執(zhí)行步驟F3,否則執(zhí)行步驟F4 ; 步驟F3:所述讀卡器設(shè)置上電成功信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12 ; 步驟F4:所述讀卡器設(shè)置上電失敗信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12 ; 步驟F5:所述讀卡器對所述智能SD卡片執(zhí)行下電操作,設(shè)置下電成功信息并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12 ; 步驟F6:所述讀卡器根據(jù)所述擴展通道指令進行相應(yīng)操作,并將操作結(jié)果存儲到所述USB接收緩存區(qū),執(zhí)行步驟A12。
15.如權(quán)利要求13所述的方法,其特征在于,所述步驟A10-4包括: 步驟A10-41:所述讀卡器將所述SD卡輸出緩存區(qū)中的數(shù)據(jù)中最低字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù); 步驟A10-42:所述讀卡器獲取當前字節(jié)數(shù)據(jù)的最高比特位作為當前比特位; 步驟A10-43:所述讀卡器判斷當前比特位上的值是否為預(yù)定值,是則執(zhí)行步驟A10-44,否則執(zhí)行步驟A10-45 ; 步驟A10-44:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第一預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第二預(yù)設(shè)時長,執(zhí)行步驟A10-46 ; 步驟A10-45:所述讀卡器將所述SWP接口的輸出電平變?yōu)榈碗娖剑訒r第三預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第四預(yù)設(shè)時長,執(zhí)行步驟A10-46 ; 步驟A10-46:所述讀卡器判斷當前字節(jié)數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟A10-48,否則執(zhí)行步驟A10-47 ; 步驟A10-47:所述讀卡器將當前比特位的相鄰低位作為當前比特位,返回步驟A10-43 ; 步驟A10-48:所述讀卡器判斷所述SD卡輸出緩存區(qū)中的數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟Al I,否則執(zhí)行步驟A10-49 ; 步驟A10-49:所述讀卡器將當前字節(jié)的相鄰高字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù),返回步驟A10-42。
16.如權(quán)利要求15所述的方法,其特征在于,步驟All具體包括: 步驟All-1:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第五預(yù)設(shè)時長;步驟A11-2:所述讀卡器判斷所述SWP接口的輸入采集電平是否為高電平,是則執(zhí)行步驟Al 1-3,否則執(zhí)行步驟Al 1-4 ; 步驟A11-3:所述讀卡器將補位計數(shù)器加1,并采集一個比特位的高電平值并順序存儲到所述SD卡輸出緩存區(qū)中,執(zhí)行步驟A11-7 ; 步驟A11-4:所述讀卡器判斷所述補位計數(shù)器的值是否等于第一預(yù)設(shè)值,是則執(zhí)行步驟Al 1-5,否則執(zhí)行步驟Al 1-6 ; 步驟Al 1-5:所述讀卡器將所述補位計數(shù)器清零,執(zhí)行步驟Al 1-7 ; 步驟A11-6:所述讀卡器采集一個比特位的低電平值并順序存儲在所述SD卡輸出緩存區(qū)中,將采集計數(shù)器加I,執(zhí)行步驟Al 1-7 ; 步驟A11-7:所述讀卡器判斷所述采集計數(shù)器是否等于第二預(yù)設(shè)值,是則執(zhí)行步驟A12,否則執(zhí)行步驟Al 1-8 ; 步驟Al 1-8:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第六預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第四預(yù)設(shè)時長,返回步驟All-1。
17.一種基于智能SD卡的讀卡器的工作方法,其特征在于,包括: 步驟SO:所述讀卡器上電,進行初始化; 步驟S1:所述讀卡器判斷是否有卡片插入,是則執(zhí)行步驟S2,否則返回步驟SI ; 步驟S2:所述讀卡器通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟S3,否則執(zhí)行步驟S4 ; 步驟S3:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息,執(zhí)行步驟S5 ; 步驟S4:所述讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟S5 ; 步驟S5:所述讀卡器使能USB連接; 步驟S6:當所述讀卡器接收到上位機下發(fā)的枚舉指令時進入USB中斷,在所述USB中斷中,所述讀卡器根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機,執(zhí)行步驟S7 ; 步驟S7:當所述讀卡器檢測到中斷標志置位時,所述讀卡器判斷所述中斷標志的類型,如為USB接收標志則執(zhí)行步驟S8 ;如為其他標志則執(zhí)行相應(yīng)操作; 步驟S8:所述讀卡器將所述中斷標志復位,并判斷接收數(shù)據(jù)的端點的類型,如為SCSI卡槽的out端點則執(zhí)行步驟S9,如為CCID卡槽的out端點則執(zhí)行步驟SlO ; 步驟S9:所述讀卡器根據(jù)SCSI協(xié)議對接收到的數(shù)據(jù)進行相應(yīng)操作,返回步驟S7 ; 步驟SlO:所述讀卡器根據(jù)CCID協(xié)議對接收到的數(shù)據(jù)進行解析,并將解析結(jié)果發(fā)送給所述智能SD卡; 步驟Sll:所述讀卡器等待并接收所述智能SD卡返回的處理結(jié)果,將所述處理結(jié)果存儲到USB接收緩存區(qū)中; 步驟S12:所述讀卡器通過CCID卡槽的in端點將所述USB接收緩存區(qū)中的數(shù)據(jù)發(fā)送給所述上位機,返回步驟S7。
18.如權(quán)利要求17所述的方法,其特征在于,所述步驟Sll與所述步驟S12之間包括: 步驟S12’:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟S12,否則執(zhí)行步驟S12,。
19.如權(quán)利要求17所述的方法,其特征在于,所述步驟S2-所述步驟S5替換為: 步驟Pl:所述讀卡器判斷卡槽中是否有卡片,是則執(zhí)行步驟P6,否則執(zhí)行步驟P2 ; 步驟P2:所述讀卡器定義SCSI卡槽的配置信息; 步驟P3:所述讀卡器使能USB連接; 步驟P4:當檢測到有卡片插入時,所述讀卡器將卡槽標識復位,通過SWP接口向下發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟P5,否則執(zhí)行步驟S6 ; 步驟P5:所述讀卡器將USB失能,定義SCSI和CCID兩個卡槽的配置信息并將卡槽標識置位,執(zhí)行步驟P9; 步驟P6:所述讀卡器將卡槽標識復位并通過SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟P7,否則執(zhí)行步驟P8 ; 步驟P7:所述讀卡器定義SCSI和CCID兩個卡槽的配置信息,并將所述卡槽標識置位,執(zhí)行步驟P9 ; 步驟P8:所述讀卡器定義SCSI卡槽的配置信息,執(zhí)行步驟P9 ; 步驟P9:所述讀卡器使能USB連接,執(zhí)行步驟S6。
20.如權(quán)利要求19所述的方法,其特征在于,所述步驟Sll與所述步驟S12之間包括: 步驟S12’:所述讀卡器判斷USB是否為連接狀態(tài),是則執(zhí)行步驟S12,否則執(zhí)行步驟S12,。
21.如權(quán)利要求17-20任意一項所述的方法,其特征在于,所述步驟S7中所述讀卡器判斷所述中斷標志為卡到位標志時,執(zhí)行步驟Kl ; 步驟Kl:所述讀卡器根據(jù)卡槽標識判斷插入的卡片是否為智能SD卡,是則執(zhí)行步驟K2,否則返回步驟S7 ; 步驟K2:所述讀卡器將所述中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟K4,否則執(zhí)行步驟K3; 步驟K3:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回無卡信息,返回步驟S7 ; 步驟K4:所述讀卡器通過所述SWP接口向所述卡片發(fā)送上電指令,并判斷是否接收到上電成功的信息,是則執(zhí)行步驟K5,否則執(zhí)行步驟K6 ; 步驟K5:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,并將所述卡槽標識置位,返回步驟S2; 步驟K6:所述讀卡器通過CCID卡槽的中斷端點向所述上位機發(fā)送無卡信息,USB失能,并將所述卡槽標識復位,返回步驟S7。
22.如權(quán)利要求17-20任意一項所述的方法,其特征在于,所述在所述USB中斷中,所述讀卡器根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息返回給所述上位機,包括: 步驟Y1:所述讀卡器檢測所述枚舉指令的類型,如所述枚舉指令是設(shè)備描述符請求,則執(zhí)行步驟Y2 ;如所述枚舉指令是配置描述符請求,則執(zhí)行步驟Y3 ;如所述枚舉指令是卡槽名稱請求,則執(zhí)行步驟Y4 ;如所述枚舉指令是卡槽配置請求,則執(zhí)行步驟Y5 ; 步驟Y2:所述讀卡器將設(shè)備描述符發(fā)送給所述上位機,執(zhí)行步驟Y6 ; 步驟Y3:所述讀卡器將設(shè)備配置頭字節(jié)和配置數(shù)據(jù)發(fā)送給所述上位機,執(zhí)行步驟Y6 ;步驟Y4:所述讀卡器根據(jù)所述枚舉指令中的標志號判斷所述卡槽名稱請求的類型,如標志號為第一數(shù)值則將SCSI卡槽名稱返回給所述上位機,執(zhí)行步驟Y6 ;如標志號為第二數(shù)值則將CCID卡槽名稱返回給所述上位機,執(zhí)行步驟Y6 ; 步驟Y5:所述讀卡器根據(jù)所述枚舉指令中的標志號判斷所述卡槽配置請求的類型,如標志號為第一數(shù)值則將SCSI卡槽的配置信息返回給所述上位機,執(zhí)行步驟Y6 ;如標志號為第二數(shù)值則將CCID卡槽的配置信息返回給所述上位機,執(zhí)行步驟Y6 ; 步驟Y6:所述讀卡器判斷枚舉是否完成,是則將枚舉標志設(shè)為預(yù)定數(shù)據(jù),退出所述USB中斷;否則直接退出所述USB中斷。
23.如權(quán)利要求18或20所述的方法,其特征在于,所述在所述USB中斷中,所述讀卡器根據(jù)所述枚舉指令將對應(yīng)的卡槽的配置信息全部返回給所述上位機之后,包括:將枚舉標志設(shè)為預(yù)定數(shù)據(jù); 所述讀卡器判斷USB是否為連接狀態(tài)具體包括:判斷所述枚舉標志是否為預(yù)定數(shù)據(jù),是則USB為連接狀態(tài),否則USB不為連接狀態(tài)。
24.如權(quán)利要求17-20任意一項所述的方法,其特征在于,所述步驟S2具體為: 步驟S2-1:所述讀卡器將所述SWP接口的電源引腳上電; 步驟S2-2:所述讀卡器將由主設(shè)備到從設(shè)備的信號置為高電平,開啟計時器; 步驟S2-3:所述讀卡器檢測由從設(shè)備到主設(shè)備的信號是否變?yōu)楦唠娖?,是則執(zhí)行步驟S2-5,否則執(zhí)行步驟S2-4 ; 步驟S2-4:所述讀卡器判斷所述計時器的值是否超過第一預(yù)設(shè)值,是則所述計時器清零,執(zhí)行步驟S4,否則返回步驟S2-3 ; 步驟S2-5:所述讀卡器接收所述卡片返回的由主設(shè)備到從設(shè)備的信號置為高電平的成功信息; 步驟S2-6:所述讀卡器給所述卡片發(fā)送設(shè)置自身處于全功耗模式指令; 步驟S2-7:所述讀卡器接收所述卡片返回的已準備好信息; 步驟S2-8:所述讀卡器給所述卡片發(fā)送復位初始化鏈路信息; 步驟S2-9:所述讀卡器判斷是否接收到所述卡片返回的回復信息,是則執(zhí)行步驟S2-10,否則執(zhí)行步驟S4 ; 步驟S2-10:所述讀卡器連接管道,并獲取所述卡片中的參數(shù); 步驟S2-11:所述讀卡器關(guān)閉所有連接的管道,更新所述卡片中的參數(shù); 步驟S2-12:所述讀卡器創(chuàng)建動態(tài)管道參數(shù),并打開所有連接的管道,執(zhí)行步驟S3。
25.如權(quán)利要求17-20任意一項所述的方法,其特征在于, 所述步驟S7中所述讀卡器判斷所述中斷標志的類型為卡到位標志時,則執(zhí)行步驟LI ;步驟L1:所述讀卡器判斷插入的卡片是否為智能SD卡,是則執(zhí)行步驟L2,否則將所述中斷標志復位,返回步驟S7 ; 步驟L2:所述讀卡器將所述中斷標志復位,檢測卡到位電平是否為低電平,是則執(zhí)行步驟L4,否則執(zhí)行步驟L3; 步驟L3:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回有卡信息,返回步驟S2 ; 步驟L4:所述讀卡器通過CCID卡槽的中斷端點向所述上位機返回無卡信息,USB失能,返回步驟S7。
26.如權(quán)利要求25所述的方法,其特征在于, 所述步驟SO中進行初始化包括:將卡槽標識復位; 所述步驟S3還包括:所述讀卡器將所述卡槽標識置位; 所述步驟LI具體為:所述讀卡器判斷所述卡槽標識是否置位,是則插入的卡片為智能SD卡,否則插入的卡片不為智能SD卡。
27.如權(quán)利要求17-20任意一項所述的方法,其特征在于,所述步驟SlO具體包括: 步驟S10-1:所述讀卡器判斷所述接收到的數(shù)據(jù)是否合法,是則執(zhí)行步驟S10-2,否則設(shè)置錯誤信息并存儲到USB接收緩存區(qū)中,執(zhí)行步驟S12 ; 步驟S10-2:所述讀卡器檢測所述接收到的數(shù)據(jù)的指令類型,如是數(shù)據(jù)交換APDU指令則執(zhí)行步驟S10-3,如是其他則執(zhí)行相應(yīng)操作; 步驟S10-3:所述讀卡器將所述數(shù)據(jù)交換APDU指令存儲到SD卡輸出緩存區(qū)中; 步驟S10-4:所述讀卡器將所述SD卡輸出緩存區(qū)中的數(shù)據(jù)發(fā)送給所述智能SD卡。
28.如權(quán)利要求27所述的方法,其特征在于,所述步驟S10-2中所述讀卡器檢測到的指令類型為上電指令,則執(zhí)行步驟Cl,如是下電指令,則執(zhí)行步驟C5 ;如是擴展通道指令,則執(zhí)行步驟C6 ;如是其他指令,則設(shè)置不支持信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12 ; 步驟Cl:所述讀卡器對所述智能SD卡進行上電操作; 步驟C2:所述讀卡器判斷是否上電激活成功,是則執(zhí)行步驟C3,否則執(zhí)行步驟C4 ; 步驟C3:所述讀卡器設(shè)置上電成功信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12 ; 步驟C4:所述讀卡器設(shè)置上電失敗信息,并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12 ; 步驟C5:所述讀卡器對所述智能SD卡片執(zhí)行下電操作,設(shè)置下電成功信息并將其存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12 ; 步驟C6:所述讀卡器根據(jù)所述擴展通道指令進行相應(yīng)操作,并將操作結(jié)果存儲到所述USB接收緩存區(qū),執(zhí)行步驟S12。
29.如權(quán)利要求27所述的方法,其特征在于,所述步驟S10-4包括: 步驟S10-41:所述讀卡器將所述SD卡輸出緩存區(qū)中的數(shù)據(jù)中最低字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù); 步驟S10-42:所述讀卡器獲取當前字節(jié)數(shù)據(jù)的最高比特位作為當前比特位; 步驟S10-43:所述讀卡器判斷當前比特位上的值是否為預(yù)定值,是則執(zhí)行步驟S10-44,否則執(zhí)行步驟S10-45 ; 步驟S10-44:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第一預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)榈碗娖剑訒r第二預(yù)設(shè)時長,執(zhí)行步驟S10-46 ; 步驟S10-45:所述讀卡器將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第三預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)楦唠娖剑訒r第四預(yù)設(shè)時長,執(zhí)行步驟S10-46 ; 步驟S10-46:所述讀卡器判斷當前字節(jié)數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟S10-48,否則執(zhí)行步驟S10-47 ; 步驟S10-47:所述讀卡器將當前比特位的相鄰低位作為當前比特位,返回步驟S10-43 ; 步驟S10-48:所述讀卡器判斷所述SD卡輸出緩存區(qū)中的數(shù)據(jù)是否發(fā)送完成,是則執(zhí)行步驟S11,否則將當前字節(jié)的相鄰高字節(jié)數(shù)據(jù)作為當前字節(jié)數(shù)據(jù),返回步驟S10-42。
30.如權(quán)利要求29所述的方法,其特征在于,步驟Sll具體包括: 步驟Sll-1:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第五預(yù)設(shè)時長;步驟S11-2:所述讀卡器判斷所述SWP接口的輸入采集電平是否為高電平,是則執(zhí)行步驟SI 1-3,否則執(zhí)行步驟SI 1-4 ; 步驟S11-3:所述讀卡器將補位計數(shù)器加1,并采集一個比特位的高電平值并順序存儲到所述SD卡輸出緩存區(qū)中,執(zhí)行步驟S11-7 ; 步驟S11-4:所述讀卡器判斷所述補位計數(shù)器的值是否等于第一預(yù)設(shè)值,是則執(zhí)行步驟SI 1-5,否則執(zhí)行步驟SI 1-6 ; 步驟SI 1-5:所述讀卡器將所述補位計數(shù)器清零,執(zhí)行步驟SI 1-7 ; 步驟S11-6:所述讀卡器采集一個比特位的低電平值并順序存儲在所述SD卡輸出緩存區(qū)中,將采集計數(shù)器加1,執(zhí)行步驟S11-7 ; 步驟S11-7:所述讀卡器判斷所述采集計數(shù)器是否等于第二預(yù)設(shè)值,是則執(zhí)行步驟S12,否則執(zhí)行步驟SI 1-8 ; 步驟S11-8:所述讀卡器將所述SWP接口的輸出電平變?yōu)楦唠娖?,延時第六預(yù)設(shè)時長后將所述SWP接口的輸出電平變?yōu)榈碗娖?,延時第四預(yù)設(shè)時長,返回步驟Sll-1。
【文檔編號】G06K7/00GK104281825SQ201410512856
【公開日】2015年1月14日 申請日期:2014年9月29日 優(yōu)先權(quán)日:2014年9月29日
【發(fā)明者】陸舟, 于華章 申請人:飛天誠信科技股份有限公司