STM32+AS3910读取14443A的UID成功, 读取14443B的UID失败, 同行可以共同探讨
官方的14443B的初始化代码如下:s8 iso14443BInitialize(u8* result)
{
u8 buf;
s8 err;
buf = 0x40;
buf = 0xd0;
/* set iso14443 mode B, lowest Rx and TX rate. Enable Rx and Tx */
err = as3910WriteMultipleRegisters(AS3910_REG_ISO_MODE, buf, 2);
EVAL_ERR_NE_GOTO(ERR_NONE, err, out);
/* enable AGC */
err = as3910ModifyRegister(AS3910_REG_RCV_CONF, 0x80, 0x80);
EVAL_ERR_NE_GOTO(ERR_NONE, err, out);
/* Set modulation depth to 10%. */
err = as3910WriteRegister(AS3910_REG_MOD_DEP_DEF, 0x1c);
EVAL_ERR_NE_GOTO(ERR_NONE, err, out);
/* calibrate modulation depth */
err = as3910CalibrateModulationDepth(result);
DEBUG_PRINT("<--iso14443BInitialize, End OK, result = 0x%02X ------\n\n", *result);
out:
return err;
}
相关的Debug流程如下:
-->as3910ExecuteCommand: cmd = 0x01
<--ReadRegister: reg = 0x07, val = 0x00
-->WriteRegister: reg = 0x07, val = 0xFF
<--ReadRegister: reg = 0x08, val = 0x00
<--ReadRegister: reg = 0x07, val = 0xFF
-->WriteRegister: reg = 0x07, val = 0x7F
<--ReadRegister: reg = 0x02, val = 0x00
-->WriteRegister: reg = 0x02, val = 0x02
<--ReadRegister: reg = 0x05, val = 0x00
-->WriteRegister: reg = 0x05, val = 0x04
<--ReadRegister: reg = 0x01, val = 0x00
-->WriteRegister: reg = 0x01, val = 0x80
<--ReadRegister: reg = 0x08, val = 0x80
<--as3910Isr: irqStatus = 0x80, as3910InterruptStatus = 0x80, as3910InterruptMask = 0x80
<--ReadRegister: reg = 0x07, val = 0x7F
-->WriteRegister: reg = 0x07, val = 0xFF
<-----as3910Initialize: Ok Return, -------
<--ReadRegister: reg = 0x06, val = 0x00
-->WriteRegister: reg = 0x06, val = 0x00
<--ReadRegister: reg = 0x01, val = 0x80
-->WriteRegister: reg = 0x01, val = 0x80
-->as3910Write MultiReg: 00 40 D0
<--ReadRegister: reg = 0x06, val = 0x01
-->WriteRegister: reg = 0x06, val = 0x81
-->WriteRegister: reg = 0x10, val = 0x1C
-->as3910ExecuteCommand: cmd = 0x17
<--ReadRegister: reg = 0x11, val = 0x80
<--iso14443BInitialize, End OK, result = 0x80 ------
-->iso14443BSelect, Start, cmd = 0x00, slotCount = 0
<--ReadRegister: reg = 0x03, val = 0x00
-->WriteRegister: reg = 0x03, val = 0x00
-->as3910PrepareReceive: Start, exec CMD_CLEAR ---
-->as3910ExecuteCommand: cmd = 0x02
<--ReadRegister: reg = 0x07, val = 0xFF
-->WriteRegister: reg = 0x07, val = 0xCB
<--as3910PrepareReceive: OK Return ----
-->as3910TxNBytes: Start, numbytes = 3, numbits = 0, frame = 05 00 00 00 00 00
<--ReadRegister: reg = 0x07, val = 0xCB
-->WriteRegister: reg = 0x07, val = 0xC3
<--ReadRegister: reg = 0x05, val = 0x04
-->WriteRegister: reg = 0x05, val = 0x06
-->WriteRegister: reg = 0x0B, val = 0xC0
-->WriteRegister: reg = 0x0C, val = 0x00
-->as3910Write FIFO: 80 05 00 00
-->as3910ExecuteCommand: cmd = 0x04
<--ReadRegister: reg = 0x08, val = 0x08
<--as3910Isr: irqStatus = 0x08, as3910InterruptStatus = 0x08, as3910InterruptMask = 0x3C
<--as3910TxNBytes: OK, numbytes = 0, numbits = 0
<--ReadRegister: reg = 0x07, val = 0xC3
-->WriteRegister: reg = 0x07, val = 0xEB
-->as3910RxNBytes, start---
<-- ???? as3910RxNBytes: Error = FIFO waterlevel or end of receive interrupt
<--ReadRegister: reg = 0x08, val = 0x00
<--ReadRegister: reg = 0x07, val = 0xEB
-->WriteRegister: reg = 0x07, val = 0xFF
-->as3910ExecuteCommand: cmd = 0x02
<--as3910RxNBytes, err = 4, length = 0, buf =
<--iso14443BSelect, End OK, err = 52
-->as3910ExecuteCommand: cmd = 0x02
<--ReadRegister: reg = 0x06, val = 0x81
-->WriteRegister: reg = 0x06, val = 0x01
<--ReadRegister: reg = 0x01, val = 0xD0
-->WriteRegister: reg = 0x01, val = 0x80 >as3910Write FIFO: 80 05 00 00
-->as3910ExecuteCommand: cmd = 0x04
<--ReadRegister: reg = 0x08, val = 0x08
<--as3910Isr: irqStatus = 0x08, as3910InterruptStatus = 0x08, as3910InterruptMask = 0x3C
发送了05 00 00 这3个字节, 也收到了发送结束的中断标志, 剩下的就是等待接受返回数据. 但总是无数据.
此硬件部分读取14443A的UID已经稳定成功, 应该可以排除硬件和底层接口的Bug. 兄弟,你这个代码及参考资料,能发我一份吗? zjczm@163.com
正在学习.
另,该ic价格如何?
谢谢了! 搞stm32的usb确实要有一定的基础,不是像串口那样说搞就搞。 回复【3楼】howard.yu
-----------------------------------------------------------------------
必须必 楼主,AS3910的价格大概是多少,支持MifareOne的三重认证吗? 等牛人探讨 正在搞AS3910读TYPEA的UID,哎,就是看重它读Desfire EV1卡距离远,不然不会用它。 回复【楼主位】qiushui
-----------------------------------------------------------------------
你好,你的AS3910做好了么? 回复【7楼】lovelywwei
-----------------------------------------------------------------------
你好,你的AS3910做好了么? 读TYPEA UID的搞定了。不得不说,AS3910采用什么新工艺,QFN封装,用刀头烙铁焊接引脚竟然都不上锡,后来去供应商那边才知道,解决办法是,用刀把芯片每个引脚都刮一下,再焊就OK了。
./emotion/em034.gif 关注1下这个新芯片 AS3910 来来来,大家来关注1下这个很烧包的芯片.下面是官方手册.貌似外围很简单,有很多独到的技术.就是不知道哪里有样片出售或者申请
点击此处下载 ourdev_721003K9SS33.pdf(文件大小:1.17M) (原文件名:AS3910_Datasheet_v2-3D.pdf) 回复【10楼】lovelywwei
-----------------------------------------------------------------------
那typeB跟15693怎么样了 目前没有项目需要,因此暂时不会投入精力去做。TYPEB的以前用PN512做过,读身份证那个什么所谓UID的。 回复【14楼】lovelywwei
目前没有项目需要,因此暂时不会投入精力去做。typeb的以前用pn512做过,读身份证那个什么所谓uid的。
-----------------------------------------------------------------------
能贴点例程吗,我用512怎么也读不了身份证呢,谢谢 回复【14楼】lovelywwei
-----------------------------------------------------------------------
你好,你是在给公司做么? 读不到TYPEB是因为底层驱动哪个地方搞错了吧,物理层天线什么的不会有问题,如果A OK,那么B也OK的。 来跟高人学习,请多关照。 高手,顶一下,正在学些ISO14443A mark. {:smile:} AS3910 10年接触过 他的demo是PIC为主芯片做的
貌似我的了解是 协议需要在处理器中做的比较麻烦 所以没用。
请教Desfire EV1 是什么卡。
最近对NFC支付比较感兴趣。不知道有哪些人和我一样有兴趣。
QQ122402902如果人多的话我也来做个开源项目。
我主要是做ISO14443A的一卡通支付的。应该算是一卡通做的比较久了有5年多了。用过的芯片从RC500到FM1702NL再到FM1702SL/FM1701/RC522,一直到现在的CV520都用过。 lovelywwei 发表于 2012-2-22 10:36
目前没有项目需要,因此暂时不会投入精力去做。TYPEB的以前用PN512做过,读身份证那个什么所谓UID的。 ...
大哥,方便用pn512 的 typeB demo发给我吗,在此小弟感激不尽。 H3LV7monster 发表于 2012-2-22 11:53
回复【14楼】lovelywwei
目前没有项目需要,因此暂时不会投入精力去做。typeb的以前用pn512做过,读身份 ...
童鞋,你用pn512做出来了typeB了吗? dun2010 发表于 2015-7-10 15:07
童鞋,你用pn512做出来了typeB了吗?
之前是给公司做的项目,现在已经离开那家公司了。刚找了下代码没找到,回家去电脑里看看。
印象中读TYPEB主要是初始化PN512的寄存器和读TYPEA的不同,然后就是发指令不同,读身份证的UID并不是标准的TYPEB协议。 lovelywwei 发表于 2015-7-10 16:07
之前是给公司做的项目,现在已经离开那家公司了。刚找了下代码没找到,回家去电脑里看看。
印象中读TYPEB ...
找到了吗?这几天搞的我typeB 头都大了 lovelywwei 发表于 2015-7-10 16:07
之前是给公司做的项目,现在已经离开那家公司了。刚找了下代码没找到,回家去电脑里看看。
印象中读TYPEB ...
大哥,您不忙的时候,帮我找一下吧,先谢谢了 学习学习 现有个项目要用到AS3911,谁能提供开发板或应用板,带源码。不费话 付 RMB
页:
[1]