qiushui 发表于 2011-8-23 10:23:38

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

qiushui 发表于 2011-8-23 10:34:59

>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 发表于 2011-9-8 16:44:14

兄弟,你这个代码及参考资料,能发我一份吗? zjczm@163.com
正在学习.
另,该ic价格如何?
谢谢了!

howard.yu 发表于 2011-9-8 16:48:01

搞stm32的usb确实要有一定的基础,不是像串口那样说搞就搞。

peterpetrelli 发表于 2011-10-13 20:28:20

回复【3楼】howard.yu
-----------------------------------------------------------------------

必须必

whimsy 发表于 2012-1-2 14:19:28

楼主,AS3910的价格大概是多少,支持MifareOne的三重认证吗?

huaifeng 发表于 2012-1-3 14:28:36

等牛人探讨

lovelywwei 发表于 2012-1-7 16:13:36

正在搞AS3910读TYPEA的UID,哎,就是看重它读Desfire EV1卡距离远,不然不会用它。

huraul 发表于 2012-2-21 16:51:11

回复【楼主位】qiushui
-----------------------------------------------------------------------

你好,你的AS3910做好了么?

huraul 发表于 2012-2-21 16:51:44

回复【7楼】lovelywwei
-----------------------------------------------------------------------

你好,你的AS3910做好了么?

lovelywwei 发表于 2012-2-21 17:10:28

读TYPEA UID的搞定了。不得不说,AS3910采用什么新工艺,QFN封装,用刀头烙铁焊接引脚竟然都不上锡,后来去供应商那边才知道,解决办法是,用刀把芯片每个引脚都刮一下,再焊就OK了。
./emotion/em034.gif

skynet 发表于 2012-2-22 08:34:40

关注1下这个新芯片 AS3910

skynet 发表于 2012-2-22 08:39:02

来来来,大家来关注1下这个很烧包的芯片.下面是官方手册.貌似外围很简单,有很多独到的技术.就是不知道哪里有样片出售或者申请

点击此处下载 ourdev_721003K9SS33.pdf(文件大小:1.17M) (原文件名:AS3910_Datasheet_v2-3D.pdf)

huraul 发表于 2012-2-22 10:03:15

回复【10楼】lovelywwei
-----------------------------------------------------------------------

那typeB跟15693怎么样了

lovelywwei 发表于 2012-2-22 10:36:17

目前没有项目需要,因此暂时不会投入精力去做。TYPEB的以前用PN512做过,读身份证那个什么所谓UID的。

H3LV7monster 发表于 2012-2-22 11:53:07

回复【14楼】lovelywwei
目前没有项目需要,因此暂时不会投入精力去做。typeb的以前用pn512做过,读身份证那个什么所谓uid的。
-----------------------------------------------------------------------

能贴点例程吗,我用512怎么也读不了身份证呢,谢谢

huraul 发表于 2012-2-23 10:53:36

回复【14楼】lovelywwei
-----------------------------------------------------------------------

你好,你是在给公司做么?

lambda01 发表于 2012-2-25 14:16:09

读不到TYPEB是因为底层驱动哪个地方搞错了吧,物理层天线什么的不会有问题,如果A OK,那么B也OK的。

xhmbj 发表于 2012-2-26 01:50:52

来跟高人学习,请多关照。

bpengj3375 发表于 2013-3-25 19:20:48

高手,顶一下,正在学些ISO14443A

useronce 发表于 2013-3-26 09:22:35

mark. {:smile:}

122402902 发表于 2013-3-26 10:33:39

AS3910 10年接触过 他的demo是PIC为主芯片做的
貌似我的了解是 协议需要在处理器中做的比较麻烦 所以没用。

请教Desfire EV1 是什么卡。

最近对NFC支付比较感兴趣。不知道有哪些人和我一样有兴趣。
QQ122402902如果人多的话我也来做个开源项目。

我主要是做ISO14443A的一卡通支付的。应该算是一卡通做的比较久了有5年多了。用过的芯片从RC500到FM1702NL再到FM1702SL/FM1701/RC522,一直到现在的CV520都用过。

dun2010 发表于 2015-7-10 15:05:39

lovelywwei 发表于 2012-2-22 10:36
目前没有项目需要,因此暂时不会投入精力去做。TYPEB的以前用PN512做过,读身份证那个什么所谓UID的。 ...

大哥,方便用pn512 的 typeB demo发给我吗,在此小弟感激不尽。

dun2010 发表于 2015-7-10 15:07:21

H3LV7monster 发表于 2012-2-22 11:53
回复【14楼】lovelywwei
目前没有项目需要,因此暂时不会投入精力去做。typeb的以前用pn512做过,读身份 ...

童鞋,你用pn512做出来了typeB了吗?

lovelywwei 发表于 2015-7-10 16:07:17

dun2010 发表于 2015-7-10 15:07
童鞋,你用pn512做出来了typeB了吗?

之前是给公司做的项目,现在已经离开那家公司了。刚找了下代码没找到,回家去电脑里看看。
印象中读TYPEB主要是初始化PN512的寄存器和读TYPEA的不同,然后就是发指令不同,读身份证的UID并不是标准的TYPEB协议。

dun2010 发表于 2015-8-17 14:27:52

lovelywwei 发表于 2015-7-10 16:07
之前是给公司做的项目,现在已经离开那家公司了。刚找了下代码没找到,回家去电脑里看看。
印象中读TYPEB ...

找到了吗?这几天搞的我typeB 头都大了

dun2010 发表于 2015-9-24 10:29:16

lovelywwei 发表于 2015-7-10 16:07
之前是给公司做的项目,现在已经离开那家公司了。刚找了下代码没找到,回家去电脑里看看。
印象中读TYPEB ...

大哥,您不忙的时候,帮我找一下吧,先谢谢了

sml009 发表于 2015-11-14 15:40:37

学习学习

lllmcu 发表于 2019-4-20 11:12:56

现有个项目要用到AS3911,谁能提供开发板或应用板,带源码。不费话   付 RMB
页: [1]
查看完整版本: STM32+AS3910读取14443A的UID成功, 读取14443B的UID失败, 同行可以共同探讨