1、 智能卡网吧收费机设计智能卡网吧收费机设计(二)(二)逻辑加密卡接口电路与复位应答逻辑加密卡接口电路与复位应答教学目标q SLE4442卡硬件接口电路设计与实现q SLE4442卡复位应答功能分析与实现 产品开发智能卡网吧收费机q开发任务:设计智能卡网吧收费机q卡型:SLE4442q智能卡网吧收费机功能分析 1、判断卡的合法性 2、上网计时收费产品开发之第二步:产品开发之第二步:接口电路与复位功能的实现接口电路与复位功能的实现q智能卡网吧收费机功能模块:MCU(AT89S51)IC卡读写接口电路(SLE4442逻辑加密卡)显示串行通信接口电路PC机稳压电源RSTI/OCLK接口电路设计SLE4
2、442引脚分配C1:Vcc(Supply Voltage)C2:RST(Reset)C3:CLK(Serial Clock)C4:(NC)C5:GNDC6:I/O(Bidirectional serial data,open drain)C7:(NC)C8:(NC)C1C1C2C2C3C3C4C4C5C5C6C6C7C7C8C8VccVccRSTRSTCLKCLKN.C.N.C.GNDGNDN.C.N.C.I/OI/ON.C.N.C.VccGNDI/ORSTSW2CLKSW189C51P1.0P1.1P1.6P1.7P1.2R11.2K9012PNP+5V+5VR210K*4SMARTADPS
3、LE4442卡接口电路SLE4442卡复位功能的实现卡复位功能的实现q如何为网吧卡提供稳定可靠的复位信号,启动网吧卡工作?按国际标准ISO/IEC7816的同步传送协议为SLE4442卡提供同步复位信号VCCVCCRSTRSTCLKCLKI/OI/O012303132D0D1D2D30D31地址复位芯片置I/O线于状态Z复位和复位响应时序(Reset and Answer-to-Reset)SLE4442上电后,读写器首先应给出复位(Reset)命令并等待接收来自卡的复位响应ATR(Answer-To-Reset当RST为高时,送第一个时钟脉冲(脉冲0)使地址计数器清0。当RST线从高状态(H
4、状态)置到低状态(L状态)时,第一个数据位(主存储器字节0的LSB)的内容被送到I/O上。若连续输入32个时钟脉冲(脉冲132),主存储器中的前4个字节(4*8位=32位)地址单元中的内容被读出在第 33个时钟脉冲(脉冲32)的下降沿,IO线被置成高阻状态(状态Z)而关闭等待接收命令/*sle4442 Reset*/void sle4442_reset(void)uchar i=0;CLK=0;/init resetRST=0;IO=0;delay_12us();/tPOR RST=1;/reset pulsedelay_12us();CLK=1;/clock pulse0delay_12us
5、();CLK=0;delay_12us();RST=0;delay_12us();for(i=0;i=1;/右移,低位在前,D7=0SLECLK=1;if(IO)rbyte|=0 x80;/若IO=1,D7=1否则D7=0 delay_us(4);SLECLK=0;delay_us(4);return(rbyte);/返回从4442卡读入的1B数据/*MCU从4442卡读入一个字节*/char sle4442_si(void)/read a byteuchar rdata=0,j=0;IO=1;/拉高数据总线准备读入for(j=0;j1;/右移,低位在前,D7=0CLK=1;delay_us(
6、2);if(IO=1)rdata=rdata+128;/若IO=1,D7=1否则D7=0delay_us(2);CLK=0;delay_us(6);return(rdata);/返回从4442卡读入的1B数据/*sle4442 ATR*/uchar atr4;/全局变量 void sle4442_reset(void)uchar i;CLK=0;/init resetRST=0;IO=0;delay_us(12);/tPOR RST=1;/reset pulsedelay_us(12);CLK=1;delay_us(12);CLK=0;delay_us(12);RST=0;delay_us(1
7、2);for(i=0;i4;i+)atri=sle4442_si();/读入4B ATRCLK=1;/additional pulsedelay_us(4);CLK=0;delay_us(4);IO=1;/升高数据总线,进入准备状态第一阶段:编程与调试第一阶段:编程与调试1、编写SLE4442卡复位应答子程序ATR,将SLE4442卡复位应答读入到数组atr中。2、根据实训设备接触式IC卡接口电路图设置51单片机引脚分配,编写并编译SLE4442卡控制主程序(复位应答功能)。3、在调用ATR后设置断点,打开DATA窗口,运行程序,查看数组atr数据并记录在报告上。第二阶段:现象与判断第二阶段:
8、现象与判断1、ATR正确:atr=0 xA2,0 x13,0 x80,0 x91(SLE4442卡复位应答码,即主存储器前4个字节)2、ATR错误:现象一:atr数据不变现象二:atr数据为全0现象三:atr数据与ATR码部分相符现象四:程序死循环,不能运行到断点处第三阶段:纠错排障(第三阶段:纠错排障(1)现象一:atr数据不变判断:RST不成功、ATR信号未能送至IO脚、ATR数据未能传送到单片机片内RAM可能的故障原因:1)单片机引脚分配与实际硬件电路不符2)RST程序段错误,未能产生正确的RST信号3)RST或CLK端电平不满足TTL电平要求。4)读入ATR后传送ATR到atr的程序段
9、出错根据电路图检查引脚分配对照RST时序检查RST程序段用万用表测试RST、CLK电平,检查是否屏蔽外加时钟检查指针i初值第三阶段:纠错排障(第三阶段:纠错排障(2)现象二:atr数据为全0判断:RST成功但读入ATR数据时未能拉高IO可能的故障原因:1)IO线未外接上拉电阻2)读ATR数据前未将IO线置高运行调试语句置位IO,用万用表检测IO线是否被拉高检查读入ATR循环前是否置位IO第三阶段:纠错排障(第三阶段:纠错排障(3)现象三:atr数据与ATR码部分相符判 断:R S T 成 功 但 读 入 数 据 函 数 c h a r sle4442_si(void)错误可能的故障原因:1)c
10、har sle4442_so(void)函数延时时间太短2)传送ATR时未修改数组指针跟踪进入char sle4442_si(void)函数,单步运行,若能正常读入ATR则表明需加延时时间打开watch窗口,在读ATR循环前设置断点运行检查循环指针i第三阶段:纠错排障(第三阶段:纠错排障(4)现象四:程序死循环,不能运行到断点处判断:程序中的循环子程序错误可能的故障原因:1)读ATR循环跳转时重复设置循环计数器2)延时子程序循环跳转时重复设置循环计数器打开watch窗口,在ATR循环跳转语句设置断点运行检查每次循环,指针i不变表明指针被重置初值打开watch窗口,跟踪进入延时子程序运行检查每次循环,指针j不变表明指针被重置初值