一种基于智能sd卡的读卡器的工作方法

文档序号:6628969阅读:388来源:国知局
一种基于智能sd卡的读卡器的工作方法
【专利摘要】本发明公开一种基于智能SD卡的读卡器的工作方法,包括:读卡器上电,进行初始化;判断是否有智能SD卡片插入,是则定义SCSI和CCID两个卡槽的配置信息,否则定义SCSI卡槽的配置信息;使能USB连接;根据枚举指令将对应的卡槽的配置信息返回给上位机,当读卡器检测到中断标志置位为USB接收标志时,将中断标志复位,如接收数据的端点的类型为CCID的out端点则根据CCID协议对接收到的数据进行解析,并将解析结果发送给智能SD卡;等待并接收智能SD卡返回的处理结果,通过CCID卡槽的in端点将USB接收缓存区中的数据发送给上位机。通过本发明提供的方法实现了智能SD卡与上位机的通讯。
【专利说明】—种基于智能SD卡的读卡器的工作方法

【技术领域】
[0001]本发明涉及信息安全领域,尤其涉及一种基于智能SD卡的读卡器的工作方法。

【背景技术】
[0002]目前,随着科技的发展,智能手机以及数码产品得到广泛应用,SD卡作为一种基于半导体闪存工艺的存储卡,由于其具有大容量、高性能、安全、读写速度高达2M/秒等特点,现已成为智能手机以及数码产品中应用最广泛的一种存储卡。SD卡分为智能SD卡和普通SD卡两种,其中,智能SD卡是一种加入了智能芯片的SD卡,包括一个金融IC模块和存储SD模块两部分组成;普通SD卡为只是存储功能的SD卡,金融IC模块是一个CPU模块,正常情况下通过两个触点进行读写;在现有技术中,智能SD卡只能依赖智能手机或数码产品进行应用,却无法在PC上使用。


【发明内容】

