IC卡保险箱

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

广州周立功单片机发展有限公司TEL(020)3873097638730977FAX:38730925卡保险箱(DEMO板)的过程该保险箱是利用P87LPC764做处理器另扩展1片E2PROM组成的应用系统该保险箱具有如下功能卡号自学习读卡出错计数和非法卡计数达到设定次数保险箱死锁控制该保险箱有权限和功能不同3种卡(1)用户卡最终用户开箱用权限最低(2)客户卡分配用户卡给指定的保险箱(3)超级卡用于死锁后开箱用权限最高一件电路原理(一)系统功能分析该保险箱至少应该具有如下部分IC卡电源卡读写电路电机驱动部分系统功能模块如图1所示IC卡读写电路E2PROMP87LPC764电机驱动锁电源IC卡接口电路IC卡图1系统框图(二)硬件电路设计分析因为是试验性DEMO板我们略去了电源和电机驱动部分仅对IC卡读写电路部分作介绍IC卡读写电路如图2所示P0.01P1.72P1.63P1.5/RST4Vss5P2.16P2.07INT1/P1.48P1.39P1.210P1.111P1.012P0.713P0.614Vdd15P0.516P0.417P0.318P0.219P0.120U1P87LPC764A01A12A23Vss4SDA5SCL6WP7Vdd8U2CAT24WC02C122uFR110KR210KR310KC2104VCCVSSVSSINVALIDRSTVSSCLK1234567S1IC卡插座VSSVicCLKRSTI/OCARDVSSI/OCARDVCCC3104D11N4148DEADVSSVicD2D4D3R4300R5300R6300LOCKDEADINVALIDLOCKVCC红黄绿STUDYD5红R7300STUDY图2IC卡读写电路在这部分扩展了1片E2PROM(24WC02)是用来保存锁的状态信息当卡掉电以后E2PROM可以把当前锁内的信息保存下来等到下次插卡上电CPU再从其中读出锁的信息E2PROM和CPU之间采用I2C总线结构IC卡插入信号线接到CPU的INT1管脚上当IC卡插入插座时CARD和VSS地短接产生一下降沿触发外部中断程序就可以进入到处理部分为了直观地看到开锁死锁非法卡等信息我们在控制电机驱动的管脚上接了发光二极管参见图2P0.0口所接的DEAD信号LED(红)亮表示已经死锁P0.2所接的INVALID信号LED(黄)亮表示当前插入的卡是非法卡或者无效卡P0.3口所接的LOCK信号(绿)亮则表示开锁动作P0.4口所接的STUDY信广州周立功单片机发展有限公司TEL(020)3873097638730977FAX:38730925(红)则用来指示学习状态二程序设计(一)工作流程分析在平时保险箱的锁都处于等待状态等待卡的插入一旦卡插入CPU便根据卡的合法与否执行相应的程序比如开锁学习警告等插卡后的工作流程可以结合图3来理解对任何保险箱而言开锁都是一个不确定的事件也就是说CPU执行开锁程序是一个不确定的事件对于这种不确定事件的处理一般都当作中断来看待整个设计几乎都在处理中断硬件中把这个中断安排为外部中断1从图3中可以看到程序流程并不复杂读出IC卡和E2PROM中的数据判别后进行相应的操作如开锁写E2PROM等是合法卡吗?插入卡错误计数器加1死锁条件?非法警告死锁NoYes退出开锁切断电源把当前ID作为合法ID,读入锁内Yes完成信号指示恢复锁为初态读入锁的信息死锁了吗?学习状态吗?读入卡号YesNoNo恢复锁为初态信息写到E2PROM把锁置成学习状态信息写到E2PROM信息写到E2PROMNo信息写到E2PROM超级卡吗?客户卡吗?No用户卡吗?NoYesYes死锁了吗?NoYesNoYesYes死锁信号图3工作流程图(二)主程序流程分析整个工作过程不难发现在等待插卡的状态下CPU几乎可以不要做任何事情因而这个设计的主程序很短所完成的也就仅仅是对锁的初始化主程序流程图参见图4广州周立功单片机发展有限公司TEL(020)3873097638730977FAX:38730925页开始初始化(开中断)空操作,等待中断写入超级卡卡号锁状态初值写入客户卡卡号写入用户卡卡号(默认)状态字保护区00H02H超级卡号区10H1FH客户卡号区20H2FH用户卡号区30H3FH其中:00H学习状态标志01H错误计数器02H死锁标志PROM存储单元规划表1E2图4主程序流程图(三)器件说明1.E2PROM选用CAT24WC02支持I2C总线周立功单片机发展有限公司已经开发出专门的I2C软件包在对24WC02进行读写操作的时候只需要调用该软件包就可以了程序结束处的$INCLUDE(VI2C_24A.INC)就是调用该软件包需要注意的是在调用之前必须按照软件包的要求定义好入口出口参数E2PROM用来保存锁的信息我们需要对其内部存储单元进行规划程序中是按照表1所示来规划的程序对这些单元进行操作2.SLE4442卡SLE4442是逻辑加密卡它具有2K位的存储容量支持2总线连接协议(串行口满足ISO7816同步传送协议)其触点安排如图5引脚的定义和功能见表2图5SLE4442触点示意图广州周立功单片机发展有限公司TEL(020)3873097638730977FAX:38730925双向数据线(漏极开路)8C8NC未用SLE4442采用多存储器结构主要包括3个存储器(参见图6)(1)256x8位E2PROM型主存储器地址0~31为保护数据区该区数据读出不受限制写入受保护存储内部数据状态的限制当保护存储器中第N位(N=0~31)为1时对应主存储器中第N个字节允许进行擦除和写入操作地址32~255后244字节为应用数据区数据读出不受限制擦除和写入受加密存储器数据校验结果的影响这种加密校验的控制是对整个主存储器实施的(即包括保护数据区和应用数据区)(2)32x1位PROM型保护存储器一次性编程以保护主存储器保护数据区防止一些固定的标识参数被改动保护存储器同样受加密存储器数据校验结果的影响(3)4x8位E2PROM型加密存储器第0字节为密码输入错误计数器(EC)EC的有效位是低三位芯片初始化时设置成111这一字节是可读的EC的123字节为参照字存储区这3个字节的内容作为一个整体被称为可编程加密代码(PSC)其读出写入和擦除均受自身比较操作结果的控制图6芯片内部逻辑结构SLE4442读写均有严格的时序和特定的数据传输格式特作如下说明广州周立功单片机发展有限公司TEL(020)3873097638730977FAX:38730925页(1)复位和复位响应复位和复位响应是根据ISO7816-3标准来进行的(参见图7)在操作期间的任意时候都可以复位开始地址计数器随一个时钟脉冲而被设置为零当RST线从高状态(H)置到低状态(L)时,第一个数据位(LSB)的内容被送到I/O上若连续输入32个时钟脉冲主存储器中的前四个字节地址单元中的内容被读出在第33个始终脉冲的下降沿I/O线被置成高状态而关闭图7复位和复位响应时序图(2)命令模式复位响应以后芯片等待着命令每条命令都以一个启动状态开始整个命令包括3个字节随后经跟着一个附加脉冲并用一个停止状态来结束操作(时序参见图8)启动状态在CLK为高状态(H状态)期间I/O显得下降沿为启动状态停止状态在CLK为高状态(H状态)期间I/O显得上升沿为停止状态在接受一个命令之后有两种可能的模式输出数据模式(即读数据)和处理数据模式图8命令模式的时序关系注:IFD(INTERFACEDEVICE)指接口设备(3)输出数据模式图9输出数据模式的时序关系这种模式是将IC卡芯片中的数据传送个外部设备接口(IFD)的一种操作在第一个CLK脉冲的下降沿之后I/O线上的第一位数据变为有效随后每增加一个时钟脉冲芯片广州周立功单片机发展有限公司TEL(020)3873097638730977FAX:38730925线上其传送顺序从每个字节的最低位(LSB)开始当所需要的最后一个数据送出以后需要在附加一个时钟脉冲来把I/O置成高状态以便接受新的命令在输出数据期间任何启动状态和停止状态均被屏蔽掉(4)处理数据模式这种模式是对IC芯片作内部处理图10处理模式的时序关系芯片在第一个始终脉冲的下降沿将I/O线从高状态拉到低状态并开始处理此后芯片在内部连续计时计数直到第N个始终脉冲之后的附加一个时钟脉冲的下降沿I/O线再次置高完成芯片的处理过程在整个处理过程中I/O线被锁定成低状态芯片的操作命令和数据格式(1)每条命令包含三个字节其排列顺序如表3表3命令排列顺序MSB控制字LSBMSB地址字LSBMSB数据字LSBB7B6B5B4B3B2B1B0A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0(2)SLE4442芯片具有七种命令其格式和功能见表4表4命令格式及功能字节1(控制)字节2(地址)字节3(数据)功能命令模式B7~B0A7~A0D7~D030H地址数无效读主储存器输出数据模式38H地址数输入数据修改主储存器处理模式34H无效无效读保护储存器输出数据模式3CH地址数输入数据写保护储存器处理模式31H无效无效读加密储存器输出数据模式39H地址数输入数据修改加密储存器处理模式33H地址数输入数据比较校验数据处理模式注意对于每个字节来说总是从最低位LSB开始读出写入时首先传送的也是字节的最低位(LSB)对保护存储器进行修改时输入数据必须与原有数据相等才能正确保护广州周立功单片机发展有限公司TEL(020)3873097638730977FAX:38730925进行读操作的程序单独写成一个模块(SLE4442.INC)程序在需要的时候进行调用程序末尾的$INCLUDE(SLE4442.INC)就是调用这个驱动模块在调用之前需要定义好入口出口参数该设计不直接对SLE4442卡进行写操作事先用写卡器写好权限不同的卡锁只对这张卡进行识别程序中规定卡号存放在SLE4442的30H3FH单元在写卡的时候卡号必须写到这个区域(四)程序清单1.服务程序$NOMOD51$INCLUDE(REG764.INC);************和E2PROM有关的定义**********ACKBIT00H;I2C总线应答位SLADATA53H;器件从地址变量SUBADATA54H;器件子地址变量NUMBYTEDATA03H;发送接收字节变量MTDEQU30H;发送数据缓冲区首址MRDEQU40H;接收数据缓冲区首址CSI24WCXXEQU0A0H;24WC02地址SDABITP0.1;I2C数据信号SCLBITP1.2;I2C时钟信号;***************变量定义*********************ErrCntDATA55H;错误计数器STATUSDATA56H;状态寄存器,56H.1=1学习DeadLockDATA57H;死锁标志寄存器,57H.1=1死锁;***************口线定义*********************DeadBITP0.0;死锁状态指示灯InvalidBITP0.2;非法卡指示灯LockBITP0.3;锁指示灯StudyBITP0.4;学习状态指示灯;********************************************ORG0000H

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功