模拟器件读IC卡号
市面上有些门禁一体机价格很低,原因是电路没有使用专用的IC读卡芯片,而是用模拟器件实现读IC卡号。最近做了一个这样的方案,这里分享下里面的难点。
硬件部分不做解释,主要解释下软件发送数据和接收数据的格式。
IC卡属入A类卡。卡和读卡器通讯格式如下:
读卡器发送数据的编码格式如下:
1、首先要发送WAKE-UP帧
7个数据位发送,LSB首先发送。(标准REQA的数据内容是‘26’,WAKE-UP请求的数据内容是‘52’)
通信结束
不加奇偶校验位。
图表 7‑2:REQA帧
单片机发送数据的波形如下:
1位的时间是128/13.56M=9.4us
使用RF工作场的ASK100%调制原理来产生一个如图6-2所示的“暂停(pause)”状态来进行PCD和PICC间的通信。“暂停(pause)”的时间大概2-3us,如上图所示。
根据6.4.1.3协议规定,发送的数据为
ZZXYZXYXY
第一个Z为通讯开始位,最后1位Y为通讯结束位。中间7位为0100101,即0X52命令码。
IC卡发送数据的编码格式如下:
接收的波形如下:
1位的时间是128/13.56M=9.4us
电路中加了一个三极管反向,送给单片机IO口的波形和协议规定的电压相反。
中间下降沿跳变为0,中间上升沿跳变为1.
在第一个下降沿的中间处数据传输开始,第一个上升沿跳变为起始位1,后面的16位数据为00100000 00000000,即卡类型0x0004.没有奇偶校验位。
程序检测时判断是位中间跳变后,延时1us检测IO口电平,为高表示当前位为1,为低表示当前位为0.
2、发送防碰撞命令0x93,0x20
发送格式为标准帧,
n*(8个数据位+奇数奇偶校验位),n≥1。每个数据字节的LSB首先被发送。每个数据字节后面跟随一个奇数奇偶校验位。
通信结束
图表 7‑3:标准帧
发送波形如下:
参数发送协议,发送的数据为
ZXXYZXYZXXYZZZZXYZZZY
11001001 1 00000100 0
第一个Z为通讯开始位,最后1位Y为通讯结束位。
发送的数据为0x93,0x20。
IC卡发送卡号数据波形如下:
除去起始位,总共接收45位,5个字节,每个字节包含一个奇校验位。
01100101 1 0XA6
01001100 0 0X32
11010010 1 0X4B
01110011 0 0XCE
10001000 1 0X11
4字节卡号为0XCE4B32A6,最后一字节0X11为前4字节的异或值