[0003]本发明的目的是为了克服现有技术的不足,提供一种基于智能SD卡的读卡器的工作方法。
[0004]本发明提供了一种基于智能SD卡的读卡器的工作方法,包括:
[0005]步骤AO:所述读卡器上电,进行初始化;
[0006]步骤Al:所述读卡器判断是否有卡片插入,是则执行步骤A2,否则返回步骤Al ;
[0007]步骤A2:所述读卡器通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤A3,否则执行步骤A4 ;
[0008]步骤A3:所述读卡器定义SCSI和CCID两个卡槽的配置信息,执行步骤A5 ;
[0009]步骤A4:所述读卡器定义SCSI卡槽的配置信息,执行步骤A5 ;
[0010]步骤A5:所述读卡器使能USB连接;
[0011]步骤A6:当所述读卡器接收到上位机下发的枚举指令时,根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机,执行步骤A7 ;
[0012]步骤A7:当所述读卡器检测到中断标志置位时,所述读卡器判断所述中断标志的类型,如为USB接收标志则执行步骤A8 ;如为其他标志则执行相应操作;
[0013]步骤AS:所述读卡器将所述中断标志复位,并判断接收数据的端点的类型,如为SCSI卡槽的out端点则执行步骤A9,如为CCID卡槽的out端点则执行步骤AlO ;
[0014]步骤A9:所述读卡器根据SCSI协议对接收到的数据进行相应操作,返回步骤A7 ;
[0015]步骤AlO:所述读卡器根据CCID协议对接收到的数据进行解析,并将解析结果发送给所述智能SD卡;
[0016]步骤All:所述读卡器等待并接收所述智能SD卡返回的处理结果,将所述处理结果存储到USB接收缓存区中;
[0017]步骤A12:所述读卡器通过CCID卡槽的in端点将所述USB接收缓存区中的数据发送给所述上位机,返回步骤A7。
[0018]进一步地,在所述步骤A6与所述步骤A7之间包括:
[0019]步骤T:所述读卡器判断USB是否为连接状态,是则执行步骤A7,否则执行步骤T。
[0020]进一步地,所述步骤A2-步骤A5替换为:
[0021]步骤B1:所述读卡器判断卡槽中是否有卡,是则执行步骤B6,否则执行步骤B2 ;
[0022]步骤B2:所述读卡器定义SCSI卡槽的配置信息;
[0023]步骤B3:所述读卡器使能USB连接;
[0024]步骤B4:当检测到有卡片插入时,所述读卡器将卡槽标识复位,通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤B5,否则执行步骤A6 ;
[0025]步骤B5:所述读卡器将USB失能,定义SCSI和CCID两个卡槽的配置信息,并将所述卡槽标识置位,执行步骤B9 ;
[0026]步骤B6:所述读卡器将卡槽标识复位并通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤B7,否则执行步骤B8 ;
[0027]步骤B7:所述读卡器定义SCSI和CCID两个卡槽的配置信息,并将所述卡槽标识置位,执行步骤B9;
[0028]步骤B8:所述读卡器定义SCSI卡槽的配置信息,执行步骤B9 ;
[0029]步骤B9:所述读卡器使能USB连接,执行步骤A6。
[0030]进一步地,在所述步骤A6与所述步骤A7之间还包括:
[0031]步骤T:所述读卡器判断USB是否为连接状态,是则执行步骤A7,否则执行步骤T。
[0032]进一步地,所述步骤A2-所述步骤A6替换为:
[0033]步骤CO:所述读卡器定义SCSI和CCID两个卡槽的配置信息;
[0034]步骤Cl:所述读卡器使能USB连接;
[0035]步骤C2:当所述读卡器接收到上位机下发的枚举指令时,所述读卡器根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机;
[0036]步骤C3:所述读卡器判断是否有卡片插入,是则执行步骤C5,否则执行步骤C4 ;
[0037]步骤C4:所述读卡器通过CCID卡槽的中断端点向所述上位机发送无卡信息,将卡槽标识复位,执行步骤A7 ;
[0038]步骤C5:所述读卡器通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤C6,否则执行步骤C7 ;
[0039]步骤C6:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,并将卡槽标识置位,执行步骤A7 ;
[0040]步骤C7:所述读卡器通过CCID卡槽的中断端点向所述上位机发送无卡信息,将卡槽标识复位,执行步骤A7。
[0041]进一步地,所述步骤C2与步骤C3之间包括:
[0042]步骤T:所述读卡器判断USB是否为连接状态,是则执行步骤C3,否则返回步骤T。
[0043]进一步地,所述步骤A7中读卡器判断所述中断标志为卡到位标志时,执行步骤Ki ;
[0044]步骤Kl:所述读卡器根据卡槽标识判断插入的卡片是否为智能SD卡,是则执行步骤K2,否则返回步骤A7 ;
[0045]步骤K2:所述读卡器将所述中断标志复位,检测卡到位电平是否为低电平,是则执行步骤K4,否则执行步骤K3 ;
[0046]步骤K3:所述读卡器通过CCID卡槽的中断端点向所述上位机返回无卡信息,返回步骤A7 ;
[0047]步骤K4:所述读卡器通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤K5,否则执行步骤K6 ;
[0048]步骤K5:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,并将所述卡槽标识置位,返回步骤A2 ;
[0049]步骤K6:所述读卡器通过CCID卡槽的中断端点向所述上位机发送无卡信息,USB失能,并将所述卡槽标识复位,返回步骤A6。
[0050]进一步地,所述当所述读卡器接收到上位机下发的枚举指令时,根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机,包括:
[0051]步骤Dl:当所述读卡器接收到上位机下发的枚举指令时,所述读卡器检测所述枚举指令的类型,如所述枚举指令是设备描述符请求,则执行步骤D2 ;如所述枚举指令是配置描述符请求,则执行步骤D3 ;如所述枚举指令是卡槽名称请求,则执行步骤D4 ;如所述枚举指令是卡槽配置请求,则执行步骤D5 ;
[0052]步骤D2:所述读卡器将设备描述符发送给所述上位机,执行步骤D6 ;
[0053]步骤D3:所述读卡器将设备配置头字节和配置数据发送给所述上位机,执行步骤D6 ;
[0054]步骤D4:所述读卡器根据所述枚举指令中的标志号判断所述卡槽名称请求的类型,如标志号为第一数值则将SCSI卡槽名称返回给所述上位机,执行步骤D6 ;如标志号为第二数值则将CCID卡槽名称返回给所述上位机,执行步骤D6 ;
[0055]步骤D5:所述读卡器根据所述枚举指令中的标志号判断所述卡槽配置请求的类型,如标志号为第一数值则将SCSI卡槽的配置信息返回给所述上位机,执行步骤D6 ;如标志号为第二数值则将CCID卡槽的配置信息返回给所述上位机,执行步骤D6 ;
[0056]步骤D6:所述读卡器判断枚举是否完成,是则将枚举标志设为预定数据,继续;否则返回步骤Dl。
[0057]进一步地,所述读卡器将卡槽的配置信息全部返回给所述上位机之后还包括:将枚举标志设为预定数据;
[0058]所述读卡器判断USB是否为连接状态具体包括:判断所述枚举标志是否为预定数据,是则USB为连接状态,否则USB不为连接状态。
[0059]进一步地,所述步骤A2具体为:
[0060]步骤A2-1:所述读卡器将所述SWP接口的电源引脚上电;
[0061]步骤A2-2:所述读卡器将由主设备到从设备的信号置为高电平,开启计时器;
[0062]步骤A2-3:所述读卡器检测由从设备到主设备的信号是否变为高电平,是则执行步骤A2-5,否则执行步骤A2-4 ;
[0063]步骤A2-4:所述读卡器判断所述计时器的值是否超过第一预设值,是则所述计时器清零,执行步骤A4,否则返回步骤A2-3 ;
[0064]步骤A2-5:所述读卡器接收所述卡片返回的由主设备到从设备的信号置为高电平的成功信息;
[0065]步骤A2-6:所述读卡器给所述卡片发送设置自身处于全功耗模式指令;
[0066]步骤A2-7:所述读卡器接收所述卡片返回的已准备好信息;
[0067]步骤A2-8:所述读卡器给所述卡片发送复位初始化链路信息;
[0068]步骤A2-9:所述读卡器判断是否接收到所述卡片返回的回复信息,是则执行步骤A2-10,否则执行步骤A4 ;
[0069]步骤A2-10:所述读卡器连接管道,并获取所述卡片中的参数;
[0070]步骤A2-11:所述读卡器关闭所有连接的管道,更新所述卡片中的参数;
[0071]步骤A2-12:所述读卡器创建动态管道参数,并打开所有连接的管道,执行步骤A3。
[0072]进一步地,所述步骤A7中所述读卡器判断所述中断标志的类型为卡到位标志时,则执行步骤El ;
[0073]步骤El:所述读卡器判断插入的卡片是否为智能SD卡,是则执行步骤E2,否则将所述中断标志复位,返回步骤A7 ;
[0074]步骤E2:所述读卡器将所述中断标志复位,检测卡到位电平是否为低电平,是则执行步骤E4,否则执行步骤E3 ;
[0075]步骤E3:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,返回步骤A2 ;
[0076]步骤E4:所述读卡器通过CCID卡槽的中断端点向所述上位机返回无卡信息,USB失能,返回步骤A7。
[0077]进一步地,所述步骤AO中进行初始化包括:将卡槽标识复位;
[0078]所述步骤A3还包括:所述读卡器将所述卡槽标识置位;
[0079]所述步骤El具体为:所述读卡器判断所述卡槽标识是否置位,是则插入的卡片为智能SD卡,否则插入的卡片不为智能SD卡。
[0080]进一步地,所述步骤AlO具体包括:
[0081]步骤A10-1:所述读卡器判断所述接收到的数据是否合法,是则执行步骤A10-2,否则设置错误信息并存储到USB接收缓存区中,执行步骤A12 ;
[0082]步骤A10-2:所述读卡器检测所述接收到的数据的指令类型,如是数据交换APDU指令则执行步骤A10-3,如是其他则执行相应操作;
[0083]步骤A10-3:所述读卡器将所述数据交换APDU指令存储到SD卡输出缓存区中;
[0084]步骤A10-4:所述读卡器将所述SD卡输出缓存区中的数据发送给所述智能SD卡。
[0085]进一步地,所述步骤A10-2中所述读卡器检测到的指令类型为上电指令,则执行步骤Fl,如是下电指令,则执行步骤F5 ;如是扩展通道指令,则执行步骤F6 ;如是其他指令,则设置不支持信息,并将其存储到所述USB接收缓存区,执行步骤A12 ;
[0086]步骤Fl:所述读卡器对所述智能SD卡进行上电操作;
[0087]步骤F2:所述读卡器判断是否上电激活成功,是则执行步骤F3,否则执行步骤F4 ;
[0088]步骤F3:所述读卡器设置上电成功信息,并将其存储到所述USB接收缓存区,执行步骤A12 ;
[0089]步骤F4:所述读卡器设置上电失败信息,并将其存储到所述USB接收缓存区,执行步骤A12 ;
[0090]步骤F5:所述读卡器对所述智能SD卡片执行下电操作,设置下电成功信息并将其存储到所述USB接收缓存区,执行步骤A12 ;
[0091]步骤F6:所述读卡器根据所述扩展通道指令进行相应操作,并将操作结果存储到所述USB接收缓存区,执行步骤A12。
[0092]进一步地,所述步骤A10-4包括:
[0093]步骤A10-41:所述读卡器将所述SD卡输出缓存区中的数据中最低字节数据作为当前字节数据;
[0094]步骤A10-42:所述读卡器获取当前字节数据的最高比特位作为当前比特位;
[0095]步骤A10-43:所述读卡器判断当前比特位上的值是否为预定值,是则执行步骤A10-44,否则执行步骤A10-45 ;
[0096]步骤A10-44:所述读卡器将所述SWP接口的输出电平变为高电平,延时第一预设时长后将所述SWP接口的输出电平变为低电平,延时第二预设时长,执行步骤A10-46 ;
[0097]步骤A10-45:所述读卡器将所述SWP接口的输出电平变为低电平,延时第三预设时长后将所述SWP接口的输出电平变为高电平,延时第四预设时长,执行步骤A10-46 ;
[0098]步骤A10-46:所述读卡器判断当前字节数据是否发送完成,是则执行步骤A10-48,否则执行步骤A10-47 ;
[0099]步骤A10-47:所述读卡器将当前比特位的相邻低位作为当前比特位,返回步骤A10-43 ;
[0100]步骤A10-48:所述读卡器判断所述SD卡输出缓存区中的数据是否发送完成,是则执行步骤Al I,否则执行步骤A10-49 ;
[0101]步骤A10-49:所述读卡器将当前字节的相邻高字节数据作为当前字节数据,返回步骤 A10-42。
[0102]进一步地,步骤All具体包括:
[0103]步骤All-1:所述读卡器将所述SWP接口的输出电平变为高电平,延时第五预设时长;
[0104]步骤Al 1-2:所述读卡器判断所述SWP接口的输入采集电平是否为高电平,是则执行步骤Al 1-3,否则执行步骤Al 1-4 ;
[0105]步骤A11-3:所述读卡器将补位计数器加1,并采集一个比特位的高电平值并顺序存储到所述SD卡输出缓存区中,执行步骤Al 1-7 ;
[0106]步骤A11-4:所述读卡器判断所述补位计数器的值是否等于第一预设值,是则执行步骤Al 1-5,否则执行步骤Al 1-6 ;
[0107]步骤A11-5:所述读卡器将所述补位计数器清零,执行步骤Al 1-7 ;
[0108]步骤A11-6:所述读卡器采集一个比特位的低电平值并顺序存储在所述SD卡输出缓存区中,将采集计数器加1,执行步骤A11-7 ;
[0109]步骤A11-7:所述读卡器判断所述采集计数器是否等于第二预设值,是则执行步骤A12,否则执行步骤Al 1-8 ;
[0110]步骤A11-8:所述读卡器将所述SWP接口的输出电平变为高电平,延时第六预设时长后将所述SWP接口的输出电平变为低电平,延时第四预设时长,返回步骤All-1。
[0111]本发明又提供一种基于智能SD卡的读卡器的工作方法,包括:
[0112]步骤SO:所述读卡器上电,进行初始化;
[0113]步骤S1:所述读卡器判断是否有卡片插入,是则执行步骤S2,否则返回步骤SI ;
[0114]步骤S2:所述读卡器通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤S3,否则执行步骤S4 ;
[0115]步骤S3:所述读卡器定义SCSI和CCID两个卡槽的配置信息,执行步骤S5 ;
[0116]步骤S4:所述读卡器定义SCSI卡槽的配置信息,执行步骤S5 ;
[0117]步骤S5:所述读卡器使能USB连接;
[0118]步骤S6:当所述读卡器接收到上位机下发的枚举指令时进入USB中断,在所述USB中断中,所述读卡器根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机,执行步骤S7 ;
[0119]步骤S7:当所述读卡器检测到中断标志置位时,所述读卡器判断所述中断标志的类型,如为USB接收标志则执行步骤S8 ;如为其他标志则执行相应操作;
[0120]步骤S8:所述读卡器将所述中断标志复位,并判断接收数据的端点的类型,如为SCSI卡槽的out端点则执行步骤S9,如为CCID卡槽的out端点则执行步骤SlO ;
[0121]步骤S9:所述读卡器根据SCSI协议对接收到的数据进行相应操作,返回步骤S7 ;
[0122]步骤SlO:所述读卡器根据CCID协议对接收到的数据进行解析,并将解析结果发送给所述智能SD卡;
[0123]步骤Sll:所述读卡器等待并接收所述智能SD卡返回的处理结果,将所述处理结果存储到USB接收缓存区中;
[0124]步骤S12:所述读卡器通过CCID卡槽的in端点将所述USB接收缓存区中的数据发送给所述上位机,返回步骤S7。
[0125]进一步地,所述步骤Sll与所述步骤S12之间包括:
[0126]步骤S12’:所述读卡器判断USB是否为连接状态,是则执行步骤S12,否则执行步骤 S12,。
[0127]进一步地,所述步骤S2-所述步骤S5替换为:
[0128]步骤Pl:所述读卡器判断卡槽中是否有卡片,是则执行步骤P6,否则执行步骤P2 ;
[0129]步骤P2:所述读卡器定义SCSI卡槽的配置信息;
[0130]步骤P3:所述读卡器使能USB连接;
[0131]步骤P4:当检测到有卡片插入时,所述读卡器将卡槽标识复位,通过SWP接口向下发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤P5,否则执行步骤S6 ;
[0132]步骤P5:所述读卡器将USB失能,定义SCSI和CCID两个卡槽的配置信息并将卡槽标识置位,执行步骤P9;
[0133]步骤P6:所述读卡器将卡槽标识复位并通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤P7,否则执行步骤P8 ;
[0134]步骤P7:所述读卡器定义SCSI和CCID两个卡槽的配置信息,并将所述卡槽标识置位,执行步骤P9;
[0135]步骤P8:所述读卡器定义SCSI卡槽的配置信息,执行步骤P9 ;
[0136]步骤P9:所述读卡器使能USB连接,执行步骤S6。
[0137]进一步地,所述步骤Sll与所述步骤S12之间包括:
[0138]步骤S12’:所述读卡器判断USB是否为连接状态,是则执行步骤S12,否则执行步骤 S12,。
[0139]进一步地,所述步骤S7中所述读卡器判断所述中断标志为卡到位标志时,执行步骤Kl ;
[0140]步骤Kl:所述读卡器根据卡槽标识判断插入的卡片是否为智能SD卡,是则执行步骤K2,否则返回步骤S7 ;
[0141]步骤K2:所述读卡器将所述中断标志复位,检测卡到位电平是否为低电平,是则执行步骤K4,否则执行步骤K3 ;
[0142]步骤K3:所述读卡器通过CCID卡槽的中断端点向所述上位机返回无卡信息,返回步骤S7 ;
[0143]步骤K4:所述读卡器通过所述SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤K5,否则执行步骤K6 ;
[0144]步骤K5:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,并将所述卡槽标识置位,返回步骤S2 ;
[0145]步骤K6:所述读卡器通过CCID卡槽的中断端点向所述上位机发送无卡信息,USB失能,并将所述卡槽标识复位,返回步骤S7。
[0146]进一步地,所述在所述USB中断中,所述读卡器根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机,包括:
[0147]步骤Yl:所述读卡器检测所述枚举指令的类型,如所述枚举指令是设备描述符请求,则执行步骤Y2 ;如所述枚举指令是配置描述符请求,则执行步骤Y3 ;如所述枚举指令是卡槽名称请求,则执行步骤Y4 ;如所述枚举指令是卡槽配置请求,则执行步骤Y5 ;
[0148]步骤Y2:所述读卡器将设备描述符发送给所述上位机,执行步骤Y6 ;
[0149]步骤Y3:所述读卡器将设备配置头字节和配置数据发送给所述上位机,执行步骤Y6 ;
[0150]步骤Y4:所述读卡器根据所述枚举指令中的标志号判断所述卡槽名称请求的类型,如标志号为第一数值则将SCSI卡槽名称返回给所述上位机,执行步骤Y6 ;如标志号为第二数值则将CCID卡槽名称返回给所述上位机,执行步骤Y6 ;
[0151]步骤Y5:所述读卡器根据所述枚举指令中的标志号判断所述卡槽配置请求的类型,如标志号为第一数值则将SCSI卡槽的配置信息返回给所述上位机,执行步骤Y6 ;如标志号为第二数值则将CCID卡槽的配置信息返回给所述上位机,执行步骤Y6 ;
[0152]步骤Y6:所述读卡器判断枚举是否完成,是则将枚举标志设为预定数据,退出所述USB中断;否则直接退出所述USB中断。
[0153]进一步地,所述在所述USB中断中,所述读卡器根据所述枚举指令将对应的卡槽的配置信息全部返回给所述上位机之后,包括:将枚举标志设为预定数据;
[0154]所述读卡器判断USB是否为连接状态具体包括:判断所述枚举标志是否为预定数据,是则USB为连接状态,否则USB不为连接状态。
[0155]进一步地,所述步骤S2具体为:
[0156]步骤S2-1:所述读卡器将所述SWP接口的电源引脚上电;
[0157]步骤S2-2:所述读卡器将由主设备到从设备的信号置为高电平,开启计时器;
[0158]步骤S2-3:所述读卡器检测由从设备到主设备的信号是否变为高电平,是则执行步骤S2-5,否则执行步骤S2-4 ;
[0159]步骤S2-4:所述读卡器判断所述计时器的值是否超过第一预设值,是则所述计时器清零,执行步骤S4,否则返回步骤S2-3 ;
[0160]步骤S2-5:所述读卡器接收所述卡片返回的由主设备到从设备的信号置为高电平的成功信息;
[0161]步骤S2-6:所述读卡器给所述卡片发送设置自身处于全功耗模式指令;
[0162]步骤S2-7:所述读卡器接收所述卡片返回的已准备好信息;
[0163]步骤S2-8:所述读卡器给所述卡片发送复位初始化链路信息;
[0164]步骤S2-9:所述读卡器判断是否接收到所述卡片返回的回复信息,是则执行步骤S2-10,否则执行步骤S4 ;
[0165]步骤S2-10:所述读卡器连接管道,并获取所述卡片中的参数;
[0166]步骤S2-11:所述读卡器关闭所有连接的管道,更新所述卡片中的参数;
[0167]步骤S2-12:所述读卡器创建动态管道参数,并打开所有连接的管道,执行步骤S3。
[0168]进一步地,所述步骤S7中所述读卡器判断所述中断标志的类型为卡到位标志时,则执行步骤LI ;
[0169]步骤L1:所述读卡器判断插入的卡片是否为智能SD卡,是则执行步骤L2,否则将所述中断标志复位,返回步骤S7 ;
[0170]步骤L2:所述读卡器将所述中断标志复位,检测卡到位电平是否为低电平,是则执行步骤L4,否则执行步骤L3 ;
[0171]步骤L3:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,返回步骤S2 ;
[0172]步骤L4:所述读卡器通过CCID卡槽的中断端点向所述上位机返回无卡信息,USB失能,返回步骤S7。
[0173]进一步地,所述步骤SO中进行初始化包括:将卡槽标识复位;
[0174]所述步骤S3还包括:所述读卡器将所述卡槽标识置位;
[0175]所述步骤LI具体为:所述读卡器判断所述卡槽标识是否置位,是则插入的卡片为智能SD卡,否则插入的卡片不为智能SD卡。
[0176]进一步地,所述步骤SlO具体包括:
[0177]步骤S10-1:所述读卡器判断所述接收到的数据是否合法,是则执行步骤S10-2,否则设置错误信息并存储到USB接收缓存区中,执行步骤S12 ;
[0178]步骤S10-2:所述读卡器检测所述接收到的数据的指令类型,如是数据交换APDU指令则执行步骤S10-3,如是其他则执行相应操作;
[0179]步骤S10-3:所述读卡器将所述数据交换APDU指令存储到SD卡输出缓存区中;
[0180]步骤S10-4:所述读卡器将所述SD卡输出缓存区中的数据发送给所述智能SD卡。
[0181]进一步地,所述步骤S10-2中所述读卡器检测到的指令类型为上电指令,则执行步骤Cl,如是下电指令,则执行步骤C5 ;如是扩展通道指令,则执行步骤C6 ;如是其他指令,则设置不支持信息,并将其存储到所述USB接收缓存区,执行步骤S12 ;
[0182]步骤Cl:所述读卡器对所述智能SD卡进行上电操作;
[0183]步骤C2:所述读卡器判断是否上电激活成功,是则执行步骤C3,否则执行步骤C4 ;
[0184]步骤C3:所述读卡器设置上电成功信息,并将其存储到所述USB接收缓存区,执行步骤S12 ;
[0185]步骤C4:所述读卡器设置上电失败信息,并将其存储到所述USB接收缓存区,执行步骤S12 ;
[0186]步骤C5:所述读卡器对所述智能SD卡片执行下电操作,设置下电成功信息并将其存储到所述USB接收缓存区,执行步骤S12 ;
[0187]步骤C6:所述读卡器根据所述扩展通道指令进行相应操作,并将操作结果存储到所述USB接收缓存区,执行步骤S12。
[0188]进一步地,所述步骤S10-4包括:
[0189]步骤S10-41:所述读卡器将所述SD卡输出缓存区中的数据中最低字节数据作为当前字节数据;
[0190]步骤S10-42:所述读卡器获取当前字节数据的最高比特位作为当前比特位;
[0191]步骤S10-43:所述读卡器判断当前比特位上的值是否为预定值,是则执行步骤S10-44,否则执行步骤S10-45 ;
[0192]步骤S10-44:所述读卡器将所述SWP接口的输出电平变为高电平,延时第一预设时长后将所述SWP接口的输出电平变为低电平,延时第二预设时长,执行步骤S10-46 ;
[0193]步骤S10-45:所述读卡器将所述SWP接口的输出电平变为低电平,延时第三预设时长后将所述SWP接口的输出电平变为高电平,延时第四预设时长,执行步骤S10-46 ;
[0194]步骤S10-46:所述读卡器判断当前字节数据是否发送完成,是则执行步骤S10-48,否则执行步骤S10-47 ;
[0195]步骤S10-47:所述读卡器将当前比特位的相邻低位作为当前比特位,返回步骤S10-43 ;
[0196]步骤S10-48:所述读卡器判断所述SD卡输出缓存区中的数据是否发送完成,是则执行步骤S11,否则将当前字节的相邻高字节数据作为当前字节数据,返回步骤S10-42。
[0197]进一步地,步骤Sll具体包括:
[0198]步骤Sll-1:所述读卡器将所述SWP接口的输出电平变为高电平,延时第五预设时长;
[0199]步骤S11-2:所述读卡器判断所述SWP接口的输入采集电平是否为高电平,是则执行步骤SI 1-3,否则执行步骤SI 1-4 ;
[0200]步骤S11-3:所述读卡器将补位计数器加1,并采集一个比特位的高电平值并顺序存储到所述SD卡输出缓存区中,执行步骤SI 1-7 ;
[0201]步骤S11-4:所述读卡器判断所述补位计数器的值是否等于第一预设值,是则执行步骤SI 1-5,否则执行步骤SI 1-6 ;
[0202]步骤SI 1-5:所述读卡器将所述补位计数器清零,执行步骤SI 1-7 ;
[0203]步骤S11-6:所述读卡器采集一个比特位的低电平值并顺序存储在所述SD卡输出缓存区中,将采集计数器加1,执行步骤S11-7 ;
[0204]步骤S11-7:所述读卡器判断所述采集计数器是否等于第二预设值,是则执行步骤S12,否则执行步骤SI 1-8 ;
[0205]步骤S11-8:所述读卡器将所述SWP接口的输出电平变为高电平,延时第六预设时长后将所述SWP接口的输出电平变为低电平,延时第四预设时长,返回步骤S11-1。
[0206]本发明与现有技术相比,具有以下优点:
[0207]本发明提供的方法,可自动识别SD卡类型,并建立独立的通信接口(SWP接口),实现了智能SD卡与PC(上位机)的通讯。

