fm1702终于调试成功了
2013-01-08 16:34
951 查看
这是我调试过最狗屎的程序了。首先是FM1702手册写得太狗屎了,几乎就把寄存器列出来而已,原理没有什么解释的。虽然写程序不用了解很多原理但是至少把流程将清楚一点吗。出一个芯片让用户猜怎么用,这是什么意思啊?再者ISO/IEC 14443A也没有完全将命令怎么使用,我发送一个命令到底给我返回什么?你的告诉我吧。
从最上层来讲有这么一些步骤:
1.配置FM1702芯片,包括复位等
2.寻卡
1)失能接收CRC、发送CRC、奇偶校验
2)关闭加密单元
3)清空FIFO
4)发送0x52到FIFO
5)发送Transceive(0x1E)命令到Command(0x01)
6)等待FIFO的长度为2时,读出FIFO中数据(这是卡的类型)
3.读取S50卡号
1)向Command中写Idle,反正当前还运行着其他命令
2)清空FIFO
3)向RegDecoderControl(0x1A)写0x28,所有接收到的冲突位之后的数据置0
4)向RegControl(0x09)写0x08,打开加密单元
5)向FIFO写0x93、0x20
6)向Command中写Transceive
7)等待卡返回卡号,当FIFO==4时说明收到卡号并读出FIFO中的卡号
4.选卡
1)使芯片进入空闲模式,向Command中写Idle,反正当前还运行着其他命令
2)向RegChannelRedundancy(0x22)写0x0F,使能接收CRC、发送CRC、奇偶校验
3)向RegControl(0x09)写入0x08,打开加密单元
4)清空FIFO
5)向FIFO写入0x93+0x70+卡号(4个字节)+卡号的BCC校验
6)向Command中写Transceive
7)等待卡返回卡号,当FIFO==1时说明收到卡的容量并
4.密码认证
1)加载密码:改变密码格式(具体查手册),得到的12字节密码数据发送到FIFO,然后向Command写入LoadKey(0x19)加载密码到密码缓存中
2)等待1)完成后 向FIFO写PICC_AUTHENT1A(0x60)或PICC_AUTHENT1B(0x61)+块绝对地址+4字节S50卡号,然后向Command写入PCD_AUTHENT1(0x0C)进行第一步认证,等待芯片进入空闲模式
3)清空FIFO,向Command写PCD_AUTHENT2(0x14),进行认证第二步,并等待进入空闲模式
4)读RegControl(0x09)看Crypto1On位是否置1,置1表示认证成功了
5.读写S50卡
1)读:向FIFO写PICC_READ(0x30)+块得绝对地址,向Command写Transceive,等待FIFO长度为16,然后读出来
从最上层来讲有这么一些步骤:
1.配置FM1702芯片,包括复位等
2.寻卡
1)失能接收CRC、发送CRC、奇偶校验
2)关闭加密单元
3)清空FIFO
4)发送0x52到FIFO
5)发送Transceive(0x1E)命令到Command(0x01)
6)等待FIFO的长度为2时,读出FIFO中数据(这是卡的类型)
3.读取S50卡号
1)向Command中写Idle,反正当前还运行着其他命令
2)清空FIFO
3)向RegDecoderControl(0x1A)写0x28,所有接收到的冲突位之后的数据置0
4)向RegControl(0x09)写0x08,打开加密单元
5)向FIFO写0x93、0x20
6)向Command中写Transceive
7)等待卡返回卡号,当FIFO==4时说明收到卡号并读出FIFO中的卡号
4.选卡
1)使芯片进入空闲模式,向Command中写Idle,反正当前还运行着其他命令
2)向RegChannelRedundancy(0x22)写0x0F,使能接收CRC、发送CRC、奇偶校验
3)向RegControl(0x09)写入0x08,打开加密单元
4)清空FIFO
5)向FIFO写入0x93+0x70+卡号(4个字节)+卡号的BCC校验
6)向Command中写Transceive
7)等待卡返回卡号,当FIFO==1时说明收到卡的容量并
4.密码认证
1)加载密码:改变密码格式(具体查手册),得到的12字节密码数据发送到FIFO,然后向Command写入LoadKey(0x19)加载密码到密码缓存中
2)等待1)完成后 向FIFO写PICC_AUTHENT1A(0x60)或PICC_AUTHENT1B(0x61)+块绝对地址+4字节S50卡号,然后向Command写入PCD_AUTHENT1(0x0C)进行第一步认证,等待芯片进入空闲模式
3)清空FIFO,向Command写PCD_AUTHENT2(0x14),进行认证第二步,并等待进入空闲模式
4)读RegControl(0x09)看Crypto1On位是否置1,置1表示认证成功了
5.读写S50卡
1)读:向FIFO写PICC_READ(0x30)+块得绝对地址,向Command写Transceive,等待FIFO长度为16,然后读出来
相关文章推荐
- FM1702 13.56MHz RF PCB天线调试经验记录
- 终于将CVBS视频信号转SDI的转换器调试成功了
- 终于成功搭配好jlink +jlink gdb server +insight的调试环境
- J3d终于调试成功了,感觉java在UI设计方面,还是很复杂
- 纪念一下--ECLIPSE+JLINK单步调试OK6410终于成功
- 终于调试成功,在这里总结一下,怕以后忘了
- 经过一个小时的奋斗,终于调试成功
- 贪吃蛇(verilog)终于调试成功
- VMWare+Windbg双机调试终于成功!
- hibernate 3.6 小实例 经过调试半天终于成功。刚接触3.6版本头疼的看看
- STM32F103 UART4 DMA接收 终于调试成功,分享一下
- 自制6410核心板终于调试成功了
- 虽然操作麻烦,但终于成功了——fiddler抓取android http请求包,极大方便了android调用webservice的调试。
- vmware安装mac终于成功
- CUDA安装笔记(喜大普奔,终于成功了)
- 终于能够在GDB+qemu进行跟踪和调试了
- ERLANG远程启动进程终于成功!!!
- asp.net 缩略图--源码--调试成功
- 终于发布成功,再次测试
- 调试旋转编码器成功