一种采用曼码调制的非接触IC卡读写程序编制
非接触IC卡技术已广泛应用于诸如电子交易,医疗保健凭证,驾车授权凭证,车辆加油管理系统,家居、公司办公通道,各种限权进入场所的门禁,各类电、水、热能和煤气计量表具的预付费系统,乃至宠物识别等。因其使用便捷、安全,日益为有关技术领域的工程师所关注。
图1 采用e5550/U2270B的非接触卡读写系统示意图非接触IC卡是一种接口电路。它通过卡上配置的发射机应答器振荡线圈与基站振荡线圈的耦合取得能量,通过必要的通信软件配合,保证卡与基站间实现双向数据交换,如图1所示。许多著名厂商,如Simens、Philips、Temic等半导体公司,均有各具特色、性能优异的产品。
图1 采用e5550/U2270B的非接触卡读写系统示意图
e5550的全称是标准读写识别集成电路(Standard Read/Write Identification IC),实际即是一种低频发射机应答器。它与基站读写集成电路(Read/Write Base Station IC)U2270B相匹配,构成非接触IC卡系统的核心器件。这两种器件统称为非接触式读写识别集成电路(其注册商标为IDIC,以下简称IDIC或非接触IC卡),均由德国本茨集团麾下的Telefunken半导体公司开发,目前已转由Atmel公司生产。因其工作可靠、价格低廉,不失为特定应用领域的一种优选方案。
一、 e5550/ U2270B器件组的基本性能
e5550发射机应答器的基本性能如下:
(1) 低供电电压、低功耗CMOS结构的IDIC。
(2) 发射机应答器的电源是通过非(直接)接触的线圈耦合获得。
(3) 额定的射频(RF)振荡频率范围为:100~150kHz。
(4) 发射机应答器上带有EEPROM,共分8个(存储)区,每区有33个位,故总共有264个位(见表1)。
(5) 8个(存储)区的首位分别为该区的写保护位"L"。为"1"时,该区为只读区;为"0"时,该区为既可读又可写区。
(6) 8个(存储)区中的第0区为工作方式数据存储区,通常是不发送的,而其他的7个区每个区中各有32位,即总共有224位供用户使用。
(7) 具备增强防护功能,以免非接触卡式EEPROM的误编程。
(8)每一存储区的写操作时间一般不超过50ms。
(9) EEPROM操作的一些其他选项:
· 比特率(位传送率 b/s)--RF/8,RF/16,RF/32,RF/40,RF/50,RF/64,RF/100,RF/128。
· 调制方式--二进制(BIN)、频移键控(FSK)、相移键控(PSK)、曼彻斯特码(Manchester)、双相位码(Biphase)。
· 其他--请求应答(AOR)、终止方式和口令方式。
U2270B基站读写器的基本性能如下:
(1) 载波频率fOSC范围为100~150kHz。
(2) fOSC为125kHz时,典型的数据传送率为5kb/s。
(3) 适用的调制方式为曼彻斯特码(简称曼码)和双相位码。
(4) 可由5V的稳压电源或汽车蓄电池供电。
(5) 调谐能力。
(6) 与微控制器有兼容的接口。
(7) 处于备用工作方式时,其功耗甚低。
(8) 有一向微控制器供电的输出端。
二、 非接触IC卡的读操作
现仅就IDIC通信中遇到的一些问题,并对通信的核心部分--读写操作做必要的探讨。首先申明,所谓的读写,其意分别为:基站通过MCU进行"读操作";基站通过MCU进行"写操作"。
e5550和U2270B匹配使用时,根据两者的基本特性,其调制方式只可能在曼码和双相位码中择一。不失一般性,选择曼码调制。曼码调制时数据传送的规则可用图2加以说明。
图2采用曼码调制的数据表达方式由图2可知,位数据的传送周期(1P)规定了每传送1位数据的时间是固定的,它由RF/n决定。其物理实质是微控制器通过基站与应答器中的存储器(EEPROM)进行数据的读写操作。若载波频率fOSC=125kHz,位数据传送率选RF/32,则每传送一位的时间(周期)为振荡周期的32分频,故位传送周期为:
1P=1/(125kHz×32)=256μs
根据我们得到的器件,采用曼码调制的数据,位数据"1"对应着电平下跳,位数据"0"对应着电平上跳(注意:Telefunken半导体公司提供的资料(Rev.A2,13-Oct-97)正好与此相反,故最好用前自己先测试一遍,切记!)。在一串传送的数据序列中,两个相邻的位数据传送跳变时间间隔应为1P。若相邻的位数据极性相同,则在该两次位数据传送的电平跳变之间,有一次非数据传送的、预备性的(电平)"空跳"。
电平上跳、电平下跳和两个相邻的同极性位数据之间的预备性空跳是确定位数据传送特征的判据。本判据被定义为判据一(位数据检测指标)。
非接触IC卡在读操作时,另一须关注的问题是传送的位数据序列起始标志和结束标志。厂商并未提供有关的资料,通过摸索,已基本掌握了其特征,为便于说明,请参见图3。
图3 曼码调制的数据串起始/结束标志的时序特
图3曼码调制的数据串起始/结束标志的时序特征图3中,stepcnt为读操作步序,其确切含义见表2。
假定非接触IC卡的存储器内存放的位数据序列为一非空集,则在若干位数据的跳变后,检测到一电平上跳,经过1.5P发生电平下跳,再经过0.5P又发生电平的上跳,则该上跳即为起始标志。起始标志即为结束标志。这意味着非接触IC卡的存储器内存放的数据包括起始标志(即结束标志)和位数据序列。读操作时,是首尾相接、循环执行的。
识别数据起始标志和数据结束标志,是通过参数stepcnt进行的顺序化判别,故stepcnt为读操作的判据二(首尾检测指标)。
非接触IC卡在读操作时,第三个须要关注的问题是,如何确定1.5P、1P和0.5P三个特征判据?e5550和U2270B的射频振荡频率范围在100~150kHz,当位传送率选择RF/32时,即fOSC经过32分频后,上述的三个参数在不同的fOSC时,处于什么样的范围内呢?请见表3。
由上可知,只要1.5P、1P和0.5P的间期是不重叠的。根据采用100~150kHz和110~140kHz两组数据的对比可见,使用后者更合适。另一个办法是:通过试验,找到合适的间期指数,即可依此作为电平跃变的判别阈。这样,在确保识别能力的前提下,又从工艺上降低了对于振荡回路的频率精度要求。
根据上述振荡频率的变化范围110~140kHz,将编码变化的不同间隔转化成相应的间期指数,具体如表4所列。
1.5P、1P和0.5P是识别数据起始标志、位数据序列和数据结束标志的间期特征值。通过试验,它可用间期指数prdcnt反映,故为读操作的判据三(间期检测指标)。
借助于上述的位数据检测指标、首尾检测指标和间期检测指标,非接触IC卡读操作程序的撰写便易如反掌。
三、 非接触IC卡的写操作
基站产生固定间隙的射频振荡,并通过控制两个间隙之间的振荡时间对位数据"1"和位数据"0"进行编码,持续地发送位数据流,完成写操作。写操作射频振荡波形示意如图4所示。
图4 写操作时的信号流
注:域时钟(TEMIC公司提供的资料用fC表示)为一时间间隔,若频率为125kHz,fC=1/125kHz=8μs。
图4写操作时的信号流非接触IC卡插入基站后,射频线圈的耦合产生载波振荡,利用两次相邻停振之间的不同时间间隔,区分位数据"1"和位数据"0"的编码。停振间隙约在50~150域时钟;位数据"0"的持续振荡时间间隔为24域时钟;位数据"1"的持续振荡时间间隔为56域时钟。当停振间隙结束后,持续振荡的时间间隔高于64域时钟,则IDIC退出写操作方式。
考虑到写操作启动(start)时,有一频率稳定过程,写操作停止(stop)时,有一EEPROM的写入过程约16ms,于是将start和stop两个阶段均以20ms计。图4中标注的trnssqnc为发送顺序编号,启动阶段为0,位数据流发送阶段为1,发送结束阶段为2。
基站读写器上有三个引脚:bsout、bscfe和bsin,它们的含义见表5。
向e5550写位数据时,有四种合法的数据流,具体如图5所示。其中,OP为操作类型码,包含两位,"10"表示即将进行的是写操作,"11"为终止IDIC操作码。多IDIC操作情况下,用这一特性可逐一控制应答器,使待控应答器逐一产生稳定的射频振荡。当方式数据区的第28位(usePWD)为"1"时,在写操作码"10"之后,即须将32位的口令(password)写入EEPROM的第7区。位数据流有33位,是按区写入的。其中的第一位为锁定位L,L="1"表示该区为只读区,L="0"表示该区为读写区,其余的32位为位数据。ADR为该位数据流的存放数据区,取值范围为0~7。
根据上述的载波振荡特性,利用carriercnst参数进行界定(见表6),读操作即不难实现。读写操作过程中,均使用了2μs为单位的计数值作为定时单位,目的是要使用MCS-51系列的微控制器的定时器。
结束语
通过以上说明,再认真地研读有关的技术资料,采用曼码调制的非接触IC卡读写程序便不难编制。当然,实现IDIC的完整功能,还需要其他的一些程序模块,如数据存储格式、编码的加密算法,一次读/写操作中若出错,则须重复进行读/写操作、究竟重复几次、读/写操作过程在超时后退出等,这些均可根据应用对象的需求予以相应的解决。有关采用曼码调制的非接触IC卡读写程序请见程序清单。