CN101789069B - 时序控制方法和读卡器 - Google Patents
时序控制方法和读卡器 Download PDFInfo
- Publication number
- CN101789069B CN101789069B CN2009102369880A CN200910236988A CN101789069B CN 101789069 B CN101789069 B CN 101789069B CN 2009102369880 A CN2009102369880 A CN 2009102369880A CN 200910236988 A CN200910236988 A CN 200910236988A CN 101789069 B CN101789069 B CN 101789069B
- Authority
- CN
- China
- Prior art keywords
- bit
- control value
- preset control
- level
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种时序控制方法和读卡器,属于智能卡技术领域。所述方法包括:读卡器检测到传输信号的下降沿时,开启时序控制器;当时序控制器达到第一预设控制值时,采样智能卡的电平作为第一个比特位,如果是低电平则继续接收数据,否则结束;当时序控制器依次达到第二至第九预设控制值时,依次采样电平,按照约定协议依次作为第二至第九个比特位,并拼凑成一个数据字节保存;当时序控制器达到第十预设控制值时,采样电平作为第十个比特位,并根据预设的校验方式用第十个比特位,校验已保存的数据字节。所述读卡器包括:时序控制模块、采样模块、判断模块、存储模块和校验模块。本发明实现了更精准的时序控制。
Description
技术领域
本发明涉及智能卡技术领域,特别涉及一种时序控制方法和读卡器。
背景技术
IC卡(Integrated Circuit Card,集成电路卡)是继磁卡之后出现的又一种新型信息工具,IC卡是通过卡里的集成电路进行信息存储的。IC卡在有些国家和地区也称智能卡(smartcard)、智慧卡(intelligent card)、微电路卡(microcircuit card)或微芯片卡等。它是将一个微电子芯片嵌入符合ISO 7816标准的卡基中,做成卡片的形式。目前,IC卡已经十分广泛地应用于包括金融、交通、社保等很多领域。
IC卡读写器是IC卡与应用系统间的桥梁,在ISO国际标准中称之为接口设备IFD(Interface Device)。IFD内的CPU通过一个接口电路与IC卡相连并进行通信。根据实际应用系统的不同,可选择并行通信、半双工串行通信和I2C(Inter-Integrated Circuit)通信等不同的IC卡读写芯片来作为IFD内的CPU。
在现有技术中,IC卡读写器通常在开放过程中使用固定的频率,并且波特率和基本时间互为倒数,波特率由复位应答ATR(Answer To Reset)中的TA1的值决定。由于IC卡传输类型多样,所以波特率种类多样,不仅导致时序多变,而且造成了IC卡读写器固件程序在设计上比较复杂。另外,由于IC卡读写器与IC卡之间的通讯和IC卡的时钟频率关系密切,一旦IC卡的时钟频率改变,则所有涉及时序控制的参数也随之改变,而且,在通讯过程中要随时记录IC卡的时钟频率,以及频繁地根据最新的时钟频率进行时序控制计算,从而导致通讯过程中的计算量增大,时序控制麻烦,影响IC卡读写器与IC卡的通讯效率,且频繁变化的时钟频率也会带来IC卡读写器与IC卡之间较高的通讯误码率。
发明内容
为了克服现有技术的缺点,本发明实施例提供了一种时序控制方法和读卡器。所述技术方案如下:
一种时序控制方法,用于读卡器接收来自智能卡的数据,所述方法包括:
所述读卡器检测到所述智能卡的传输信号的下降沿时,开启时序控制器;
当所述时序控制器达到第一预设控制值时,采样所述智能卡输出的电平,将所述采样到的电平作为第一个比特位并判断所述采样到的电平是否是低电平,如果是低电平,则继续接收数据,如果不是,则结束;
当所述时序控制器依次达到第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值和第九预设控制值时,依次采样所述智能卡输出的电平,并按照约定协议将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位拼凑成一个数据字节,并保存;
当所述时序控制器达到第十预设控制值时,采样所述智能卡输出的电平,并按照所述约定协议将所述采样到的电平转换为第十个比特位,并用所述第十个比特位校验已保存的所述数据字节。
所述约定协议包括正向协议和反向协议;所述依次采样所述智能卡输出的电平,并按照约定协议将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位拼凑成一个数据字节,并保存具体包括:
当所述约定协议是正向协议时,按照高电平是1,低电平是0的转换方式,将依次采样到的电平转换为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从高位到低位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最高位,并保存所述数据字节;
当所述约定协议是反向协议时,按照高电平是0,低电平是1的转换方式,将依次采样到的电平转换为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从低位到高位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最低位,并保存所述数据字节;
或
当所述约定协议是反向协议时,按照高电平是1,低电平是0的转化方式,将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从高位到低位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最高位,并将所述数据字节中的比特位按照1转换为0,0转换为1的方式进行取反后逆序保存。
所述时序控制器是计数器,所述开启时序控制器具体为:将所述计数器清零,开始计数。
所述第一预设控制值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值是根据时钟率转换因子和波特率调整因子预先设定的不同的计数值。
所述第一预设控制值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值中的任一项是一个计数值或多个计数值。
当所述任一项是多个计数值时,将多次采样得到的多个采样值中出现次数最多的值作为最终有效采样值。
所述时序控制器是定时器,所述开启时序控制器具体为:加载所述定时器,清零并开始计时。
所述第一预设控制值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值中的任一项是一个计时值,且为预先根据时钟率转换因子、波特率调整因子和智能卡的时钟频率设定的,其中,所述第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值均相同,所述第一预设控制值是所述第二预设控制值的一半。
所述用所述第十个比特位校验已保存的所述数据字节,包括:
根据预设的校验方式处理所述第十个比特位,并用处理后的第十个比特位校验已保存的所述数据字节,其中,所述预设的校验方式是偶校验或奇校验。
所述按照所述约定协议将所述采样到的电平转换为第十个比特位,并用所述第十个比特位校验已保存的所述数据字节,具体包括:
当所述约定协议是正向协议时,按照高电平是1,低电平是0的转换方式,将采样到的电平转换为第十个比特位;
当所述约定协议是反向协议时,按照高电平是0,低电平是1的转换方式,将采样到的电平转换为第十个比特位;
判断是否需要对已保存在临时数据缓存中的所述数据字节进行确认;
如果需要确认,则利用所述第十个比特位判断所述临时数据缓存中的所述数据字节是否正确,如果正确,则将所述临时数据缓存中的所述数据字节保存到串行数据缓存中,如果不正确,则将第十一个比特位按照所述约定协议转换为低电平发送给所述智能卡,并丢弃所述临时数据缓存中的所述数据字节;
如果不需要确认,则将所述临时数据缓存中的所述数据字节保存到串行数据缓存中。
所述将第十一个比特位按照所述约定协议转换为低电平发送给所述智能卡之后,还包括;
将电平驱动为高电平。
一种读卡器,所述读卡器包括:
时序控制模块,用于当检测到智能卡的传输信号的下降沿时,开始控制时序;
采样模块,用于当所述时序控制模块的值依次达到第一预设控制值值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值时,依次采样所述智能卡输出的电平,并按照约定协议依次将采样到的电平作为第一个比特位、第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位、第九个比特位和第十个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位拼凑成一个数据字节;
判断模块,用于判断所述采样模块在所述时序控制模块的值达到所述第一预设控制值时采样到的电平是否是低电平,如果是低电平,则通知所述采样模块继续采样,否则,结束;
存储模块,用于保存所述采样模块得到的所述数据字节;
校验模块,用于根据预设的校验方式处理所述采样模块采样到的第十个比特位,并用所述处理后的第十个比特位对所述存储模块存储的数据字节进行校验。
所述时序控制模块具体为计数器或定时器。
所述存储模块具体用于将所述采样模块得到的所述数据字节保存在临时数据缓存中;
所述校验模块具体包括:
判断单元,用于判断是否需要对所述临时数据缓存中的数据进行确认;
处理单元,用于在所述采样模块对所述第十个比特位进行数据采样之后,如果所述预设的校验方式是偶校验,则对所述第十个比特位不做任何处理,如果所述预设的校验方式是奇校验,则对所述第十个比特位进行取反处理;
第一处理单元,用于如果所述判断单元判断出需要确认,则根据所述处理单元得到的所述第十个比特位判断所述临时数据缓存中的数据字节是否正确,如果正确,则将第十一个比特位按照所述约定协议转换成高电平发送给所述智能卡,并通知所述存储模块将所述临时数据缓存中的数据字节保存到串行数据缓存中,如果不正确,则将第十一个比特位按照所述约定协议转换成低电平发送给所述智能卡,并通知所述存储模块丢弃所述临时数据缓存中的数据字节;
第二处理单元,用于如果所述判断单元判断出不需要确认,则通知所述存储模块将所述临时数据缓存中的数据字节保存到串行数据缓存中。
所述校验模块还包括:
第三处理单元,用于在所述第一处理单元将第十一个比特位按照约定协议转换为低电平发送给所述智能卡之后,将IO电平驱动为高电平。
本发明实施例提供的上述技术方案,在不考虑智能卡的时钟频率的情况下,通过计数智能卡的时钟频率的个数,来完成对时序的控制,并简化了读卡器的程序结构,提高了读卡器与智能卡卡之间数据收发的稳定性,可以实现更精准的时序控制,降低了时序控制的复杂度和通讯误码率,同时代码还可以任意移植,具有良好的可移植性。时序控制可以采用计数或者计时的方式,具有较高的灵活性。上述技术方案完全实现了一个与智能卡时钟频率无关的一个时序控制平台,只要能够获取到卡片的参数时钟率转换因子F和波特率调整因子D,就可以使用在任何的硬件平台的读卡器上。
附图说明
图1是本发明实施例提供的读卡器和智能卡之间的一种传输字符的时序图;
图2是本发明实施例提供的读卡器和智能卡之间的另一种传输字符的时序图;
图3是本发明实施例1提供的采用计数方式进行时序控制的方法流程图;
图4是本发明实施例2提供的采用定时方式进行时序控制的方法流程图;
图5是本发明实施例3提供的采样流程示意图;
图6是本发明实施例4提供的读卡器结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种时序控制方法,用于读卡器接收来自智能卡的数据,具体包括:
读卡器检测到智能卡的传输信号的下降沿时,开启时序控制器;
当时序控制器达到第一预设控制值时,采样智能卡输出的电平,将采样到的电平作为第一个比特位并判断采样到的电平是否是低电平,如果是低电平,则继续接收数据,如果不是,则结束;
当时序控制器依次达到第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值和第九预设控制值时,依次采样智能卡输出的电平,并按照约定协议将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位拼凑成一个数据字节,并保存;
当时序控制器达到第十预设控制值时,采样智能卡输出的电平,将采样到的电平作为第十个比特位,并根据预设的校验方式处理所述第十个比特位,并用所述处理后的第十个比特位校验已保存的数据字节。
在本发明实施例中,读卡器与智能卡在进行通讯之前,预先设定读卡器与智能卡之间采用的协议类型,预先设定读卡器与智能卡之间信息交互时采用的校验方式,预先设定是否要对传输数据进行确认,预先设定数据传输过程中的时序控制器的控制值,读卡器根据该预先设定的控制值进行时序控制,即在到达该控制值时,读卡器发送或接收数据。其中,时序控制器的控制值是根据时钟率转换因子和波特率调整因子的值来设定的。所述时序控制器可以具体为计数器或定时器。当为计数器时,预设的控制值为计数值,当为定时器时,预设的控制值为定时值。
本发明实施例中读卡器与智能卡之间传输的字符有两种,一种长度为11个比特位,另一种长度为12个比特位。参见图1,为读卡器和智能卡传输字符时序图,该时序图是不需要对数据位进行确认的时序图,当前字符包括11个比特位,第1个为起始位,第2-9个为数据位,第10个为奇偶校验位,第11个为停止位。参见图2,为读卡器和智能卡传输字符时序图,该时序图是需要对数据位进行确认的时序图,当前字符包括12个比特位,第1个为起始位,第2-9个为数据位,第10个为奇偶校验位,第11个为校验结果传输位,第12个为停止位。
实施例1
参见图3,本实施例提供了一种通过计数器计数的方式来实现时序控制的方法,用于读卡器与智能卡通讯时接收智能卡发来的数据的应用场景。
本实施例中,采用计数器计数来控制时序,具体地,所述计数器使用智能卡的CLK信号作为时钟源,与智能卡的工作时钟一直保持同步,并按照该时钟源进行计数。
本实例中,预先设定时钟率转换因子为372,波特率调整因子是1,则每个比特位的持续时间是372个时钟周期,即当计数器的计数值达到372个时钟周期或372个时钟周期的整数倍时,则认为当前完成对一个比特位的传输。并且,预先根据时钟率转换因子372和波特率调整因子1设定好计数器的计数值来控制数据的接收和发送,设定好的计数器的值可以存储在一个二维数组中,当读卡器进行采样时,直接查找该数组,从该数组中读出相应的计数值来进行采样,从而可以加快读卡器和智能卡之间的交互速度,提高通讯效率,减轻读卡器CPU的负担。
其中,所述二维数组中的计数值可以设置如下:计数值=a*372,所述a为采样点的位置,372是指一个位持续时间是372个时钟周期。可以设置一个12*4的二维数组ClkCnt[12][4]来存储计数值,其中,存储了12个比特位的采样点对应计数值,每个比特位存储有四个值,第一个值为当前比特位开始的边界值,后面三个值为采样点,预先计算出来的计数值具体如下:
ClkCnt[0][0]=0.0*f*etu=0.0*372;表示0个位持续时间的计数值
ClkCm[0][1]=0.3*f*etu=0.3*372; 表示0.3个位持续时间的计数值
ClkCnt[0][2]=0.5*f*etu=0.5*372;表示0.5个位持续时间的计数值
ClkCnt[0][3]=0.7*f*etu=0.7*372;表示0.7个位持续时间的计数值
ClkCm[1][0]=1.0*f*etu=1.0*372; 表示1.0个位持续时间的计数值
ClkCnt[1][1]=1.3*f*etu=1.3*372;表示1.3个位持续时间的计数值
ClkCnt[1][2]=1.5*f*etu=1.5*372;表示1.5个位持续时间的计数值
ClkCnt[1][3]=1.7*f*etu=1.7*372;表示1.7个位持续时间的计数值
……
上例中每个比特位都设置了四个计数值,其中有三个采样点,实际应用中,也可以只设置两个计数值,其中一个为采样点。本发明实施例中,任一个预设计数值可以是一个计数值,也可以是多个计数值。为方便说明,下面以表的形式,分别列出设置一个和三个采样点时计算得到的计数值,如表1和表2所示。
表1
预设计数值 | 边界值 | 采样点 |
第一预设计数值 | 0 | 186 |
第二预设计数值 | 372 | 558 |
第三预设计数值 | 744 | 930 |
第四预设计数值 | 1116 | 1302 |
第五预设计数值 | 1488 | 1674 |
第六预设计数值 | 1860 | 2046 |
第七预设计数值 | 2232 | 2418 |
第八预设计数值 | 2604 | 2790 |
第九预设计数值 | 2976 | 3162 |
第十预设计数值 | 3348 | 3534 |
第十一预设计数值 | 3720 | 3906 |
第十二预设计数值 | 4092 | 4278 |
其中,表1中的边界值为372个时钟周期的整数倍,用于控制发送数据,采样点是指计数器达到该值时进行采样,用于接收数据;每个采样点均是按照当前比特位的持续时间的中间值来设置的,如第一预设计数值186为372的中间值;当然也可以不采用中间值,而是采用当前比特位的持续时间内的其它值,本发明不做具体限定。
表2
预设计数值 | 边界值 | 采样点 | 采样点 | 采样点 |
第一预设计数值 | 0 | 130 | 186 | 242 |
第二预设计数值 | 372 | 428 | 558 | 614 |
第三预设计数值 | 744 | 874 | 930 | 986 |
第四预设计数值 | 1116 | 1246 | 1302 | 1358 |
第五预设计数值 | 1488 | 1618 | 1674 | 1730 |
第六预设计数值 | 1860 | 1990 | 2046 | 2102 |
第七预设计数值 | 2232 | 2362 | 2418 | 2474 |
第八预设计数值 | 2604 | 2734 | 2790 | 2846 |
第九预设计数值 | 2976 | 3106 | 3162 | 3218 |
第十预设计数值 | 3348 | 3378 | 3534 | 3590 |
第十一预设计数值 | 3720 | 3840 | 3906 | 3962 |
第十二预设计数值 | 4092 | 4212 | 4278 | 4334 |
其中,表2中的边界值为372个时钟周期的整数倍,用于控制发送数据,采样点是指计数器达到该值时进行采样,用于控制接收数据;每个计数值均包括三个采样点,且任一个计数值的三个采样点,在对应当前比特位的持续时间内的偏移均为35%、50%和65%,即0.35、0.5和0.65;如第一预设计数值包含的三个采样点:130、186、242,分别为372个时钟周期的35%、50%、65%;当然也采用其它的偏移值,本发明不做具体限定。
当计数器的计数值达到表1或表2中设定的值时,读卡器接收或发送数据。上述方式通过计数卡时钟频率个数,而不直接考虑卡时钟的实际频率,简化了时序控制,又由于计数器使用智能卡的CLK信号作为时钟源,实现了更精准的时序控制。
上述方法具体包括:
步骤301:读卡器检测到IO信号的下降沿时,触发外部中断,开始接收智能卡输出的IO电平。
步骤302:计数器清零,当计数器的计数值达到第一预设计数值时,读卡器采样智能卡输出的IO电平,将采样到的电平作为第一个比特位,并将该比特位视为当前字符帧的起始位;
由于在数据传输过程中,数据传输信号可能会受到噪声等干扰因素的干扰而出现波动,因此,为了使读卡器接收到的数据更加准确,本发明实施例中,读卡器在接收智能卡输出的IO电平时,对IO电平采样,保存采样到的最终有效值,并将该采样到的最终有效值0或者1作为一个比特位。
本实施例中,优选地,对IO电平进行一次采样,并将采样到的电平作为起始位,如采用表1中的计数值,预设当前的372个时钟周期的1/2处作为最佳的第一预设计数值,即当计数器的计数值达到第一预设计数值186时,采样IO电平,并将采样到的电平作为第一个比特位,例如IO电平的采样值为1,即第一个比特位为1。
另外,本实施例也可以对IO电平进行三次数据采样,并将采样到的最终有效电平作为第一个比特位,如采用表2中的计数值,当计数器的计数值分别达到第一预设计数值130、186和242时,对IO电平进行第一次、第二次和第三次数据采样,并将采样到的最终有效电平作为第一个比特位。其中,除中间采样点外的其余两处采样点可以根据需要更改,如左右各偏移0.2个位持续时间,或者左右各偏移0.3个位持续时间等等。通常,选择多个采样点,从而可以进一步提高采样的准确度。当读卡器进行多次采样时,可以对得到的所有采样值进行分析,将其中出现次数最多的采样值作为最终有效采样值,通常,多次采样的次数为奇数,从而可以保证选出出现次数最多的采样值,来确定最终有效采样值。
步骤303:读卡器根据采样得到的起始位,判断起始位是否有效,如果有效,则执行步骤304,否则,结束当前流程;
具体地,读卡器判断起始位是否有效的过程可以如下:读卡器根据起始位的采样值来进行判断,如果起始位的采样值是0,即IO电平为低电平时,则该起始位有效,如果起始位的采样值是1,即IO电平为高电平时,则该起始位无效。
当读卡器进行多次采样时,先将其中出现次数最多的采样值作为最终有效采样值,然后根据最终有效采样值来按照上述方法判断起始位是否有效。例如,读卡器对IO电平进行了三次采样,采样值分别是0、1、1,则将出现次数最多的值1作为最终有效采样值,并将最终有效采样值1作为起始位,按照上述方法可以判断出该起始位无效。如果三次采样值分别是0、0、1,则将出现次数最多的值0作为最终有效采样值,并将最终有效采样值0作为起始位,然后按照上述方法判断出该起始位有效。
步骤304:此时已完成起始位的接收,计数器的计数值i清零,即设置i=0,重新开始计数,并且将临时数据缓存的指针Recv置为0,即Recv=0,根据预先设定的计数值(参见表1或2)开始采样IO电平;
本实施例中的临时数据缓存用于临时存储来自智能卡的数据、以及读卡器采样得到的采样值和最终有效采样值。
由于起始位后面是数据位,共有八位,即当前字符帧的第二至第九个比特位,而且根据传输字符的时序图可知,本实例中每位的位持续时间都是372个时钟周期,并且,接收数据位的过程中临时数据缓存的指针Recv需要移动7次,则指针Recv的有效取值范围为0、1、2、3、4、5、6、7,其中,读卡器每完成对一个数据位的接收,指针Recv的值就递增1,即(Recv+=1)。
步骤305:当计数器的计数值达到第二预设计数值至第九预设计数值中的任一个时,采样IO电平,并按照约定协议分别将采样到的电平转换为第二个比特位至第九个比特位,即当前字符帧的数据位。
其中,约定协议包括正向协议和反向协议,
如果是正向协议,则按照高电平是1,低电平是0的转换方式,将采样到的电平转换为比特位;
如果是反向协议,则按照高电平是0,低电平是1的转换方式,将采样到的电平转换为比特位;
本实例中,第二预设计数值至第九预设计数值中的任一个预设计数值可以是一个计数值,也可以是多个计数值,下面分别以表1和表2为例具体说明。
例如,预设的计数器的计数值如表1所示,第二预设计数值至第九预设计数值分别是:558、930、1302、1674、2046、2418、2790、3162,则当计数器的计数值达到第二预设计数值558时,采样IO电平,将采样得到的电平作为第二个比特位,如采样值是0,即第二个比特位为0;当计数器的计数值达到第三预设计数值930时,采样IO电平,将采样到的电平作为第三个比特位,如采样值是1,即第三个比特位是1;当计数器的计数值达到第四预设计数值1302时,采样IO电平,将采样到的电平作为第四个比特位,如采样值是1,即第四个比特位为1;当计数器的计数值达到第五预设计数值1674时,采样IO电平,将采样到的电平作为第五个比特位,如采样值是0,即第五个比特位为0;当计数器的计数值达到第六预设计数值2064时,采样IO电平,将采样得到的电平作为第六个比特位,如采样值是1,即第六个比特位为1;当计数器的计数值达到第七预设计数值2418时,采样IO电平,将采样得到的电平作为第七个比特位,如采样值是0,即第七个比特位为0;当计数器的计数值达到第八预设计数值2790时,采样IO电平,将采样得到的电平作为第八个比特位,如采样值是1,即第八个比特位为1;当计数器的计数值达到第九预设计数值3162时,采样IO电平,将采样得到的电平作为第九个比特位,如采样值是0,即第九个比特位为0。
再如,预设的计数器的计数值如表2所示,第二预设计数值至第九预设计数值中的每一个预设计数值均包括三个值。
第二预设计数值为:428、558或614,当计数器的计数值分别达到第二预设计数值428、558、614时,对IO电平进行三次采样,并将采样得到的最终有效电平作为第二个比特位,如采样值分别为0、1、1;并将三次数据采样中,出现次数最多的采样值作为IO电平的最终有效采样值,则本次最终有效采样值是1,即第二个比特位为1;
第三预设计数值为:874、930、986,当计数器的计数值分别达到第三预设计数值874、930、986时,对IO电平进行三次采样,并将采样得到的最终有效电平作为第三个比特位,如采样值是1、1、0,则最终有效采样值是1,即第三个比特位为1;
第四预设计数值为:1246、1302、1358,当计数器的计数值分别达到第四预设计数值1246、1302、1358时,对IO电平进行三次采样,并将采样得到的最终有效电平作为第四个比特位,如采样值分别是0、1、0,即第四个比特位为0;
第五预设计数值为:1618、1674、1730,当计数器的计数值分别达到第五预设计数值1618、1674、1730时,对IO电平进行三次采样,并将采样得到的最终有效电平作为第五个比特位,如三次采样值是0、0、1,即第五个比特位为0;
第六预设计数值为:1990、2046、2102,当计数器的计数值分别达到第六预设计数值1990、2046、2102时,对IO电平进行三次采样,并将采样得到的最终有效电平作为第六个比特位,如采样值是1、1、1,即第六各比特位为1;
第七预设计数值为:2362、2418、2474,当计数器的计数值分别达到第七预设计数值2362、2418、2474时,对IO电平进行三次采样,并将采样得到的最终有效电平作为第七个比特位,如采样值是0、0、0,则第七个比特位为0;
第八预设计数值为:2734、2790、2846,当计数器的计数值分别达到第八预设计数值2734、2790、2846时,对IO电平进行三次采样,并将采样得到的最终有效电平作为第八个比特位,如采样值是1、0、0,则第八个比特位为0;
第九预设计数值为:3106、3162、3218,当计数器的计数值分别达到第九预设计数值3106、3162、3218时,对IO电平进行三次采样,并将采样得到的最终有效电平作为第九个比特位,如三次采样值是1、1、0,则第九个比特位为1。
本实施例中,最终有效采样值是指在对IO电平进行多次采样时,出现次数最多的采样值做为最终有效采样值。
步骤306:将采样得到的当前数据位(第二个至第九个比特位)按照约定协议保存到临时数据缓存中,并将临时数据缓存的指针Recv进行移位,如Recv<<=1,临时数据缓存向左移1位(即Recv+=1);
步骤307:读卡器判断指针Recv的值是否小于8,如果是,则返回执行步骤305,否则,执行步骤308;
本实施例中,步骤305、步骤306、步骤307构成一个循环的过程,读卡器等待计数器的计数值分别达到第二至第九预设计数值时,读取IO电平,进行数据采样,并保存有效采样值到临时数据缓存,并且移位,直到完成对8个数据位(第二至第九个比特位)的接收。其中,约定协议包括正向协议和反向协议,根据该协议进行不同的处理后将采样到的比特位保存到临时数据缓存,具体如下:
当所述约定协议是正向协议时,按照高电平是1,低电平是0的转换方式,将依次采样到的电平转换为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从高位到低位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最高位,并保存所述数据字节;
当所述约定协议是反向协议时,按照高电平是0,低电平是1的转换方式,将依次采样到的电平转换为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从低位到高位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最低位,并保存所述数据字节;
或
当所述约定协议是反向协议时,按照高电平是1,低电平是0的转化方式,将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从高位到低位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最高位,并将所述数据字节中的比特位按照1转换为0,0转换为1的方式进行取反后逆序保存。
步骤308:此时,数据位已经接收完成,读卡器开始接收奇偶校验位,即当前字符帧的第十个比特位,当计数器的计数值达到第十预设计数值时,采样IO电平,并按照约定协议将采样到的电平作为奇偶校验位。
本实例中,第十预设计数值可以是一个值,如表1所示,该值可以是预先设定的3534,当计数器的计数值达到3534时,采样IO电平,并将采样到的IO电平(例如0)作为奇偶校验位(第十个比特位)。
本实例中,第十预设计数值还可以是多个值,如表2所示,该值可以是预先设定的3378、3534和3590,当计数器的计数值分别达到第十预设计数值3378、3534和3590时,采样IO电平,并将采样到的最终有效IO电平作为奇偶校验位(第十个比特位),如采样值分别为0、1、1;并将三次数据采样中,出现次数最多的采样值作为最终有效采样值,则本次的最终有效采样值是1,即奇偶校验位(第十个比特位)为1;
步骤309:根据约定协议,对奇偶校验位的采样值进行处理或不处理,具体地,如果采用正向协议,则读卡器对奇偶校验位的采样值不进行任何处理,如果采用反向协议,则读卡器对奇偶校验位的采样值进行取反处理;
其中,读卡器对奇偶检验位的采样值进行取反处理具体为,当奇偶校验位的采样值是1时,则将采样值1取反变成0,当奇偶校验位的采样值是0时,则将采样值0取反变成1。
步骤310:根据根据处理后得到的奇偶校验位对8个数据位进行奇偶校验并判断是否需要对接收的8个数据位进行确认,如果是,则执行步骤311,否则,执行步骤315;
其中,读卡器在与智能卡进行通信之前,会预设相关的信息,包括:需要对数据位进行确认,或者,不需要对数据位进行确认。预设需要对数据位进行确认时,读卡器与智能卡之间传输的字符为12个比特位的字符,包括校验结果传输位;预设不需要对数据位进行确认时,读卡器与智能卡之间传输的字符为11个比特位的字符,不包括校验结果传输位。
本实施例中,奇偶校验包括:奇校验和偶校验。所述奇校验是指让数据序列(包括数据位和奇偶校验位)中1的个数为奇数,所述偶校验是指让数据序列(包括数据位和奇偶校验位)中1的个数为偶数。
步骤311:读卡器判断对已接收的8个数据位的奇偶校验结果是否正确,如果正确,则执行步骤312,否则,执行步骤313;
步骤312:当计数器的计数值达到第十一预设计数值的边界值3720时,将上述奇偶校验结果为正确的8个数据位保存到串行数据缓存中,进一步地,读卡器还可以利用校验结果传输位发送奇偶校验结果正确的标识给智能卡,具体是按照约定协议将校验结果传输位转换为高电平发送给智能卡,当校验结果传输位发送完成后,执行步骤314;
其中,当需要对8个数据位进行确认时,校验结果传输位用于读卡器向智能卡发送标识,该标识标志了读卡器进行奇偶校验的结果是否为正确,当奇偶校验的结果为正确时,读卡器将该校验结果传输位置为高电平,即发送标识1,从而通知智能卡当前数据传输成功;当奇偶校验的结果为错误时,读卡器将该校验结果传输位置为低电平,即发送标识0,从而通知智能卡当前数据传输失败,使得智能卡后续再重新发送一次该数据。本实施例中,串行数据缓存用来存储上述收到的8个数据位。
本实施例中,具体是按照约定协议将校验结果传输位转换为相应的电平发送给智能卡具体是指:
如果是正向协议,则按照高电平是1,低电平是0的转换方式将校验结果传输位转换为相应的电平发送给智能卡;
如果是反向协议,则按照高电平是0,低电平是1的转换方式将校验结果传输位转换为相应的电平发送给智能卡
步骤313:此时,表明读卡器接收的数据位是无效的数据位,当计数器的计数值达到第十一预设计数值的边界值3720时,读卡器利用校验结果传输位发送奇偶校验结果错误的标识给智能卡,即按照约定协议将校验结果传输位转换为低电平发送给智能卡,并丢弃临时数据缓存中保存的8个数据位,当校验结果传输位发送完成后,执行步骤314;
本实施例中,具体是按照约定协议将校验结果传输位转换为相应的电平发送给智能卡在步骤312中有详细描述,此处就不再赘述。
步骤314:当计数器的计数值达到第十二预设计数值的边界值4092时,将IO驱动为高电平,以备后续数据的接收,当前字节接收流程结束;
步骤315:将上述8个数据位保存到串行数据缓存中;
步骤316:当计数器的计数值达到第十一预设计数值的边界值3720时,保持IO电平为高电平,以备后续数据的接收,当前字节接收流程结束。
本实施例中,步骤310~步骤316过程中,发送校验结果传输位和接收停止位均是用的预设计数值的边界值,即372个时钟周期的整数倍,无需进行采样,因此,在读卡器接收智能卡数据的流程中,可以不设置第十一预设计数值和第十二预设计数值的采样点,仅使用其边界值既可完成接收智能卡数据的流程。
本实施例中,步骤301至步骤316中,所有涉及采样IO电平的操作,读卡器内部的操作实现包括:
如果读卡器与智能卡之间采用的是正向协议,读卡器采样IO电平,如果IO电平是高电平则代表1,则此时IO电平的采样值是1,若IO电平是低电平则代表0,则此时IO电平的采样值是0;
如果读卡器与智能卡之间采用的是反向协议,读卡器采样IO电平,如果IO电平是高电平则代表0,则此时IO电平的采样值是0,如果IO电平是低电平则代表1,则此时IO电平的采样值是1。
实施例2
参见图4,本实施例提供了一种通过定时器定时的方式来实现时序控制的方法,用于读卡器与智能卡通讯时接收智能卡发来的数据的应用场景。
本实施例中,采用定时器定时来控制时序,具体地,所述定时器使用智能卡的CLK信号作为时钟源,与智能卡的工作时钟一直保持同步,并按照该时钟源进行定时。
本实例中,预先设定时钟率转换因子为372,波特率调整因子是1,则每个比特位的持续时间是372个时钟周期,预先设定智能卡的时钟频率是4MHz,所以当定时器的定时值达到93微秒时,则认为当前完成对一个比特位的定时传输,并根据预先设定的定时器的定时值来控制数据的接收和发送,在具体实现时,智能卡的时钟频率可以根据具体情况进行设置和调整,相应地,定时器的定时值达到不同的值完成一个比特位的定时传输。
本实例中,预先设定中断标记,通过判断中断标记的状态来判断是否达到定时时间,具体的实现方法是:中断标记为1,则说明定时时间到,然后重新装载定时器,开启下一个比特位的定时后,采样IO电平,同时将中断标记清零。
上述方法具体包括:
步骤401:读卡器检测到智能卡IO信号的下降沿时,触发外部中断,开始接收智能卡传输的IO电平;
步骤402:读卡器装载定时器,当定时器的定时值达到第一预设定时值时,重新装载定时器开启下一个比特的定时后,采样IO电平,并将采样得到的电平作为起始位;
本实例中,定时器的定时值是否达到第一预设定时值,是通过查看中断标记的状态来确定的,当中断标记为1时,则说明定时器的定时值达到了第一预设定时值。
本实例中,预设当前位持续时间的1/2处为最佳采样点,所以本实例中第一预设定时值是46.5微秒,当定时器定时到46.5微秒时,先将定时器清零,重新开始计时,然后采样IO电平,并将采样得到的电平作为起始位;
步骤403:读卡器根据起始位的采样值,判断起始位是否有效,如果有效,则执行步骤404,否则,结束当前流程;
具体地,读卡器判断起始位是否有效的过程同实施例1中的描述,此处不再赘述。
步骤404:此时已完成对起始位的接收,将临时数据缓存的指针Recv置为0,即Recv=0,该临时数据缓存用于临时存储来自智能卡的数据、以及读卡器采样得到的采样值和最终有效采样值;
由于起始位后面是数据位,共有八位,即第二至第九个比特位,因此,接收数据位的过程中临时数据缓存的指针Recv需要移动7次,则指针Recv的有效取值范围为0、1、2、3、4、5、6、7,其中,读卡器每完成对一个数据位的接收,指针Recv的值就递增1,即(Recv+=1)。
步骤405:当定时器的定时值达到第二预设定时值至第九预设定时值中的任一个时,立刻清零定时器,重新装载定时器,开启下一个比特位的定时后,采样IO电平,并按照预定协议分别将采样到的电平作为第二个比特位至第九个比特位,即当前字符帧的数据位。
其中,约定协议包括正向协议和反向协议,
如果是正向协议,则按照高电平是1,低电平是0的转换方式,将采样到的电平转换为比特位;
如果是反向协议,则按照高电平是0,低电平是1的转换方式,将采样到的电平转换为比特位;
本实例中,每个数据位的持续时间都是372个时钟周期,93微秒,优选地,设置当前位持续时间的1/2处为最佳采样点,由于在采样IO电平并将采样到的电平作为起始位之前,读卡器已经将定时器清零了,因此,定时器在起始位的持续时间93微秒内,仅计时达到46.5微秒,然后开始数据位的计时,当计时达到第二个比特位的最佳采样点时,刚好为93微秒,该第二个比特位的定时时间93微秒包括起始位的持续时间的后1/2时间和第一个数据位的持续时间的前1/2时间。依此类推,每个数据位的定时时间均为93微秒,因此,本实施例中,第二预设定时值至第九预设定时值是相同的值,均为93微秒。
步骤406:按照约定协议将采样到的当前比特位保存到临时数据缓存中,并将临时数据缓存Recv进行移位,如Recv<<=1,临时数据缓存向左移1位(即Recv+=1),当然在具体实现时,临时数据缓存的指针也可以向右移1位;
步骤407:判断临时数据缓存的指针值是否小于8,如果是,则返回执行步骤405,否则,执行步骤408;
步骤405、406、407是一个循环执行的过程,即定时时间到,重新装载定时器,定时下一个比特位后采样当前IO电平。其中,约定协议包括正向协议和反向协议,根据该协议进行不同的处理后将采样到的比特位保存到临时数据缓存,具体如下:
当所述约定协议是正向协议时,按照高电平是1,低电平是0的转换方式,将依次采样到的电平转换为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从高位到低位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最高位,并保存所述数据字节;
当所述约定协议是反向协议时,按照高电平是0,低电平是1的转换方式,将依次采样到的电平转换为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从低位到高位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最低位,并保存所述数据字节;
或
当所述约定协议是反向协议时,按照高电平是1,低电平是0的转化方式,将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从高位到低位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最高位,并将所述数据字节中的比特位按照1转换为0,0转换为1的方式进行取反后逆序保存。步骤408:此时,数据位已经接收完成,读卡器开始接收奇偶校验位,当定时器的定时值达到第十预设定时值时,即当前字符帧的第十个比特位的定时时间到时,立刻清零定时器,重新装载和开启校验结果传输位即当前字符帧的第十一个比特位的定时后,采样IO电平,并将采样到的电平作为奇偶校验位;
本实施例中,第十预设定时值也为93微秒。
步骤409:根据读卡器预先设定的校验方式,对采样IO电平得到的奇偶校验位进行处理,具体地,如果采样偶校验,则读卡器对奇偶校验位不做任何处理,如果采用奇校验,则读卡器对奇偶校验位进行取反处理;
其中,取反处理的具体过程同步骤309中的描述,此处不再赘述。
步骤410:根据处理后的奇偶校验位对8个数据位进行校验并判断是否需要对接收的8个数据位进行确认,如果是,则执行步骤411,否则执行步骤415;
其中,读卡器在与智能卡进行通信之前,会预设相关的信息,包括:需要对数据位进行确认,或者,不需要对数据位进行确认。预设需要对数据位进行确认时,读卡器与智能卡之间传输的字符为12个比特位的字符,包括校验结果传输位;预设不需要对数据位进行确认时,读卡器与智能卡之间传输的字符为11个比特位的字符,不包括校验结果传输位。
本实施例中,奇偶校验包括:奇校验和偶校验。所述奇校验是指让数据序列(包括数据位和奇偶校验位)中1的个数为奇数,所述偶校验是指让数据序列(包括数据位和奇偶校验位)中1的个数为偶数。
步骤411:读卡器判断对已接收的8个数据位的奇偶校验结果是否正确,如果正确,则执行步骤412,否则,执行步骤413;
步骤412:当定时器的定时值达到第十一预设定时值时,将定时器清零,重新装载定时器,开启下一个比特位的定时后,将上述奇偶校验结果正确的8个数据位保存到串行数据缓存中,进一步地,读卡器还可以利用校验结果传输位发送奇偶校验结果正确的标识给智能卡,具体是按照约定协议将校验结果传输位转换为高电平发送智能卡,当对校验结果传输位的定时完成后,然后执行步骤414;
本步骤中,第十一预设定时值为46.5微秒,该时刻为校验结果传输位的持续时间的起始时刻。
本步骤中,按照约定协议将校验结果传输位转换为电平的具体转换方式与步骤302的描述一样,此处就不再赘述。
步骤413:此时,表明读卡器接收的数据位是无效的数据位,当定时器的定时值达到第十一预设定时值时,将定时器清零,重新装载定时器,开启下一个比特位的定时后,读卡器按照约定协议将校验结果传输位转换为低电平发送给智能卡,并丢弃临时数据缓存中保存的8个数据位,当对校验结果传输位的定时完成后,然后执行步骤414;
本步骤中,按照约定协议将校验结果传输位转换为电平的具体转换方式与步骤302的描述一样,此处就不再赘述。
步骤414:当定时器的定时值达到第十二预设定时值时,将定时器清零,重新装载定时器,重新开始计时,然后接收停止位即当前字符帧的第十二个比特位,当定时器的定时值达到预定时间,具体为93微秒时,完成停止位的接收,此时,将IO驱动为高电平,以备后续数据的接收,当前字节接收流程结束;
本实施例中,第十二预设定时值为93微秒,该时刻为停止位的持续时间的起始时刻。
步骤415:读卡器将上述8个数据位保存到串行数据缓存中;
步骤416:当定时器的定时值达到第十一预设定时值时,将定时器清零,重新装载定时器,重新开始计时,然后接收停止位,即当前字符帧的第十一个比特位,当定时器的定时值达到预定时间,具体为93微秒时,完成对停止位的接收,此时,保持IO电平为高电平,以备后续数据的接收,当前字节接收流程结束。
本步骤中,第十一预设定时值为46.5微秒,该时刻为停止位的持续时间的起始时刻。
本实施例中,定时器的定时值是否达到第一预设定时值至第十二预设定时值中的任一个,都是通过中断标记来判断的,具体为:当中断标记为1时,所述定时时间到,并在数据采样或发送数据后将该中断标记清零。
本实施例中,步骤401至步骤416中,所有涉及采样IO电平的操作,读卡器内部的操作实现包括:
如果读卡器与智能卡之间采用的是正向协议,读卡器采样IO电平,如果IO电平是高电平则代表1,则此时IO电平的采样值是1,若IO电平是低电平则代表0,则此时IO电平的采样值是0;
如果读卡器与智能卡之间采用的是反向协议,读卡器采样IO电平,如果IO电平是高电平则代表0,则此时IO电平的采样值是0,如果IO电平是低电平则代表1,则此时IO电平的采样值是1。
上述所有实施例中任一个包含采样的步骤中涉及的采样,均可以预设一个采样点,或多个采样点。优选地,可以预设当前位持续时间的中间处作为最佳采样点,如果设置多个采样点,则偏移值可以根据需要来设置。以一个位持续时间为372个时钟周期为例,参考图1,传输字符长度为11个比特位,设置起始位的最佳采样点为0.5个位持续时间处,则此时的时钟计数值是186,8个数据位的最佳采样点分别为:1.5、2.5、3.5、4.5、5.5、6.5、7.5、8.5个位持续时间处,对应的时钟计数值分别是:558、856、1228、1600、1972、2344、2716、3088,奇偶校验位的最佳采样点为9.5个位持续时间,设置停止位的最佳采样点为10.5个位持续时间。参考图2,传输字符长度为12个比特位,设置校验结果传输位的最佳采样点为10.5个位持续时间,停止位的最佳采样点为11.5个位持续时间,其余的采样点均与11个比特位的传输字符的设置相同。当预设多个采样点时,采样点的个数可以根据需要设置为不同的值,如3个、7个、8个等等,且该多个采样点之间的间隔也可以根据需要进行设置,如设置3个采样点:0.3个位持续时间、0.5个位持续时间、0.7个位持续时间,任意两个采样点之间均相隔0.2个位持续时间。
下面以对IO电平进行3次采样为例,详细说明本发明实施例中计数方式的采样过程,参见图5,以两个计数器分别记录采样到1的个数和采样到0的个数,该采样过程具体如下:
步骤501:读卡器接收智能卡传输的IO电平;
步骤502:读卡器开启时序控制器,并将第一计数器清零Cnt_1=0,第二计数器清零Cnt_2=0;
其中,时序控制器是用来控制时序,进行电平采样的,第一计数器用来记录采样到的1的个数,第二计数器用来记录采样到的0的个数。
步骤503:当时序控制器的值达到预设控制值中的第一个采样值时,对当前IO电平进行第一次采样;
步骤504:判断第一次采样值是否为1,即IO电平是否为高电平,如果是,则执行步骤505,否则,采样值为0,即IO电平为低电平,则执行步骤506;
步骤505:将第一计数器的计数值加1,Cnt_1+=1,记录采样到一个1,然后执行步骤507;
步骤506:将第二计数器的计数值加1,Cnt_2+=1,记录采样到一个0,然后执行步骤507;
步骤507:当时序控制器的值达到预设控制值中的第二个采样值时,对当前IO电平进行第二次采样;
步骤508:判断第二次采样值是否为1,如果是,则执行步骤509,否则,执行步骤510;
步骤509:将第一计数器的计数值加1,Cnt_1+=1,记录采样到一个1,然后执行步骤511;
步骤510:将第二计数器的计数值加1,Cnt_2+=1,记录采样到一个0,然后执行步骤511;
步骤511:当时序控制器的值达到预设控制值中的第三个采样值时,对当前IO电平进行第三次采样;
步骤512:判断第三次采样值是否为1,如果是,则执行步骤513,否则,执行步骤514;
步骤513:将第一计数器的计数值加1,Cnt_1+=1,记录采样到一个1,然后执行步骤515;
步骤514:将第二计数器的计数值加1,Cnt_2+=1,记录采样到一个0,然后执行步骤515;
步骤515:判断经过三次采样后,第一计数器的计数值是否大于第二计数器的计数值,如果大于,则执行步骤516,否则,执行步骤517;
步骤516:表明采样到的1的个数多于采样到的0的个数,即1出现的次数最多,因此,将1作为当前比特位的最终有效采样值,结束当前比特位的采样;
步骤517:表明采样到的0的个数多于采样到的1的个数,即0出现的次数最多,因此,将0作为当前比特位的最终有效采样值,结束当前比特位的采样。
上述预设控制值(参见图2)可以是第一预设控制值、第二预设控制值、……。
本实施例中,所有涉及采样IO电平操作,读卡器内部的操作实现包括:
如果读卡器与智能卡之间采用的是正向协议,读卡器读取IO电平,如果IO电平是高电平则代表1,则此时IO电平的采样值是1,若IO电平是低电平则代表0,则此时IO电平的采样值是0;
如果读卡器与智能卡之间采用的是反向协议,读卡器读取IO电平,如果IO电平是高电平则代表0,则此时IO电平的采样值是0,如果IO电平是低电平则代表1,则此时IO电平的采样值是1。
参见图6,本发明实施例还提供了一种读卡器,包括:
时序控制模块601,用于当检测到智能卡的传输信号的下降沿时,开始控制时序;
采样模块602,用于当时序控制模块601的值依次达到第一预设控制值值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值时,依次采样智能卡输出的电平,并按照约定协议依次将采样到的电平作为第一个比特位、第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位、第九个比特位和第十个比特位,并将第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位拼凑成一个数据字节;
判断模块603,用于判断采样模块602在时序控制模块601的值达到第一预设控制值时采样到的电平是否为低电平,如果是,则通知采样模块继续采样,否则,结束;
存储模块604,用于保存采样模块602得到的数据字节;
校验模块605,用于根据预设的校验方式处理采样模块602采样到的第十个比特位,并用所述处理后的第十个比特位对存储模块存储的数据字节进行校验。
本实施例中,时序控制模块601具体为计数器或定时器。
当时序控制模块601是计数器时,开启时序控制器具体为:将计数器清零,开始计数。相应地,第一至第十预设控制值是根据时钟率转换因子和波特率调整因子预先设定的不同的计数值。并且,第一至第十预设控制值中的任一项可以是一个计数值或多个计数值,当为多个计数值时,将多次采样得到的多个采样值中出现次数最多的值作为最终有效采样值。
当时序控制模块601是定时器时,开启时序控制器具体为:加载定时器,清零并开始计时。相应地,第一至第十预设控制值中的任一项是一个计时值,且为预先根据时钟率转换因子、波特率调整因子和智能卡的时钟频率设定的,其中,第二至第十预设控制值均相同,第一预设控制值是第二预设控制值的一半。
本实施例中,预设的校验方式是偶校验或奇校验。
本实施例中,进一步地,读卡器还包括:
处理模块,用于在采样模块602对第十个比特位进行数据采样之后,如果预设的检验方式为偶校验,则按照高电平是1,低电平是0的转换方式将IO电平转换为第十个比特位,如果预设的校验方式为奇校验,则按照高电平是0,低电平是1的转换方式将IO电平转换为第十个比特位;
存储模块604具体用于将采样模块得到的数据字节保存在临时数据缓存中,校验模块605具体包括:
判断单元,用于判断是否需要对临时数据缓存中的数据进行确认;
第一处理单元,用于如果判断单元判断出需要确认,则根据处理模块得到的第十个比特位,判断临时数据缓存中的数据字节是否正确,如果正确,则通知存储模块将临时数据缓存中的数据字节保存到串行数据缓存中,如果不正确,则发送一个低电平给智能卡,并通知存储模块丢弃临时数据缓存中的数据字节;
第二处理单元,用于如果判断单元判断出不需要确认,则通知存储模块将临时数据缓存中的数据保存到串行数据缓存中。
进一步地,校验模块还可以包括:
第三处理单元,用于在第一处理单元按照约定协议将第十一个比特位转换为相应的电平后发送给智能卡之后,将IO电平驱动为高电平。
本发明实施例提供的上述技术方案,在不考虑智能卡的时钟频率的情况下,通过计数智能卡的时钟频率的个数或通过定时位持续时间,来完成对时序的控制,并简化了读卡器的程序结构,提高了读卡器与智能卡卡之间数据收发的稳定性,可以实现更精准的时序控制,降低了时序控制的复杂度和通讯误码率,同时代码还可以任意移植,具有良好的可移植性。时序控制可以采用计数或者计时的方式,具有较高的灵活性。上述技术方案完全实现了一个与智能卡时钟频率无关的一个时序控制平台,只要能够获取到卡片的参数F和D,就可以使用在任何的硬件平台的读卡器上。
本发明实施例提供的上述技术方案的全部或部分可以通过程序指令相关的硬件来完成,程序可以存储在可读取的存储介质中,该存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种时序控制方法,用于读卡器接收来自智能卡的数据,其特征在于,所述方法包括:
所述读卡器检测到所述智能卡的传输信号的下降沿时,开启时序控制器;
当所述时序控制器达到第一预设控制值时,采样所述智能卡输出的电平,将所述采样到的电平作为第一个比特位并判断所述采样到的电平是否是低电平,如果是低电平,则继续接收数据,如果不是,则结束;
当所述时序控制器依次达到第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值和第九预设控制值时,依次采样所述智能卡输出的电平,并按照约定协议将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位拼凑成一个数据字节,并保存;
当所述时序控制器达到第十预设控制值时,采样所述智能卡输出的电平,并按照所述约定协议将所述采样到的电平转换为第十个比特位,并用所述第十个比特位校验已保存的所述数据字节。
2.根据权利要求1所述的方法,其特征在于,所述约定协议包括正向协议和反向协议;所述依次采样所述智能卡输出的电平,并按照约定协议将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位拼凑成一个数据字节,并保存具体包括:
当所述约定协议是正向协议时,按照高电平是1,低电平是0的转换方式,将依次采样到的电平转换为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从高位到低位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最高位,并保存所述数据字节;
当所述约定协议是反向协议时,按照高电平是0,低电平是1的转换方式,将依次采样到的电平转换为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从低位到高位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最低位,并保存所述数据字节;
或
当所述约定协议是反向协议时,按照高电平是1,低电平是0的转化方式,将依次采样到的电平作为第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位按照从高位到低位的顺序拼凑成一个数据字节,且所述第二个比特位为所述数据字节的最高位,并将所述数据字节中的比特位按照1转换为0,0转换为1的方式进行取反后逆序保存。
3.根据权利要求1所述的方法,其特征在于,所述时序控制器是计数器,所述开启时序控制器具体为:将所述计数器清零,开始计数。
4.根据权利要求3所述的方法,其特征在于,所述第一预设控制值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值是根据时钟率转换因子和波特率调整因子预先设定的不同的计数值。
5.根据权利要求4所述的方法,其特征在于,所述第一预设控制值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值中的任一项是一个计数值或多个计数值。
6.根据权利要求5所述的方法,其特征在于,当所述任一项是多个计数值时,将多次采样得到的多个采样值中出现次数最多的值作为最终有效采样值。
7.根据权利要求1所述的方法,其特征在于,所述时序控制器是定时器,所述开启时序控制器具体为:加载所述定时器,清零并开始计时。
8.根据权利要求7所述的方法,其特征在于,所述第一预设控制值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值中的任一项是一个计时值,且为预先根据时钟率转换因子、波特率调整因子和智能卡的时钟频率设定的,其中,所述第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值均相同,所述第一预设控制值是所述第二预设控制值的一半。
9.根据权利要求1所述的方法,其特征在于,所述用所述第十个比特位校验已保存的所述数据字节,包括:
根据预设的校验方式处理所述第十个比特位,并用处理后的第十个比特位校验已保存的所述数据字节,其中,所述预设的校验方式是偶校验或奇校验。
10.根据权利要求1所述的方法,其特征在于,所述按照所述约定协议将所述采样到的电平转换为第十个比特位,并用所述第十个比特位校验已保存的所述数据字节,具体包括:
当所述约定协议是正向协议时,按照高电平是1,低电平是0的转换方式,将采样到的电平转换为第十个比特位;
当所述约定协议是反向协议时,按照高电平是0,低电平是1的转换方式,将采样到的电平转换为第十个比特位;
判断是否需要对已保存在临时数据缓存中的所述数据字节进行确认;
如果需要确认,则利用所述第十个比特位判断所述临时数据缓存中的所述数据字节是否正确,如果正确,则将所述临时数据缓存中的所述数据字节保存到串行数据缓存中,如果不正确,则将第十一个比特位按照所述约定协议转换为低电平发送给所述智能卡,并丢弃所述临时数据缓存中的所述数据字节;
如果不需要确认,则将所述临时数据缓存中的所述数据字节保存到串行数据缓存中。
11.根据权利要求10所述的方法,其特征在于,所述将第十一个比特位按照所述约定协议转换为低电平发送给所述智能卡之后,还包括;
将电平驱动为高电平。
12.一种读卡器,其特征在于,所述读卡器包括:
时序控制模块,用于当检测到智能卡的传输信号的下降沿时,开始控制时序;
采样模块,用于当所述时序控制模块的值依次达到第一预设控制值值、第二预设控制值、第三预设控制值、第四预设控制值、第五预设控制值、第六预设控制值、第七预设控制值、第八预设控制值、第九预设控制值和第十预设控制值时,依次采样所述智能卡输出的电平,并按照约定协议依次将采样到的电平作为第一个比特位、第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位、第九个比特位和第十个比特位,并将所述第二个比特位、第三个比特位、第四个比特位、第五个比特位、第六个比特位、第七个比特位、第八个比特位和第九个比特位拼凑成一个数据字节;
判断模块,用于判断所述采样模块在所述时序控制模块的值达到所述第一预设控制值时采样到的电平是否是低电平,如果是低电平,则通知所述采样模块继续采样,否则,结束;
存储模块,用于保存所述采样模块得到的所述数据字节;
校验模块,用于根据预设的校验方式处理所述采样模块采样到的第十个比特位,并用所述处理后的第十个比特位对所述存储模块存储的数据字节进行校验。
13.根据权利要求12所述的读卡器,其特征在于,所述时序控制模块具体为计数器或定时器。
14.根据权利要求12所述的读卡器,其特征在于,
所述存储模块具体用于将所述采样模块得到的所述数据字节保存在临时数据缓存中;
所述校验模块具体包括:
处理单元,用于在所述采样模块对所述第十个比特位进行数据采样之后,如果所述预设的校验方式是偶校验,则对所述第十个比特位不做任何处理,如果所述预设的校验方式是奇校验,则对所述第十个比特位进行取反处理;
判断单元,用于判断是否需要对所述临时数据缓存中的数据进行确认;
第一处理单元,用于如果所述判断单元判断出需要确认,则根据所述处理单元得到的所述第十个比特位判断所述临时数据缓存中的数据字节是否正确,如果正确,则将第十一个比特位按照所述约定协议转换成高电平发送给所述智能卡,并通知所述存储模块将所述临时数据缓存中的数据字节保存到串行数据缓存中,如果不正确,则将第十一个比特位按照所述约定协议转换成低电平发送给所述智能卡,并通知所述存储模块丢弃所述临时数据缓存中的数据字节;
第二处理单元,用于如果所述判断单元判断出不需要确认,则通知所述存储模块将所述临时数据缓存中的数据字节保存到串行数据缓存中。
15.根据权利要求14所述的读卡器,其特征在于,所述校验模块还包括:
第三处理单元,用于在所述第一处理单元将第十一个比特位按照约定协议转换为低电平发送给所述智能卡之后,将IO电平驱动为高电平。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102369880A CN101789069B (zh) | 2009-10-30 | 2009-10-30 | 时序控制方法和读卡器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102369880A CN101789069B (zh) | 2009-10-30 | 2009-10-30 | 时序控制方法和读卡器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101789069A CN101789069A (zh) | 2010-07-28 |
CN101789069B true CN101789069B (zh) | 2012-06-27 |
Family
ID=42532275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102369880A Active CN101789069B (zh) | 2009-10-30 | 2009-10-30 | 时序控制方法和读卡器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101789069B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104734810A (zh) * | 2012-06-07 | 2015-06-24 | 飞天诚信科技股份有限公司 | 一种处理传输数据的方法和装置 |
CN109977062A (zh) * | 2019-03-14 | 2019-07-05 | 建荣半导体(深圳)有限公司 | 一种软件实现串行数据接收的方法、装置及电子设备 |
CN112149082A (zh) * | 2019-06-26 | 2020-12-29 | 天地融科技股份有限公司 | 一种办公系统安全控制方法、装置及系统 |
CN111190540B (zh) * | 2019-12-25 | 2021-06-04 | 晶晨半导体(上海)股份有限公司 | 内存接口写入均衡的控制方法及装置 |
-
2009
- 2009-10-30 CN CN2009102369880A patent/CN101789069B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101789069A (zh) | 2010-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1677973B (zh) | 在rfid和远程传感器系统中数据传输的方法 | |
CN101789069B (zh) | 时序控制方法和读卡器 | |
EP1845475A1 (en) | Communication medium, communication medium processing apparatus, and communication medium processing system | |
US20070236331A1 (en) | Preventing timeout of RFID tag in timed state of air-interface protocol | |
CN101495972A (zh) | 具有单步读取和写入命令的rf标签系统 | |
CN102546107B (zh) | 接触式卡片与读卡设备间的数据传输方法、系统和转接卡 | |
CN101093549B (zh) | 射频识别系统的读写器的数据读取及标签的数据发送方法 | |
CN103077366B (zh) | 多通道数据接口射频识别装置及数据传输方法 | |
CN104320317A (zh) | 一种以太网物理层芯片状态的传送方法和装置 | |
Yoon et al. | ISS-TCA: An identified slot scan-based tag collection algorithm for performance improvement in active RFID systems | |
CN107153412B (zh) | 一种具有发送fifo的can总线控制器电路 | |
CN101398882A (zh) | 写入装置、管理装置、标签生成系统以及信息写入方法 | |
CN100498753C (zh) | 通过i2c接口访问现场可编程门阵列内部存储器的方法 | |
CN102156846B (zh) | 用于射频识别的阅读器与标签的信息传输方法及装置 | |
CN102768733B (zh) | 适用于rfid系统的多标签防碰撞算法、rfid系统及读写器 | |
CN116506530B (zh) | 一种误码率低的多协议rfid读写器 | |
CN101702195B (zh) | 时序控制方法和读卡器 | |
CN102332083B (zh) | 用于射频识别的阅读器与标签的信息传输方法及装置 | |
CN103809918A (zh) | 储存媒体、存取系统及方法 | |
US9041513B1 (en) | System and method for communicating with sensors/loggers in integrated radio frequency identification (RFID) tags | |
CN104361308A (zh) | 一种基于stm32的手持式二维码识别器 | |
CN113875162B (zh) | Nfc读取器与双nfc接口应答器之间的数据交换装置 | |
US20220138444A1 (en) | Radio frequency identification communication method for collision reduction with low power consumption and radio frequency identification communication system using the same | |
CN209625207U (zh) | 一种物联网信息感知soc芯片系统 | |
JP4683517B2 (ja) | 携帯可能情報処理装置の非接触通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |