如何通过NFC API更改ISO 14443位速率?

3
作为NFC/ISO 14443,支持从106kbps到至少424kbps的各种通信速度(例如请参见这里),我想知道如何通过Android API在不同比特率之间进行切换,以缩短读取整个ISO 14443A标签存储器所需的时间。
我查看了Android NFC基础知识高级NFC文档,以及各种标签技术页面(其中一些理论上应该支持更高的速度),但我找不到任何改变比特率的提示。
我也查看了一些标签数据表,其中许多支持ISO14443-4机制通过ATS响应和PPS命令改变比特率,我想这可以通过通用的transceive(byte[] data)方法手动使用,但我不认为那会实际改变Android设备的NFC芯片组的比特率...在这种情况下,当它切换到高于默认106kbps的速度时,我想我会失去与标签的连接。
1个回答

3
ISO14443支持从106到848,使用ISO14443-4中定义的PPS命令,但是NFC(使用14443协议)仅定义了106kb/s,并且PPS过程超出了范围(NFC Forum数字规范未描述PPS命令)。
NFC支持从106kb/s到424的定义是因为:
- ISO14443部分支持106kb/s - Felica部分支持212kb/s和424kb/s
因此,我认为不可能使用Android API更改比特率。

我也没有访问"NFC数字协议v2.0"的权限。但是,我调查了Android源代码中NFC协议的低级实现。最新的Android智能手机大多使用NXP PN547(带有NXP PN7120)。在其(公开的)用户手册中指出:[NCI](管理NFC控制器的协议)不“官方”支持在技术NFC-A和NFCB中使用更高的比特率,但它还指出:“如果DH将PI_BIT_RATE设置为允许的值高于0x00,则PN7120可能会发送PPS命令”。 - RogerR
Android源代码中定义了PI_BIT_RATE = 0x21,因此理论上NFC控制器可以发送高达212 kbit/s的PPS(在NCI规范中定义),但这取决于NFC控制器,Android API肯定无法更改。 - RogerR
感谢您提供这些详细的更新。您能否提供一些关于您提到的Android源代码中NFC协议的低级实现的指针?我已经快速查看了AOSP代码,但没有深入到BasicTagTechnology以下...如果您能提供更多信息,我将非常感激。 - FriendFX
你可以查看人机交互,也可以检查NFC Forum标准所称的(NCI)[https://www.cardsys.dk/download/NFC_Docs/NFC%20Controller%20Interface%20(NCI)%20Technical%20Specification.pdf],这是现代NFC控制器所遵循的标准。由于NFC Forum规范不公开,我无法提供最新的出版物,但你可以查看PN7120的数据表,它是大多数智能手机今天使用的NFC控制器。 - RogerR
谢谢提供链接,我稍后会查看。你在哪里找到了你在上面的评论中提到的相关Android源代码? - FriendFX
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接