为了更好地理解MCU和多协议接口电路的工作,我们先来研究一下智能卡接口和与卡通信的基本步骤。我们给出了一个利用安全微控制器DS5002设计接口终端实现协议和数据传输的范例,DS8007接口电路提供信号接口、电荷泵和稳压器,为智能卡提供适当的电源。用两个芯片即可组成双智能卡接口终端。
RST和CLK信号是智能卡的输入,由接口终端(DS5002和DS8007)提供。复位信号为低电平有效,可异步复位智能卡。为了控制整个数据传输,频率范围从1MHz~5MHz的时钟信号通过终端接口连接到智能卡的时钟触点(C3)。最后,数据通过I/O触点(C7)从智能卡传输到读卡器(发送模式),或数据从读卡器传输到IC卡(接收模式)。EMV规范规定,除非I/O触点正在发送数据,否则智能卡的I/O触点应设置为接收模式。
终端接口要求
当卡插入终端时,卡触点连接到终端触点并被激活。控制器将卡复位,然后通过一串字符(请参考应答复位ATR)建立卡与终端的通信;接下来是交易处理,交易结束后,触点置于禁止状态,此后可将卡拔出或弹出。
ATR字符串建立最初的通信信息,包括指定协议、位时序和后续的数据通信信息。ATR序列包括初始化字符、TS及最大32个字节的附加字符,这些字符组合在一起,通知终端在随后的交易中如何与卡通信。而后续的数据传输也能改变某些通信参数,ATR只是建立了最基本的通信条件。
字符传输中的每一位定义为基本时间单元(ETU),ETU的时间长短与智能卡的CLK时钟周期成线性关系。ATR通信过程中的位定时称为初始ETU。
任何通信字符都包含10位数据,持续时间为10ETU。第一位是起始位,它总是低电平,起始位之前I/O默认为高电平。每个字符的最后位是校验位,由发送方决定,可能是高电平,也可能是低电平,其作用是保证整个字符中1的个数为偶数。图1给出了一个位模板的例子,每个字符由10位组成,包括1个起始位、8个数据位和1个校验位。每两个字符之间通过一个最小安全周期进行分隔。
在ISO-7816规范中,4位用于选择卡通信协议。目前16种协议中只用了两种,分别命名为T=0和T=1。这两种都是半双工模式(任何时刻,数据只能单向传输)、异步通信方式。T=0是以基于字符的通讯格式,而T=1是基于数据块的通信格式。所有兼容EMV标准的智能卡必须支持T=0或T=1协议,所有终端必须同时支持这两种协议。
当卡插入终端后,所有触点保持低电平状态,电源VCC立即加到触点C1。终端在确认电压稳定并满足规范限制后,将自身的I/O触点置成接收模式,并向卡的C3提供时钟(CLK)信号。在时钟信号开始的200个时钟周期内,终端须将I/O口置为高阻态(接收模式),卡的I/O口则置于发送模式。