【专利附图】

【附图说明】
[0208]图1为本发明实施例一提供的一种基于智能SD卡的读卡器的工作方法流程图;
[0209]图2为本发明实施例一中步骤102的细化流程图;
[0210]图3为本发明实施例一中步骤116的细化流程图;
[0211]图4为本发明实施例一中步骤116-11的细化流程图;
[0212]图5为本发明实施例一中步骤117的细化流程图;
[0213]图6为本发明实施例二提供的一种基于智能SD卡的读卡器的工作方法流程图;
[0214]图7为本发明实施例三提供的一种基于智能SD卡的读卡器的工作方法流程图;
[0215]图8为本发明实施例三的另一种实现方式流程图;
[0216]图9为本发明实施例四提供的一种基于智能SD卡的读卡器的工作方法流程图。

【具体实施方式】
[0217]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0218]在本实施例中,是根据SWP规范在智能SD卡中设置SWP接口,来实现智能SD卡与PC (上位机)的通讯。
[0219]实施例一
[0220]本发明实施例一提供一种基于智能SD卡的读卡器的工作方法,如图1所示,包括:
[0221]步骤100:读卡器上电,进行初始化;
[0222]本实施例中,读卡器对10、终端外部硬件、USB时钟和其他USB寄存器配置进行初始化;还包括将枚举标志的值设为预设初始值,将中断标志复位;
[0223]步骤101:读卡器判断是否有卡片插入,是则执行步骤102,否则返回步骤101 ;
[0224]步骤102:读卡器将接口标识复位,通过SWP接口向卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤103,否则执行步骤104 ;
[0225]在本实施例中,步骤102的具体实现过程如图2所示,包括:
[0226]步骤102-1:读卡器将SWP接口电源引脚(SWP_VCC)上电;
[0227]步骤102-2:读卡器将SI (由主设备到从设备的信号)置为高电平,开启计时器;
[0228]步骤102-3:读卡器检测S2(由从设备到主设备的信号)是否变为高电平,是则执行步骤102-5,否则执行步骤102-4 ;
[0229]步骤102-4:读卡器判断计时器的值是否超过第一预设值,是则计时器清零,执行步骤104,否则返回步骤102-3 ;
[0230]步骤102-5:读卡器收到卡片返回的SI成功信息;
[0231]具体的,本实施例该步骤中的SI成功信息为7E 69 FB DB 00 F4 IB ;
[0232]步骤102-6:读卡器给卡片发送设置自身处于全功耗模式的指令;
[0233]在本实施例中,设置自身处于全功耗模式的指令具体为:7E 62 01 60 66 7F ;
[0234]步骤102-7:读卡器收到卡片返回的已准备好信息;
[0235]在本实施例中,已准备好信息具体为:7E 60 8D 56 7F ;
[0236]步骤102-8:读卡器给卡片发送复位初始化链路信息;
[0237]具体的,复位初始化链路信息为:7E F9 04 00 7D 9B 7F ;
[0238]步骤102-9:读卡器判断是否接收到卡片返回的回复信息,是则执行步骤102-10,否则执行步骤104 ;
[0239]具体的,回复信息为7E E6 7C 18 7F ;
[0240]步骤102-10:读卡器连接管道,并获取卡片中的参数;
[0241]步骤102-11:读卡器关闭所有连接的管道,更新卡片中的参数;
[0242]步骤102-12:读卡器创建动态管道参数,并打开所有连接的管道,执行步骤103 ;
[0243]步骤103:读卡器定义SCSI和CCID两个卡槽的配置信息并将卡槽标识置位,执行步骤105 ;
[0244]在本实施例中,如卡槽标识置位则表示读卡器中插入的卡为智能SD卡;
[0245]步骤104:读卡器定义SCSI卡槽的配置信息,执行步骤105 ;
[0246]在本实施例中,CCID卡槽的配置信息包括out端点、in端点、中断端点;SCSI卡槽的配置信息包括out端点、in端点;
[0247]步骤105:读卡器使能USB连接;
[0248]步骤106:当读卡器接收到上位机下发的枚举指令时,读卡器将对应的卡槽的配置信息返回给上位机;
[0249]在本实施例中,当读卡器接收到上位机下发的枚举指令时,读卡器将对应的卡槽的配置信息返回给上位机,具体包括:
[0250]步骤106-1:当读卡器接收到上位机下发的枚举指令时,读卡器检测枚举指令的类型,如枚举指令是设备描述符请求,则执行步骤106-2 ;如枚举指令是配置描述符请求,则执行步骤106-3 ;如枚举指令是卡槽名称请求,则执行步骤106-4 ;如枚举指令是卡槽配置请求,则执行步骤106-5;
[0251]步骤106-2:读卡器将设备描述符发送给上位机,执行步骤106-6 ;
[0252]在本实施例中,上位机通过发送Get_Device_Descriptor命令来获取设备描述符,设备描述符包括数据包长度、描述符类型、USB设备支持的版本号、设备类型、子设备类型、设备支持的协议、最大数据包长度、VID, PID、设备标识、设备版本号、厂商、设备信息及其编号、各编号设备的配置;
[0253]优选的,步骤106-2中执行步骤106-6之前还包括:将枚举标志的值设为第一预设值;
[0254]在步骤106-2之前还可以包括:判断枚举标志的值是否为预设初始值,是则执行步骤106-2,否则报错,等待接收上位机下发的枚举指令,返回步骤106-1 ;
[0255]步骤106-3:读卡器将设备配置头字节和配置数据发送给上位机,执行步骤106-6 ;
[0256]本实施例中的配置头字节为09 ;配置数据包括:读卡器类型(CCID),读卡器卡槽数量(bNum中断erfaces)、每个卡槽对应的标志号、CCID类描述符(CCID支持的协议),各个卡槽的USB输入输出端点地址等;具体的,本实施例中的卡槽数量为三个,包括A卡槽、B卡槽和C卡槽,分别映射为三个设备A、B、C,对应的标志号分别第一数值、第二数值、第三数值,优选的,第一数值、第二数值、第三数值分别为4、5、6 ;
[0257]优选的,步骤106-3中执行步骤106-6之前还包括:将枚举标志的值设为第二预设值;
[0258]在步骤106-3之前还可以包括:判断枚举标志的值是否为第一预设值,是则执行步骤106-3,否则报错,等待接收上位机下发的枚举指令,返回步骤106-1 ;
[0259]步骤106-4:读卡器根据枚举指令中的标志号判断卡槽名称请求的类型,如标志号为第一数值则将SCSI卡槽名称返回给上位机,执行步骤106-6 ;如标志号为第二数值则将CCID卡槽名称返回给上位机,执行步骤106-6 ;
[0260]优选的,步骤106-4中执行步骤106-6之前还包括:将枚举标志的值设为第三预设值;
[0261]在步骤106-4之前还可以包括:判断枚举标志的值是否为第二预设值,是则执行步骤106-4,否则报错,等待接收上位机下发的枚举指令,返回步骤106-1 ;
[0262]优选的,本实施例中的第一数值、第二数值、第三数值分别为4、5、6 ;
[0263]步骤106-5:读卡器根据枚举指令中的标志号判断卡槽配置请求的类型,如标志号为第一数值则将SCSI卡槽的配置信息返回给上位机,执行步骤106-6 ;如标志号为第二数值则将CCID卡槽的配置信息返回给上位机,执行步骤106-6 ;
[0264]在步骤106-5之前还可以包括:判断枚举标志的值是否第三预设值,是则执行步骤106-5,否则报错,等待接收上位机下发的枚举指令,返回步骤106-1 ;
[0265]具体的,本实施例中的每个卡槽的配置信息包括:卡槽类型描述符、输出端点配置描述符、输入端点配置描述符;优选的,本实施例中的SCSI卡槽的输出端点配置描述符、输入端点配置描述符分别为第一端点、第二端点;CCID卡槽的输出端点配置描述符、输入端点配置描述符分别为第四端点、第五端点;
[0266]优选的,每个卡槽的配置信息还包括中断端点描述符,SCSI卡槽和CCID卡槽的中断端点描述符分别为第三端点、第六端点;
[0267]步骤106-6:读卡器判断枚举是否完成,是则将枚举标志设为预定数据,执行步骤107 ;否则返回步骤106-1 ;
[0268]步骤107:读卡器判断USB是否为连接状态,是则执行步骤108,否则返回步骤107 ;
[0269]在本实施例中,步骤107具体为:判断枚举标志是否为预定值,是则USB为连接状态,否则USB不为连接状态;
[0270]步骤108:读卡器判断是否存在置位的中断标志,是则执行步骤109,否则返回步骤 108 ;
[0271]本实施例中,当读卡器检测到卡到位引脚电平发生变化时,进入插拔卡中断,在该中断中将卡到位标志置位后退出中断,在插拔卡中断中还将卡槽标识复位;当读卡器接收到数据时,进入USB接收数据中断,在该中断中将USB接收数据标志置位后退出中断,并将接收到的数据存储到读卡器的USB存储器中;
[0272]在本实施例中还有一种实现方式是,在进入中断时先将中断标志复位,再将其置位,在主流程中不对中断标志进行操作,即步骤110和114中不用对中断标志复位;
[0273]步骤109:读卡器判断中断标志的类型,如为卡到位标志则执行步骤110,如为USB接收标志则执行步骤114,如为无效标志则返回步骤108 ;
[0274]步骤110:读卡器将中断标志复位,根据卡槽标识判断插入的卡是否为智能SD卡,是则执行步骤111,否则返回步骤108 ;
[0275]具体的,在本实施例中,如卡槽标识置位则插入的卡为智能SD卡;
[0276]步骤111:读卡器检测卡到位电平是否为低电平,是则执行步骤112,否则执行步骤 113 ;
[0277]在本实施例中,如卡到位电平为低电平则表示卡槽中无卡;
[0278]步骤112:读卡器通过CCID卡槽的中断端点向上位机返回有卡信息,返回步骤102 ;
[0279]步骤113:读卡器通过CCID卡槽的中断端点向上位机返回无卡信息,USB失能,返回步骤108 ;
[0280]步骤114:读卡器将中断标志复位,获取USB存储器中的数据,并判断接收数据的端点类型,如为SCSI卡槽的out端点则执行步骤115 ;如为CCID卡槽的out端点则执行步骤 116 ;
[0281]步骤115:读卡器根据SCSI协议对接收到的数据进行相应操作,返回步骤108 ;
[0282]在本实施例中,步骤115中接收到的数据包括:查询卡槽指令、数据操作指令等;操作完成后读卡器将操作结果返回给上位机。
[0283]步骤116:读卡器根据CCID协议对接收到的数据进行解析,并将解析结果发送给智能SD卡;
[0284]在本实施例中,读卡器根据CCID协议对接收到的数据进行解析的实现过程如图3所示,包括:
[0285]步骤116-1:读卡器判断接收到的数据是否合法,是则执行步骤116-2,否则设置错误信息并存储到USB接收缓存区中,执行步骤118 ;
[0286]本实施例中步骤116-1的具体实现过程为:读卡器对接收到的数据进行解析得到指令类型、数据长度值,判断解析得到的数据长度值与USB缓存区中的整体数据的长度是否相同,是则接收到的数据合法,否则接收到的数据不合法;如指令类型为数据交换APDU指令则解析结果还包括APDU数据;
[0287]步骤116-2:读卡器检测接收到数据的指令类型,如是上电指令,则执行步骤116-3,如是下电指令,则执行步骤116-7 ;如是扩展通道指令,则执行步骤116-9 ;如是数据交换APDU指令,则执行步骤116-10 ;如是其他指令,则设置不支持信息,并将其存储到USB接收缓存区,执行步骤118;
[0288]步骤116-3:读卡器对SD卡进行上电操作;
[0289]步骤116-4:读卡器判断是否上电激活成功,是则执行步骤116-5,否则执行步骤
116-6 ;
[0290]步骤116-5:读卡器设置上电成功信息,并将其存储到USB接收缓存区,执行步骤118 ;
[0291]步骤116-6:读卡器设置上电失败信息,并将其存储到USB接收缓存区,执行步骤118 ;
[0292]步骤116-7:读卡器对智能SD卡执行下电操作;
[0293]步骤116-8:读卡器设置下电成功信息,并将其存储到USB接收缓存区,执行步骤118 ;
[0294]步骤116-9:读卡器根据扩展通道指令进行相应操作,并将操作结果存储到USB接收缓存区,执行步骤118;
[0295]步骤116-10:读卡器将该数据交换APDU指令存储到SD卡输出缓存区中;
[0296]步骤116-11:读卡器将SD卡输出缓存区中的数据发送给智能SD卡,执行步骤117 ;
[0297]在本实施例中,步骤116-11具体实现过程如图4所示,包括:
[0298]步骤al:读卡器将SD卡输出缓存区中的数据中最低字节数据作为当前字节数据;
[0299]步骤a2:读卡器获取当前字节数据的最高比特位作为当前比特位;
[0300]步骤a3:读卡器判断当前比特位上的值是否为0,是则执行步骤a4,否则执行步骤a5 ;
[0301]步骤a4:读卡器将SWP接口的输出电平变为高电平,延时第一预设时长后将SWP接口的输出电平变为低电平,延时第二预设时长,执行步骤a6 ;
[0302]优选的,本实施例中的第一预设时长为5微秒,第二预设时长为25微秒;
[0303]步骤a5:读卡器将SWP接口的输出电平变为低电平,延时第三预设时长后将SWP接口的输出电平变为高电平,延时第四预设时长,执行步骤a6 ;
[0304]优选的,本实施例中的第三预设时长为30微秒,第四预设时长为8微秒;
[0305]步骤a6:读卡器判断当前字节数据是否发送完成,是则执行步骤a8,否则执行步骤a7 ;
[0306]步骤a7:读卡器将当前比特位的相邻低位作为当前比特位,返回步骤a3 ;
[0307]步骤a8:读卡器判断SD卡输出缓存区中的数据是否发送完成,是则执行步骤117,否则执行步骤a9 ;
[0308]步骤a9:读卡器将当前字节的相邻高字节数据作为当前字节数据,返回步骤a2 ;
[0309]步骤117:读卡器接收智能SD卡返回的处理结果,并将处理结果存储到USB接收缓存区中;
[0310]具体的,本实施例中,步骤117的具体实现过程如图5所示,包括:
[0311]步骤117-1:读卡器将SWP接口的输出电平变为高电平,延时第五预设时长;
[0312]优选的,本实施例中的第五预设时间为16微秒;
[0313]步骤117-2:读卡器判断SWP接口的输入采集电平是否为高电平,是则执行步骤
117-3,否则执行步骤117-4 ;
[0314]步骤117-3:读卡器将补位计数器加1,并采集一个比特位的高电平值并顺序存储到SD卡输出缓存区中,执行步骤117-7 ;
[0315]步骤117-4:读卡器判断补位计数器的值是否等于第一预设值,是则执行步骤
117-5,否则执行步骤117-6 ;
[0316]优选的,本实施例中的第一预设值为5 ;
[0317]步骤117-5:读卡器将补位计数器清零,执行步骤117-8 ;
[0318]在本实施例中,如补位计数器的值等于第一预设值,则表示当前比特位是补位比特位,不需采集;
[0319]步骤117-6:读卡器采集一个比特位的低电平值并顺序存储在SD卡输出缓存区中,执行步骤117-7 ;
[0320]步骤117-7:读卡器将采集计数器加1,执行步骤117-8 ;
[0321]步骤117-8:读卡器判断采集计数器是否等于第二预设值,是则读卡器将SD卡输出缓存区中的数据发送给上位机,执行步骤108,否则执行步骤117-9 ;
[0322]步骤117-9:读卡器将SWP接口的输出电平变为高电平,延时第六预设时长后将SWP接口的输出电平变为低电平,延时第四预设时长,返回步骤117-1 ;
[0323]优选的,本实施例中的第六预设时长为15微秒;
[0324]步骤118:读卡器将USB接收缓存区中的数据发送给上位机,返回步骤108。
[0325]实施例二
[0326]本发明实施例二提供一种基于智能SD卡的读卡器的工作方法,如图6所示,包括:
[0327]步骤200:读卡器上电,进行初始化;
[0328]步骤201:读卡器判断卡槽中是否有卡,是则执行步骤202,否则执行步骤206 ;
[0329]步骤202:读卡器定义SCSI卡槽的配置信息;
[0330]步骤203:读卡器使能USB连接;
[0331]步骤204:当检测到有卡片插入时,读卡器将卡槽标识复位,通过SWP接口向卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤205,否则执行步骤210 ;
[0332]步骤205:读卡器将USB失能,定义SCSI卡槽和CCID卡槽的配置信息并将卡槽标识置位,执行步骤209 ;
[0333]步骤206:读卡器将卡槽标识复位,通过SWP接口向卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤207,否则执行步骤208 ;
[0334]步骤207:读卡器定义SCSI和CCID两个卡槽的配置信息并将卡槽标识置位,执行步骤209 ;
[0335]步骤208:读卡器定义SCSI卡槽的配置信息,执行步骤209 ;
[0336]步骤209:读卡器使能USB连接;
[0337]步骤210:当读卡器接收到上位机下发的枚举指令时,读卡器将对应的卡槽的配置信息返回给上位机,执行步骤211 ;
[0338]在本实施例中,步骤210的具体实现方式与实施例一中的步骤106相同,在此不再赘述,枚举成功后将枚举标志设为预定值;
[0339]步骤211:读卡器判断USB是否为连接状态,是则执行步骤212,否则返回步骤211 ;
[0340]步骤211具体为:判断枚举标志是否为预定值,是则USB为连接状态,否则USB不为连接状态;
[0341]步骤212:读卡器判断是否存在置位的中断标志,是则执行步骤213,否则返回步骤 212 ;
[0342]本实施例中,当读卡器检测到卡到位引脚电平发生变化时,进入插拔SD卡中断,在该中断中将卡到位标志置位后退出中断;当读卡器接收到数据时,进入USB接收数据中断,在该中断中将USB接收数据标志置位后退出中断,并将接收到的数据存储到读卡器的USB存储器中;
[0343]在本实施例中还有一种实现方式是,在进入中断时先将中断标志复位,再将其置位,在主流程中不对中断标志进行操作,即步骤211和213中不用对中断标志复位;
[0344]步骤213:读卡器判断中断标志的类型,如为卡到位标志则执行步骤214,如为USB接收标志则执行步骤218,如为无效标志则返回步骤212 ;
[0345]步骤214:读卡器根据卡槽标识判断插入的卡是否为智能SD卡,是则执行步骤215,否则返回步骤212 ;
[0346]具体的,在本实施例中,如卡槽标识置位则插入的卡为智能SD卡;
[0347]步骤215:读卡器将中断标志复位,检测卡到位电平是否为低电平,是则执行步骤216,否则执行步骤217 ;
[0348]在本实施例中,如卡到位电平为低电平则表示卡槽中无卡;
[0349]步骤216:读卡器通过CCID卡槽的中断端点向上位机返回有卡信息,返回步骤206 ;
[0350]步骤217:读卡器通过CCID卡槽的中断端点向上位机返回无卡信息,USB失能,返回步骤212 ;
[0351]步骤218:读卡器将中断标志复位,获取USB存储器中的数据,并判断接收数据的端点类型,如为SCSI卡槽的out端点则执行步骤219 ;如为CCID卡槽的out端点则执行步骤 220 ;
[0352]步骤219:读卡器根据SCSI协议对接收到的数据进行相应操作,返回步骤212 ;
[0353]在本实施例中,步骤219中读卡器操作完成后将操作结果返回给上位机。
[0354]步骤220:读卡器根据CCID协议对接收到的数据进行解析,并将解析结果发送给智能SD卡;
[0355]在本实施例中步骤220的实现过程与实施例一中的步骤116相同,在此不再赘述;
[0356]步骤221:读卡器接收智能SD卡返回的处理结果,并将处理结果存储到USB接收缓存区中;
[0357]在本实施例中步骤221的实现过程与实施例一中的步骤117相同,在此不再赘述;
[0358]步骤222:读卡器通过CCID卡槽的in端点将USB接收缓存区中的数据发送给上位机,返回步骤212。
[0359]实施例三
[0360]本发明实施例三提供一种基于智能SD卡的读卡器的工作方法,如图7所示,包括:
[0361]步骤701:读卡器上电,进行初始化;
[0362]本实施例中,读卡器对10、终端外部硬件、USB时钟和其他USB寄存器配置进行初始化;还包括将枚举标志的值设为预设初始值,将中断标志复位;
[0363]步骤702:读卡器判断是否有卡插入,是则执行步骤703,否则返回步骤702 ;
[0364]步骤703:读卡器将卡槽标识复位,通过SWP接口向卡发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤704,否则执行步骤705 ;
[0365]在本实施例中,步骤703的具体实现过程与实施例一相同,在此不再赘述;
[0366]步骤704:读卡器定义SCSI和CCID两个卡槽的配置信息并将卡槽标识置位,执行步骤706 ;
[0367]在本实施例中,如卡槽标识置位则表示读卡器中插入的卡为智能SD卡;
[0368]步骤705:读卡器定义SCSI卡槽的配置信息,执行步骤706 ;
[0369]在本实施例中,CCID卡槽的配置信息包括out端点、in端点、中断端点;SCSI卡槽的配置信息包括out端点、in端点;
[0370]步骤706:读卡器使能USB连接;
[0371]在本实施例中,读卡器使能USB连接之后,当接收到枚举指令时进入USB中断进行枚举操作,具体包括:
[0372]步骤Al:读卡器检测枚举指令的类型,如枚举指令是设备描述符请求,则执行步骤A2 ;如枚举指令是配置描述符请求,则执行步骤A3 ;如枚举指令是卡槽名称请求,则执行步骤A4 ;如枚举指令是卡槽配置请求,则执行步骤A5 ;
[0373]步骤A2:读卡器将设备描述符发送给上位机,执行步骤A6 ;
[0374]步骤A3:读卡器将设备配置头字节和配置数据发送给上位机,执行步骤A6 ;
[0375]步骤A4:读卡器根据枚举指令中的标志号判断卡槽名称请求的类型,如标志号为第一数值则将SCSI卡槽名称返回给上位机,执行步骤A6 ;如标志号为第二数值则将CCID卡槽名称返回给上位机,执行步骤A6 ;
[0376]步骤A5:读卡器根据枚举指令中的标志号判断卡槽配置请求的类型,如标志号为第一数值则将SCSI卡槽的配置信息返回给上位机,执行步骤A6 ;如标志号为第二数值则将CCID卡槽的配置信息返回给上位机,执行步骤A6 ;
[0377]步骤A6:读卡器判断枚举是否完成,是则将枚举标志设为预定值,退出USB中断;否则直接退出USB中断;
[0378]步骤707:当读卡器检测到置位的中断标志时,判断中断标志的类型,如为卡到位标志则执行步骤708,如为USB接收标志则执行步骤714,如为无效标志则返回步骤707 ;
[0379]本实施例中,当读卡器检测到卡到位引脚电平发生变化时,进入插拔能SD卡中断,在该中断中将卡到位标志置位后退出中断,在插拔SD卡中断中还将卡槽标识复位;当读卡器接收到数据时,进入USB接收数据中断,在该中断中将USB接收数据标志置位后退出中断,并将接收到的数据存储到读卡器的USB存储器中;
[0380]步骤708:读卡器根据卡槽标识判断插入的卡是否为智能SD卡,是则执行步骤709,否则返回步骤707 ;
[0381]具体的,在本实施例中,如卡槽标识置位则插入的卡为智能SD卡;
[0382]步骤709:读卡器将中断标志复位,检测卡到位电平是否为低电平,是则执行步骤710,否则执行步骤712 ;
[0383]在本实施例中,如卡到位电平为低电平则表示卡槽中无卡;
[0384]步骤710:读卡器判断USB是否为连接状态,是则执行步骤711,否则返回步骤710 ;
[0385]步骤710具体为:判断枚举标志是否为预定值,是则USB为连接状态,否则USB不为连接状态;
[0386]步骤711:读卡器通过CCID卡槽的中断端点向上位机返回有卡信息,返回步骤703 ;
[0387]步骤712:读卡器判断USB是否为连接状态,是则执行步骤713,否则返回步骤712 ;
[0388]在本实施例中,步骤712与步骤710实现相同;
[0389]步骤713:读卡器通过CCID卡槽的in端点向上位机返回无卡信息,USB失能,返回步骤707 ;
[0390]步骤714:读卡器将中断标志复位,获取USB存储器中的数据,并判断接收数据的端点类型,如为SCSI卡槽的out端点则执行步骤715 ;如为CCID卡槽的out端点则执行步骤 716 ;
[0391]步骤715:读卡器根据SCSI协议对接收到的数据进行相应操作,返回步骤707 ;
[0392]在本实施例中,步骤715中接收到的数据包括:查询卡槽指令、数据操作指令等;读卡器操作完成后将操作结果返回给上位机。
[0393]步骤716:读卡器根据CCID协议对接收到的数据进行解析,并将解析结果发送给智能SD卡;
[0394]在本实施例中,读卡器根据CCID协议对接收到的数据进行解析的实现过程与实施例一相同,在此不再赘述;
[0395]步骤717:读卡器接收智能SD卡返回的处理结果,并将处理结果存储到USB接收缓存区中;
[0396]具体的,本实施例中,步骤717的具体实现过程与实施例一相同,在此不再赘述;
[0397]步骤718:读卡器判断USB是否为连接状态,是则执行步骤719,否则返回步骤718 ;
[0398]在本实施例中,步骤718与步骤710实现相同;
[0399]步骤719:读卡器通过CCID卡槽的in端点将USB接收缓存区中的数据发送给上位机,返回步骤707。
[0400]在本发明中,实施例三中的另一种实现方式参照图8,具体为:步骤210的枚举过程在USB中断里执行,包括:当接收到枚举指令时进入USB中断进行枚举操作,枚举操作参见本实施例的实现方式;步骤211(即判断USB是否连接)在读卡器将数据返回给上位机之前(即步骤216、217、222之前)进行,具体实现过程可以参考实施例三,在此不再赘述。
[0401]实施例四
[0402]本发明实施例四提供一种基于智能SD卡的读卡器的工作方法,如图9所示,包括:
[0403]步骤900:读卡器上电,进行初始化;
[0404]本实施例中,读卡器对10、终端外部硬件、USB时钟和其他USB寄存器配置进行初始化;还包括将枚举标志的值设为预设初始值,将中断标志复位;
[0405]步骤901:读卡器定义SCSI和CCID两个卡槽的配置信息;
[0406]在本实施例中,CCID卡槽的配置信息包括out端点、in端点、中断端点;SCSI卡槽的配置信息包括out端点、in端点;
[0407]步骤902:读卡器使能USB连接;
[0408]步骤903:当读卡器接收到上位机下发的枚举指令时,读卡器将对应的卡槽的配置信息返回给上位机;
[0409]在本实施例中,步骤903的具体实现方式与实施例一中的步骤106相同,在此不再赘述,枚举成功后将枚举标志设为预定值;
[0410]步骤904:读卡器判断USB是否为连接状态,是则执行步骤905,否则返回步骤904 ;
[0411]步骤904具体为:判断枚举标志是否为预定值,是则USB为连接状态,否则USB不为连接状态;
[0412]步骤905:读卡器判断是否有卡片插入,是则执行步骤907,否则返回步骤906 ;
[0413]步骤906:读卡器通过CCID卡槽的中断端点向上位机发送无卡信息,将卡槽标识复位,执行步骤910 ;
[0414]步骤907:读卡器通过SWP接口向卡发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤908,否则执行步骤909 ;
[0415]在本实施例中,步骤907的具体实现过程与实施例一相同,在此不再赘述;
[0416]步骤908:读卡器通过CCID卡槽的中断端点向上位机返回有卡信息,并将卡槽标识置位,执行步骤910 ;
[0417]步骤909:读卡器通过CCID卡槽的中断端点向上位机发送无卡信息,将卡槽标识复位,执行步骤910 ;
[0418]步骤910:当读卡器检测到置位的中断标志时,判断中断标志的类型,如为卡到位标志则执行步骤911,如为USB接收标志则执行步骤917,如为无效标志则返回步骤910 ;
[0419]本实施例中,当读卡器检测到卡到位引脚电平发生变化时,进入插拔卡中断,在该中断中将卡到位标志置位后退出中断,在插拔卡中断中还将卡槽标识复位;当读卡器接收到数据时,进入USB接收数据中断,在该中断中将USB接收数据标志置位后退出中断,并将接收到的数据存储到读卡器的USB存储器中;
[0420]步骤911:读卡器根据卡槽标识判断插入的卡是否为智能SD卡,是则执行步骤912,否则返回步骤910 ;
[0421]具体的,在本实施例中,如卡槽标识置位则插入的卡为智能SD卡;
[0422]步骤912:读卡器将中断标志复位,检测卡到位电平是否为低电平,是则执行步骤914,否则执行步骤913 ;
[0423]在本实施例中,如卡到位电平为低电平则表示卡槽中无卡;
[0424]步骤913:读卡器通过CCID卡槽的in端点向上位机返回无卡信息,返回步骤910 ;
[0425]步骤914:读卡器通过SWP接口向卡发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤915,否则执行步骤916 ;
[0426]在本实施例中,步骤914的具体实现过程与实施例一相同,在此不再赘述;
[0427]步骤915:读卡器通过CCID卡槽的中断端点向上位机返回有卡信息,并将卡槽标识置位,返回步骤910 ;
[0428]步骤916:读卡器通过CCID卡槽的中断端点向上位机发送无卡信息,并将卡槽标识复位,返回步骤910 ;
[0429]步骤917:读卡器将中断标志复位,获取USB存储器中的数据,并判断接收数据的端点类型,如为SCSI卡槽的out端点则执行步骤918 ;如为CCID卡槽的out端点则执行步骤 919 ;
[0430]步骤918:读卡器根据SCSI协议对接收到的数据进行相应操作,返回步骤910 ;
[0431]在本实施例中,步骤918中接收到的数据包括:查询卡槽指令、数据操作指令等;在本实施例中,步骤918中读卡器操作完成后将操作结果返回给上位机。
[0432]步骤919:读卡器根据CCID协议对接收到的数据进行解析,并将解析结果发送给智能SD卡;
[0433]在本实施例中,读卡器根据CCID协议对接收到的数据进行解析的实现过程与实施例一相同,在此不再赘述;
[0434]步骤920:读卡器接收智能SD卡返回的处理结果,并将处理结果存储到USB接收缓存区中;
[0435]具体的,本实施例中,步骤920的具体实现过程与实施例一相同,在此不再赘述;
[0436]步骤921:读卡器通过CCID卡槽的in端点将USB接收缓存区中的数据发送给上位机,返回步骤910。
[0437]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【权利要求】
1.一种基于智能SD卡的读卡器的工作方法,其特征在于,包括: 步骤AO:所述读卡器上电,进行初始化; 步骤Al:所述读卡器判断是否有卡片插入,是则执行步骤A2,否则返回步骤Al ; 步骤A2:所述读卡器通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤A3,否则执行步骤A4 ; 步骤A3:所述读卡器定义SCSI和CCID两个卡槽的配置信息,执行步骤A5 ; 步骤A4:所述读卡器定义SCSI卡槽的配置信息,执行步骤A5 ; 步骤A5:所述读卡器使能USB连接; 步骤A6:当所述读卡器接收到上位机下发的枚举指令时,根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机,执行步骤A7 ; 步骤A7:当所述读卡器检测到中断标志置位时,所述读卡器判断所述中断标志的类型,如为USB接收标志则执行步骤A8 ;如为其他标志则执行相应操作; 步骤AS:所述读卡器将所述中断标志复位,并判断接收数据的端点的类型,如为SCSI卡槽的out端点则执行步骤A9,如为CCID卡槽的out端点则执行步骤AlO ; 步骤A9:所述读卡器根据SCSI协议对接收到的数据进行相应操作,返回步骤A7 ; 步骤AlO:所述读卡器根据CCID协议对接收到的数据进行解析,并将解析结果发送给所述智能SD卡; 步骤All:所述读卡器等待并接收所述智能SD卡返回的处理结果,将所述处理结果存储到USB接收缓存区中; 步骤A12:所述读卡器通过CCID卡槽的in端点将所述USB接收缓存区中的数据发送给所述上位机,返回步骤A7。
2.如权利要求1所述的方法,其特征在于,在所述步骤A6与所述步骤A7之间包括: 步骤T:所述读卡器判断USB是否为连接状态,是则执行步骤A7,否则执行步骤T。
3.如权利要求1所述的方法,其特征在于,所述步骤A2-步骤A5替换为: 步骤B1:所述读卡器判断卡槽中是否有卡,是则执行步骤B6,否则执行步骤B2 ; 步骤B2:所述读卡器定义SCSI卡槽的配置信息; 步骤B3:所述读卡器使能USB连接; 步骤B4:当检测到有卡片插入时,所述读卡器将卡槽标识复位,通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤B5,否则执行步骤A6 ;步骤B5:所述读卡器将USB失能,定义SCSI和CCID两个卡槽的配置信息,并将所述卡槽标识置位,执行步骤B9; 步骤B6:所述读卡器将卡槽标识复位并通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤B7,否则执行步骤B8 ; 步骤B7:所述读卡器定义SCSI和CCID两个卡槽的配置信息,并将所述卡槽标识置位,执行步骤B9 ; 步骤B8:所述读卡器定义SCSI卡槽的配置信息,执行步骤B9 ; 步骤B9:所述读卡器使能USB连接,执行步骤A6。
4.如权利要求3所述的方法,其特征在于,在所述步骤A6与所述步骤A7之间还包括: 步骤T:所述读卡器判断USB是否为连接状态,是则执行步骤A7,否则执行步骤T。
5.如权利要求1所述的方法,其特征在于,所述步骤A2-所述步骤A6替换为: 步骤CO:所述读卡器定义SCSI和CCID两个卡槽的配置信息; 步骤Cl:所述读卡器使能USB连接; 步骤C2:当所述读卡器接收到上位机下发的枚举指令时,所述读卡器根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机; 步骤C3:所述读卡器判断是否有卡片插入,是则执行步骤C5,否则执行步骤C4 ; 步骤C4:所述读卡器通过CCID卡槽的中断端点向所述上位机发送无卡信息,将卡槽标识复位,执行步骤A7 ; 步骤C5:所述读卡器通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤C6,否则执行步骤C7 ; 步骤C6:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,并将卡槽标识置位,执行步骤A7 ; 步骤C7:所述读卡器通过CCID卡槽的中断端点向所述上位机发送无卡信息,将卡槽标识复位,执行步骤A7。
6.如权利要求5所述的方法,其特征在于,所述步骤C2与步骤C3之间包括: 步骤T:所述读卡器判断USB是否为连接状态,是则执行步骤C3,否则返回步骤T。
7.如权利要求1-6任意一项所述的方法,其特征在于,所述步骤A7中读卡器判断所述中断标志为卡到位标志时,执行步骤Kl ; 步骤Kl:所述读卡器根据卡槽标识判断插入的卡片是否为智能SD卡,是则执行步骤K2,否则返回步骤A7 ; 步骤K2:所述读卡器将所述中断标志复位,检测卡到位电平是否为低电平,是则执行步骤K4,否则执行步骤K3; 步骤K3:所述读卡器通过CCID卡槽的中断端点向所述上位机返回无卡信息,返回步骤A7 ; 步骤K4:所述读卡器通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤K5,否则执行步骤K6 ; 步骤K5:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,并将所述卡槽标识置位,返回步骤A2; 步骤K6:所述读卡器通过CCID卡槽的中断端点向所述上位机发送无卡信息,USB失能,并将所述卡槽标识复位,返回步骤A6。
8.如权利要求1-6任意一项所述的方法,其特征在于,所述当所述读卡器接收到上位机下发的枚举指令时,根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机,包括: 步骤Dl:当所述读卡器接收到上位机下发的枚举指令时,所述读卡器检测所述枚举指令的类型,如所述枚举指令是设备描述符请求,则执行步骤D2 ;如所述枚举指令是配置描述符请求,则执行步骤D3 ;如所述枚举指令是卡槽名称请求,则执行步骤D4 ;如所述枚举指令是卡槽配置请求,则执行步骤D5 ; 步骤D2:所述读卡器将设备描述符发送给所述上位机,执行步骤D6 ; 步骤D3:所述读卡器将设备配置头字节和配置数据发送给所述上位机,执行步骤D6 ; 步骤D4:所述读卡器根据所述枚举指令中的标志号判断所述卡槽名称请求的类型,如标志号为第一数值则将SCSI卡槽名称返回给所述上位机,执行步骤D6 ;如标志号为第二数值则将CCID卡槽名称返回给所述上位机,执行步骤D6 ; 步骤D5:所述读卡器根据所述枚举指令中的标志号判断所述卡槽配置请求的类型,如标志号为第一数值则将SCSI卡槽的配置信息返回给所述上位机,执行步骤D6 ;如标志号为第二数值则将CCID卡槽的配置信息返回给所述上位机,执行步骤D6 ; 步骤D6:所述读卡器判断枚举是否完成,是则将枚举标志设为预定数据,继续;否则返回步骤Dl。
9.如权利要求2或4或6所述的方法,其特征在于,所述读卡器将卡槽的配置信息全部返回给所述上位机之后还包括:将枚举标志设为预定数据; 所述读卡器判断USB是否为连接状态具体包括:判断所述枚举标志是否为预定数据,是则USB为连接状态,否则USB不为连接状态。
10.如权利要求1-6任意一项所述的方法,其特征在于,所述步骤A2具体为: 步骤A2-1:所述读卡器将所述SWP接口的电源引脚上电; 步骤A2-2:所述读卡器将由主设备到从设备的信号置为高电平,开启计时器; 步骤A2-3:所述读卡器检测由从设备到主设备的信号是否变为高电平,是则执行步骤A2-5,否则执行步骤A2-4 ; 步骤A2-4:所述读卡器判断所述计时器的值是否超过第一预设值,是则所述计时器清零,执行步骤A4,否则返回步骤A2-3 ; 步骤A2-5:所述读卡器接收所述卡片返回的由主设备到从设备的信号置为高电平的成功信息; 步骤A2-6:所述读卡器给所述卡片发送设置自身处于全功耗模式指令; 步骤A2-7:所述读卡器接收所述卡片返回的已准备好信息; 步骤A2-8:所述读卡器给所述卡片发送复位初始化链路信息; 步骤A2-9:所述读卡器判断是否接收到所述卡片返回的回复信息,是则执行步骤A2-10,否则执行步骤A4 ; 步骤A2-10:所述读卡器连接管道,并获取所述卡片中的参数; 步骤A2-11:所述读卡器关闭所有连接的管道,更新所述卡片中的参数; 步骤A2-12:所述读卡器创建动态管道参数,并打开所有连接的管道,执行步骤A3。
11.如权利要求1-6任意一项所述的方法,其特征在于, 所述步骤A7中所述读卡器判断所述中断标志的类型为卡到位标志时,则执行步骤El ;步骤El:所述读卡器判断插入的卡片是否为智能SD卡,是则执行步骤E2,否则将所述中断标志复位,返回步骤A7 ; 步骤E2:所述读卡器将所述中断标志复位,检测卡到位电平是否为低电平,是则执行步骤E4,否则执行步骤E3 ; 步骤E3:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,返回步骤A2 ; 步骤E4:所述读卡器通过CCID卡槽的中断端点向所述上位机返回无卡信息,USB失能,返回步骤A7。
12.如权利要求11所述的方法,其特征在于, 所述步骤AO中进行初始化包括:将卡槽标识复位; 所述步骤A3还包括:所述读卡器将所述卡槽标识置位; 所述步骤El具体为:所述读卡器判断所述卡槽标识是否置位,是则插入的卡片为智能SD卡,否则插入的卡片不为智能SD卡。
13.如权利要求1-6任意一项所述的方法,其特征在于,所述步骤AlO具体包括: 步骤A10-1:所述读卡器判断所述接收到的数据是否合法,是则执行步骤A10-2,否则设置错误信息并存储到USB接收缓存区中,执行步骤A12 ; 步骤A10-2:所述读卡器检测所述接收到的数据的指令类型,如是数据交换APDU指令则执行步骤A10-3,如是其他则执行相应操作; 步骤A10-3:所述读卡器将所述数据交换APDU指令存储到SD卡输出缓存区中; 步骤A10-4:所述读卡器将所述SD卡输出缓存区中的数据发送给所述智能SD卡。
14.如权利要求13所述的方法,其特征在于,所述步骤A10-2中所述读卡器检测到的指令类型为上电指令,则执行步骤Fl,如是下电指令,则执行步骤F5 ;如是扩展通道指令,则执行步骤F6 ;如是其他指令,则设置不支持信息,并将其存储到所述USB接收缓存区,执行步骤A12 ; 步骤Fl:所述读卡器对所述智能SD卡进行上电操作; 步骤F2:所述读卡器判断是否上电激活成功,是则执行步骤F3,否则执行步骤F4 ; 步骤F3:所述读卡器设置上电成功信息,并将其存储到所述USB接收缓存区,执行步骤A12 ; 步骤F4:所述读卡器设置上电失败信息,并将其存储到所述USB接收缓存区,执行步骤A12 ; 步骤F5:所述读卡器对所述智能SD卡片执行下电操作,设置下电成功信息并将其存储到所述USB接收缓存区,执行步骤A12 ; 步骤F6:所述读卡器根据所述扩展通道指令进行相应操作,并将操作结果存储到所述USB接收缓存区,执行步骤A12。
15.如权利要求13所述的方法,其特征在于,所述步骤A10-4包括: 步骤A10-41:所述读卡器将所述SD卡输出缓存区中的数据中最低字节数据作为当前字节数据; 步骤A10-42:所述读卡器获取当前字节数据的最高比特位作为当前比特位; 步骤A10-43:所述读卡器判断当前比特位上的值是否为预定值,是则执行步骤A10-44,否则执行步骤A10-45 ; 步骤A10-44:所述读卡器将所述SWP接口的输出电平变为高电平,延时第一预设时长后将所述SWP接口的输出电平变为低电平,延时第二预设时长,执行步骤A10-46 ; 步骤A10-45:所述读卡器将所述SWP接口的输出电平变为低电平,延时第三预设时长后将所述SWP接口的输出电平变为高电平,延时第四预设时长,执行步骤A10-46 ; 步骤A10-46:所述读卡器判断当前字节数据是否发送完成,是则执行步骤A10-48,否则执行步骤A10-47 ; 步骤A10-47:所述读卡器将当前比特位的相邻低位作为当前比特位,返回步骤A10-43 ; 步骤A10-48:所述读卡器判断所述SD卡输出缓存区中的数据是否发送完成,是则执行步骤Al I,否则执行步骤A10-49 ; 步骤A10-49:所述读卡器将当前字节的相邻高字节数据作为当前字节数据,返回步骤A10-42。
16.如权利要求15所述的方法,其特征在于,步骤All具体包括: 步骤All-1:所述读卡器将所述SWP接口的输出电平变为高电平,延时第五预设时长;步骤A11-2:所述读卡器判断所述SWP接口的输入采集电平是否为高电平,是则执行步骤Al 1-3,否则执行步骤Al 1-4 ; 步骤A11-3:所述读卡器将补位计数器加1,并采集一个比特位的高电平值并顺序存储到所述SD卡输出缓存区中,执行步骤A11-7 ; 步骤A11-4:所述读卡器判断所述补位计数器的值是否等于第一预设值,是则执行步骤Al 1-5,否则执行步骤Al 1-6 ; 步骤Al 1-5:所述读卡器将所述补位计数器清零,执行步骤Al 1-7 ; 步骤A11-6:所述读卡器采集一个比特位的低电平值并顺序存储在所述SD卡输出缓存区中,将采集计数器加I,执行步骤Al 1-7 ; 步骤A11-7:所述读卡器判断所述采集计数器是否等于第二预设值,是则执行步骤A12,否则执行步骤Al 1-8 ; 步骤Al 1-8:所述读卡器将所述SWP接口的输出电平变为高电平,延时第六预设时长后将所述SWP接口的输出电平变为低电平,延时第四预设时长,返回步骤All-1。
17.一种基于智能SD卡的读卡器的工作方法,其特征在于,包括: 步骤SO:所述读卡器上电,进行初始化; 步骤S1:所述读卡器判断是否有卡片插入,是则执行步骤S2,否则返回步骤SI ; 步骤S2:所述读卡器通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤S3,否则执行步骤S4 ; 步骤S3:所述读卡器定义SCSI和CCID两个卡槽的配置信息,执行步骤S5 ; 步骤S4:所述读卡器定义SCSI卡槽的配置信息,执行步骤S5 ; 步骤S5:所述读卡器使能USB连接; 步骤S6:当所述读卡器接收到上位机下发的枚举指令时进入USB中断,在所述USB中断中,所述读卡器根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机,执行步骤S7 ; 步骤S7:当所述读卡器检测到中断标志置位时,所述读卡器判断所述中断标志的类型,如为USB接收标志则执行步骤S8 ;如为其他标志则执行相应操作; 步骤S8:所述读卡器将所述中断标志复位,并判断接收数据的端点的类型,如为SCSI卡槽的out端点则执行步骤S9,如为CCID卡槽的out端点则执行步骤SlO ; 步骤S9:所述读卡器根据SCSI协议对接收到的数据进行相应操作,返回步骤S7 ; 步骤SlO:所述读卡器根据CCID协议对接收到的数据进行解析,并将解析结果发送给所述智能SD卡; 步骤Sll:所述读卡器等待并接收所述智能SD卡返回的处理结果,将所述处理结果存储到USB接收缓存区中; 步骤S12:所述读卡器通过CCID卡槽的in端点将所述USB接收缓存区中的数据发送给所述上位机,返回步骤S7。
18.如权利要求17所述的方法,其特征在于,所述步骤Sll与所述步骤S12之间包括: 步骤S12’:所述读卡器判断USB是否为连接状态,是则执行步骤S12,否则执行步骤S12,。
19.如权利要求17所述的方法,其特征在于,所述步骤S2-所述步骤S5替换为: 步骤Pl:所述读卡器判断卡槽中是否有卡片,是则执行步骤P6,否则执行步骤P2 ; 步骤P2:所述读卡器定义SCSI卡槽的配置信息; 步骤P3:所述读卡器使能USB连接; 步骤P4:当检测到有卡片插入时,所述读卡器将卡槽标识复位,通过SWP接口向下发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤P5,否则执行步骤S6 ; 步骤P5:所述读卡器将USB失能,定义SCSI和CCID两个卡槽的配置信息并将卡槽标识置位,执行步骤P9; 步骤P6:所述读卡器将卡槽标识复位并通过SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤P7,否则执行步骤P8 ; 步骤P7:所述读卡器定义SCSI和CCID两个卡槽的配置信息,并将所述卡槽标识置位,执行步骤P9 ; 步骤P8:所述读卡器定义SCSI卡槽的配置信息,执行步骤P9 ; 步骤P9:所述读卡器使能USB连接,执行步骤S6。
20.如权利要求19所述的方法,其特征在于,所述步骤Sll与所述步骤S12之间包括: 步骤S12’:所述读卡器判断USB是否为连接状态,是则执行步骤S12,否则执行步骤S12,。
21.如权利要求17-20任意一项所述的方法,其特征在于,所述步骤S7中所述读卡器判断所述中断标志为卡到位标志时,执行步骤Kl ; 步骤Kl:所述读卡器根据卡槽标识判断插入的卡片是否为智能SD卡,是则执行步骤K2,否则返回步骤S7 ; 步骤K2:所述读卡器将所述中断标志复位,检测卡到位电平是否为低电平,是则执行步骤K4,否则执行步骤K3; 步骤K3:所述读卡器通过CCID卡槽的中断端点向所述上位机返回无卡信息,返回步骤S7 ; 步骤K4:所述读卡器通过所述SWP接口向所述卡片发送上电指令,并判断是否接收到上电成功的信息,是则执行步骤K5,否则执行步骤K6 ; 步骤K5:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,并将所述卡槽标识置位,返回步骤S2; 步骤K6:所述读卡器通过CCID卡槽的中断端点向所述上位机发送无卡信息,USB失能,并将所述卡槽标识复位,返回步骤S7。
22.如权利要求17-20任意一项所述的方法,其特征在于,所述在所述USB中断中,所述读卡器根据所述枚举指令将对应的卡槽的配置信息返回给所述上位机,包括: 步骤Y1:所述读卡器检测所述枚举指令的类型,如所述枚举指令是设备描述符请求,则执行步骤Y2 ;如所述枚举指令是配置描述符请求,则执行步骤Y3 ;如所述枚举指令是卡槽名称请求,则执行步骤Y4 ;如所述枚举指令是卡槽配置请求,则执行步骤Y5 ; 步骤Y2:所述读卡器将设备描述符发送给所述上位机,执行步骤Y6 ; 步骤Y3:所述读卡器将设备配置头字节和配置数据发送给所述上位机,执行步骤Y6 ;步骤Y4:所述读卡器根据所述枚举指令中的标志号判断所述卡槽名称请求的类型,如标志号为第一数值则将SCSI卡槽名称返回给所述上位机,执行步骤Y6 ;如标志号为第二数值则将CCID卡槽名称返回给所述上位机,执行步骤Y6 ; 步骤Y5:所述读卡器根据所述枚举指令中的标志号判断所述卡槽配置请求的类型,如标志号为第一数值则将SCSI卡槽的配置信息返回给所述上位机,执行步骤Y6 ;如标志号为第二数值则将CCID卡槽的配置信息返回给所述上位机,执行步骤Y6 ; 步骤Y6:所述读卡器判断枚举是否完成,是则将枚举标志设为预定数据,退出所述USB中断;否则直接退出所述USB中断。
23.如权利要求18或20所述的方法,其特征在于,所述在所述USB中断中,所述读卡器根据所述枚举指令将对应的卡槽的配置信息全部返回给所述上位机之后,包括:将枚举标志设为预定数据; 所述读卡器判断USB是否为连接状态具体包括:判断所述枚举标志是否为预定数据,是则USB为连接状态,否则USB不为连接状态。
24.如权利要求17-20任意一项所述的方法,其特征在于,所述步骤S2具体为: 步骤S2-1:所述读卡器将所述SWP接口的电源引脚上电; 步骤S2-2:所述读卡器将由主设备到从设备的信号置为高电平,开启计时器; 步骤S2-3:所述读卡器检测由从设备到主设备的信号是否变为高电平,是则执行步骤S2-5,否则执行步骤S2-4 ; 步骤S2-4:所述读卡器判断所述计时器的值是否超过第一预设值,是则所述计时器清零,执行步骤S4,否则返回步骤S2-3 ; 步骤S2-5:所述读卡器接收所述卡片返回的由主设备到从设备的信号置为高电平的成功信息; 步骤S2-6:所述读卡器给所述卡片发送设置自身处于全功耗模式指令; 步骤S2-7:所述读卡器接收所述卡片返回的已准备好信息; 步骤S2-8:所述读卡器给所述卡片发送复位初始化链路信息; 步骤S2-9:所述读卡器判断是否接收到所述卡片返回的回复信息,是则执行步骤S2-10,否则执行步骤S4 ; 步骤S2-10:所述读卡器连接管道,并获取所述卡片中的参数; 步骤S2-11:所述读卡器关闭所有连接的管道,更新所述卡片中的参数; 步骤S2-12:所述读卡器创建动态管道参数,并打开所有连接的管道,执行步骤S3。
25.如权利要求17-20任意一项所述的方法,其特征在于, 所述步骤S7中所述读卡器判断所述中断标志的类型为卡到位标志时,则执行步骤LI ;步骤L1:所述读卡器判断插入的卡片是否为智能SD卡,是则执行步骤L2,否则将所述中断标志复位,返回步骤S7 ; 步骤L2:所述读卡器将所述中断标志复位,检测卡到位电平是否为低电平,是则执行步骤L4,否则执行步骤L3; 步骤L3:所述读卡器通过CCID卡槽的中断端点向所述上位机返回有卡信息,返回步骤S2 ; 步骤L4:所述读卡器通过CCID卡槽的中断端点向所述上位机返回无卡信息,USB失能,返回步骤S7。
26.如权利要求25所述的方法,其特征在于, 所述步骤SO中进行初始化包括:将卡槽标识复位; 所述步骤S3还包括:所述读卡器将所述卡槽标识置位; 所述步骤LI具体为:所述读卡器判断所述卡槽标识是否置位,是则插入的卡片为智能SD卡,否则插入的卡片不为智能SD卡。
27.如权利要求17-20任意一项所述的方法,其特征在于,所述步骤SlO具体包括: 步骤S10-1:所述读卡器判断所述接收到的数据是否合法,是则执行步骤S10-2,否则设置错误信息并存储到USB接收缓存区中,执行步骤S12 ; 步骤S10-2:所述读卡器检测所述接收到的数据的指令类型,如是数据交换APDU指令则执行步骤S10-3,如是其他则执行相应操作; 步骤S10-3:所述读卡器将所述数据交换APDU指令存储到SD卡输出缓存区中; 步骤S10-4:所述读卡器将所述SD卡输出缓存区中的数据发送给所述智能SD卡。
28.如权利要求27所述的方法,其特征在于,所述步骤S10-2中所述读卡器检测到的指令类型为上电指令,则执行步骤Cl,如是下电指令,则执行步骤C5 ;如是扩展通道指令,则执行步骤C6 ;如是其他指令,则设置不支持信息,并将其存储到所述USB接收缓存区,执行步骤S12 ; 步骤Cl:所述读卡器对所述智能SD卡进行上电操作; 步骤C2:所述读卡器判断是否上电激活成功,是则执行步骤C3,否则执行步骤C4 ; 步骤C3:所述读卡器设置上电成功信息,并将其存储到所述USB接收缓存区,执行步骤S12 ; 步骤C4:所述读卡器设置上电失败信息,并将其存储到所述USB接收缓存区,执行步骤S12 ; 步骤C5:所述读卡器对所述智能SD卡片执行下电操作,设置下电成功信息并将其存储到所述USB接收缓存区,执行步骤S12 ; 步骤C6:所述读卡器根据所述扩展通道指令进行相应操作,并将操作结果存储到所述USB接收缓存区,执行步骤S12。
29.如权利要求27所述的方法,其特征在于,所述步骤S10-4包括: 步骤S10-41:所述读卡器将所述SD卡输出缓存区中的数据中最低字节数据作为当前字节数据; 步骤S10-42:所述读卡器获取当前字节数据的最高比特位作为当前比特位; 步骤S10-43:所述读卡器判断当前比特位上的值是否为预定值,是则执行步骤S10-44,否则执行步骤S10-45 ; 步骤S10-44:所述读卡器将所述SWP接口的输出电平变为高电平,延时第一预设时长后将所述SWP接口的输出电平变为低电平,延时第二预设时长,执行步骤S10-46 ; 步骤S10-45:所述读卡器将所述SWP接口的输出电平变为低电平,延时第三预设时长后将所述SWP接口的输出电平变为高电平,延时第四预设时长,执行步骤S10-46 ; 步骤S10-46:所述读卡器判断当前字节数据是否发送完成,是则执行步骤S10-48,否则执行步骤S10-47 ; 步骤S10-47:所述读卡器将当前比特位的相邻低位作为当前比特位,返回步骤S10-43 ; 步骤S10-48:所述读卡器判断所述SD卡输出缓存区中的数据是否发送完成,是则执行步骤S11,否则将当前字节的相邻高字节数据作为当前字节数据,返回步骤S10-42。
30.如权利要求29所述的方法,其特征在于,步骤Sll具体包括: 步骤Sll-1:所述读卡器将所述SWP接口的输出电平变为高电平,延时第五预设时长;步骤S11-2:所述读卡器判断所述SWP接口的输入采集电平是否为高电平,是则执行步骤SI 1-3,否则执行步骤SI 1-4 ; 步骤S11-3:所述读卡器将补位计数器加1,并采集一个比特位的高电平值并顺序存储到所述SD卡输出缓存区中,执行步骤S11-7 ; 步骤S11-4:所述读卡器判断所述补位计数器的值是否等于第一预设值,是则执行步骤SI 1-5,否则执行步骤SI 1-6 ; 步骤SI 1-5:所述读卡器将所述补位计数器清零,执行步骤SI 1-7 ; 步骤S11-6:所述读卡器采集一个比特位的低电平值并顺序存储在所述SD卡输出缓存区中,将采集计数器加1,执行步骤S11-7 ; 步骤S11-7:所述读卡器判断所述采集计数器是否等于第二预设值,是则执行步骤S12,否则执行步骤SI 1-8 ; 步骤S11-8:所述读卡器将所述SWP接口的输出电平变为高电平,延时第六预设时长后将所述SWP接口的输出电平变为低电平,延时第四预设时长,返回步骤Sll-1。
【文档编号】G06K7/00GK104281825SQ201410512856
【公开日】2015年1月14日 申请日期:2014年9月29日 优先权日:2014年9月29日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1