FM1702sl终于调通小结

  • 先发个牢骚

    前段时间着手调试fm1702sl的刷卡器,真是费了好一番功夫,首先对于这款芯片其实不应该算很难的,但是拿到fm1702sl的芯片手册,打开一看却是一头雾水,整整列出了几十个寄存器,但是没有相关的说明,对于寄存器的操作步骤和大概流程也没有,完全无从下手,只能从网上下载一些参考程序,第一版是从周立功那得到的参考程序,参照其流程移植过来,大概理解了该芯片的操作流程,但是发现里面对IC卡的命令也没有解释,所以又在网上搜索关于1443A的协议和Mifare 1卡的相关说明,更坑的是周立功给的参考程序,时钟无法寻到卡,硬件软件反复查看都没有结果,最后从复旦微官网上重新下载了一份程序,重要通信成功,但对于周立功的参考程序到底错在哪,等我完成该项目后,或者抽空好好盘查一下,折腾一段时间后,终于对刷卡器的整个流程有了大致的了解。

  • 大概介绍下流程

    回头看的时候,好像都没有刚开始接触时觉得那么难,现在看来流程还是听清晰的。首先是上电复位的过程,给复位脚一个下降沿,然后是初始化SPI的接口方式,如下图截取的步骤,然后是配置时钟定时器,关闭中断,打开天线,选择卡片类型,到此,初始化基本完成,参考程序网上都能找到。

    初始化完成后,就可以尝试对卡的操作了,操作流程如下图所示,寻卡–>防冲突–>选卡–>认证–>读写卡等,我在寻卡阶段卡了好久,一旦调通以后,后面的过程就比较顺畅了。下面对每个过程做个大概的介绍,加深下自己的印象,寻卡的命令为0x52(WAKE_UP)或0x26(REQUEST),其意义正如下图所示, 另一个解释是0x52是ALL模式,对天线范围内的所有卡操作,0x26是IDLE模式,只选择天线范围内IDLE模式的卡,与卡通信数据格式:data[0]=0x52,如果正常,卡会返回两个字节的卡类型,0x04代表Mifare 1卡。防冲突和选卡是命令都是0x93,但后面所带的数据不同,防冲突的数据格式是:data[0]=0x93,data[1]=0x20,如果正常,卡会返回卡的1字节卡的系类号位数和4字节卡系列号,选卡的数据格式是:data[0]=0x93,data[1]=0x70,data[2]-data[6]为读回的卡系列号,如果正常,卡会返回一字节的卡容量(0x08或0x88)。要对卡片的EEPROM进行读写操作,还需要经过密钥的三重认证,1、通过LoadKeyE2或者LoadKey加载密钥到内部密钥缓冲器,2、启动Authen1(0x0C),数据格式:data[0]=0x60(A认证方式)或0x61(B认证方式),data[1]=扇区号,data[2]-data[5]为卡系列号,结束后,检查错误标志位判断执行结果,3、启动Authen2(0x14)数据格式为空,结束后,检查错误标志位以及CrtptolOn标志判断执行结果。
    FM1702sl终于调通小结_第1张图片

你可能感兴趣的:(FM1702sl读卡器开发)