原帖请参照:http://www.nfcchina.org/forum.php?mod=viewthread&tid=68&extra=page%3D1
1.nfc 怎么选择操作模式的?——怎么在 PCD VCD NFC 模式中做出选择?
我知道 iso 15693中有说明但是不太懂啊。
如果周围检测到 RF场存在,就能直接认定并选择 NFC 模式?
如果没检测到RF场存在,又怎么在那3种模式中选择?
首先我觉得应该澄清一个概念,就是你所提到的NFC模式。我猜你所说的应该是ISO18092中所定义的通信方式吧?在NFC中定义了三种不同的模式:
- 读卡器模式:运行着NFC Forum所定义的Type1/2/3/4 Platform,也就是所说的PCD/VCD,对应着ISO14443的协议,目前,NFC Forum中也加入了对VCD的支持。读卡器下也可以是ISO18092中定义的Initiator;
- 卡模拟模式:运行着NFC Forum所定义的Type4A/4B的TAG,也就是我们所说的PICC;卡模拟也可以使ISO18092的Target
- 点对点模式:定义在ISO18092中的Initiator和Target;
关于模式的选择,完全是由上层的应用程序来决定。比如说你的NFC手机运行一个读公交卡的应用程序,那么这时候NFC模块或NFC芯片就工作在读卡器模式;如果运行一个Google wallet的应用程序,那么NFC芯片就被设置成卡模拟的模式;如果运行一个文件传输的应用程序,如File expert,那么你的NFC芯片就会被设置成为点对点通信的模式。所以说,NFC的模式选择,完全取决于上层的应用程序,这里我就简单的从NFC协议的角度来分析如何进行模式的设置。
1. 初始化
当手机中的NFC模块(芯片)被开启时,会初始化一些参数,这个时候NFC芯片处于一个IDLE的状态,该状态下,NFC芯片不会产生射频场,此时它处于侦听模式下。但是需要注意的是,此时的NFC芯片并不会工作在上述三种模式中的任何一种。
2. 模式的配置
当相应的应用程序启动后,NFC芯片会得到相应的模式配置,这里描述几个比较重要的参数:
(1) 技术:该词是NFC规范中的专有名词,NFC-A/B/F,对应着ISO14443 A/B及Felica
(2) 通信模式:主动通信和被动通信
(3) 工作模式:Poll,Listen
这三个参数的组合对应着不同的模式,如(NFC-A,POLL,被动通信)表示,此时NFC工作在一个读卡器模式下;如(NFC-A,Listen,被动通信)表示NFC工作在卡模拟的模式;如(NFC-F,Poll,主动通信),表示NFC工作在点对点的模式下。当然了,可以给NFC芯片配置多个这样的参数组。除了这三个参数外,还有其它的参数,比如RF协议(ISO-DEP/NFC-DEP等),传输速率,所能支持的最大负载长度等,这里就不详细说明了。
3. 发现
当NFC芯片的模式配置好后,如果NFC芯片被配置为POLL下,那么NFC芯片将会打开射频场,并根据配置模式进行发现过程,来发现周围的NFC设备。在NFC规范中,发现的顺序为NFC-A->NFC-B->NFC-F->私有技术。当周围有多个目标设备或一个目标设备却支持多种RF协议的话,那么NFC芯片将会向上层应用通告目标设备,让上层应用来决定如何选择。如果NFC芯片被配置为LISTEN下,那么NFC芯片就会等待对方设备发来的POLL命令,如SENS_REQ/SENSF_REQ等。
4. 激活
当目标设备被选中后,将会进行设备/协议的激活,如使用NFC-DEP的传输协议,那么就需要ATR_REQ/RES的流程;
5. 链路激活
这一步是针对点对点通信的,如果使用LLCP的话,还需要对LLCP链路进行激活。
当底层链路建立好后,那么NFC设备间就可以进行通信了。
这里再说明一下,第一步初始化,也有可能不同芯片有不同的实现方式,初始化就会进入某一个模式;第二步配置和第三步发现,实际上在NFC的规范中,被合成了一步。通过一个发现命令,其中包括了模式的参数,就完成了发现过程。