问题描述
我目前有一个Mifare RC522 module可以用来成功地读/写标签和卡,但我无法成功地让它读取我通过NFC手机应用写入的数据。简单地试图让RC522模块通过靠近iPhone来读取iPhone上的数据,只会弹出Apple Pay菜单。我是不是做错了什么?数据是否需要以某种方式编码,或者该模块是否毫无用处,我可能需要PN532之类的东西?我基本上只想要一个可以读取我从iPhone/Android设备上广播的NFC数据的模块
推荐答案
在NFC通信中有两个部分,发起者(更一般地称为读卡器)和目标(更一般地称为标签/卡)以及被动和有源设备。
发起方开始通信,目标方响应。
主动设备有电源,而被动设备不为自己供电。
被动设备不能是发起方设备,因为它们需要电源才能启动通信,并且可能需要为目标设备供电。
因此,像NTAG 21x标签这样的普通NFC标签是被动目标。
像iPhone/Android这样的设备,在硬件层面上可以作为发起者和目标设备,并可以为被动设备供电。
RC522模块仅是启动设备,可以为被动设备供电。
像iPhone/Android这样的设备当它们充当目标设备(标签/卡)时,这称为主机卡仿真或HCE(它们在软件中模拟卡硬件)。
因此,由于RC522仅是发起方(读取器),其他设备必须是目标。
遗憾的是,在iOS中,只有Apple被允许对Apple Pay进行主机卡模拟(成为目标),他们假装是非接触式银行卡,而非接触式银行终端只是发起者的。
这就是Apple Pay出现的原因,因为这是它回应发起人的唯一方式。
在Android上,普通开发人员可以使用主机卡仿真。
因此,RC522阅读器和iPhone基本上无法实现您正在尝试的功能。
因此,可以使用PN532,因为该芯片提供芯片上的卡仿真模式或通过模式,其中主机卡在连接的微控制器上进行仿真。这是因为对于普通开发者来说,iPhone只能是一个阅读器(启动器)设备。这篇关于从iPhone向RC522传递RFID数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!