我目前有一个Mifare RC522 模块,我可以使用它成功读取/写入标签和卡,但我无法成功地让它读取我通过 NFC 手机应用程序写入的数据。只需尝试通过关闭 RC522 模块来读取 iPhone 上的数据,就可以打开 Apple Pay 菜单。有什么我做错了吗?数据是否需要以某种方式编码,或者该模块只是无用,我可能需要像 PN532 这样的东西?我基本上只想要一个可以读取我从 iPhone/Android 设备广播的 NFC 数据的模块
1 回答
在 NFC 通信中,有 2 个部分,一个启动器(更通用的读卡器术语)和一个目标(更通用的标签/卡术语)以及无源和有源设备。
发起方开始通信,目标方响应。
有源设备有电源,无源设备不提供自己的电源。
无源设备不能是发起方的,因为它们需要电源来启动通信,并且可能需要为目标设备供电。
因此,像 NTAG 21x 标签这样的普通 NFC 标签是被动目标。
像 iPhone/Android 这样的硬件级别的设备,可以作为发起方和目标设备,并且可以为无源设备供电。
RC522 Module 只是一个启动器设备,可以为无源设备供电。
当 iPhone/Android 等设备充当目标设备(标签/卡)时,这称为主机卡仿真或 HCE(它们在软件中模拟卡硬件)。
因此,由于 RC522 只是一个启动器(读取器),因此其他设备必须是目标。
不幸的是,在 iOS 中,只有 Apple 被允许为 Apple Pay 进行主机卡模拟(成为目标),在这种情况下,他们假装是非接触式银行卡,而这些非接触式银行终端只是发起者的。
这就是 Apple Pay 出现的原因,因为这是它可以响应发起者的唯一方式。
在 Android 上,普通开发人员可以使用 Host Card Emulation。
所以基本上你正在尝试的事情对于 RC522 阅读器和 iPhone 是不可能的。
所以是的,使用 PN532 是可能的,因为该芯片在芯片上提供卡仿真模式或通过模式,其中主机卡在连接的微控制器上进行仿真。这是因为普通开发者的 iPhone 只能是阅读器(启动器)设备。