首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NFC ACR122 TgInitAsTarget,启动器释放目标

NFC ACR122 TgInitAsTarget,启动器释放目标
EN

Stack Overflow用户
提问于 2014-01-10 18:05:57
回答 1查看 4.7K关注 0票数 2

我试图让我的ACR122 (usb)设备模仿一个被动的NFC标签,但很难让通信正常进行。我希望有人能看到我在这里做错了什么,并帮助我指出正确的方向。

ACR122 - Card Emulation对另一个问题的回答指向了PN53x.txt上的一个文档,但是当我们按照字母来处理这个问题时,它的行为并不像预期的那样。

我们正在使用三星GalaxyAndroid4.3设备进行测试,我们看到了以下行为:

代码语言:javascript
复制
Transmit (TgInitAsTarget)
....'......4V@..  FF 00 00 00 27 D4 8C 00 08 00 12 34 56 40 01 FE 
................  A2 A3 A4 A5 A6 A7 C0 C1 C2 C3 C4 C5 C6 C7 FF FF 
...wfUD3"...      AA 99 88 77 66 55 44 33 22 11 00 00 

Receive
..%....7.5<...w.  D5 8D 25 1E D4 00 08 37 D9 35 3C BF D5 AE 77 9C 
...2Ffm.........  00 00 00 32 46 66 6D 01 01 11 03 02 00 13 04 01 
...               96 90 00 

Transmit (GetData)
.......           FF 00 00 00 02 D4 86 

Receive
..)..             D5 87 29 90 00 

TgInitAsTarget命令似乎正常工作,返回我们理解为“活动模式,DEP,424 means”的0x25模式。

但是"GetData“命令立即失败,返回状态代码0x29”已配置为目标的PN532已由其发起者释放“。

我们尝试用不同的模式更改TgInitAsTarget命令(而不是0x00 " all“模式),尝试以下所有仍然返回0x29的GetData命令:

  • 模式0x01“被动”,导致0x04 "DEP“响应模式
  • 模式0x02 "DEP",导致响应模式0x25 (与“All”相同)
  • 模式0x03 "DEP被动“导致0x04 "DEP”响应模式

在所有情况下,Android似乎都没有维护连接,尽管我对NFC DEP协议还不太熟悉,不知道我在这里做了什么。我已经阅读了PN532芯片引用,这似乎表明我做的一切都是正确的。

我还尝试过Windows设备,它在GetData上遇到了相同的问题和相同的错误代码。

任何对NFC熟悉的人的任何帮助都将不胜感激。

戴夫

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-14 06:39:28

为了将ACR122 (或者更确切地说是将PN532 NFC控制器芯片放入卡模拟模式),您需要执行以下操作:

  1. ReadRegister:FF000000 08 D406 6305 630D 6338 < D507 xx yy zz 9000

  1. 更新寄存器值: xx =xx004;// CIU_TxAuto |= InitialRFOn yy = yy & 0x0EF;// CIU_ManualRCV &= ~ParityDisable zz = zz & 0x0F7;// CIU_Status2 &= ~MFCrypto1On
  2. WriteRegister:FF000000 11 D408 6302 80 6303 80 6305 xx 630 xx yy 6338 zz < D509 9000

  1. SetParameters:FF000000 03 D412 30 < D513 9000

  1. TgInitAsTargetFF000000 27 D48C 05 0400 123456 20 000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

其中xx应该等于0x08。

  1. 使用一系列TgGetData和TgSetData命令进行通信:FF000000 02 D486 < D587 xx 9000

其中xx是状态代码(成功时应该是0x00 ),code是从读取器发送的命令。

FF000000 yy D48E < D587 xx 9000 在yy为2+的情况下,status (响应)的长度和xx是状态代码(应该是0x00表示成功)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21051315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档