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的规范中,被合成了一步。通过一个发现命令,其中包括了模式的参数,就完成了发现过程。

NFC通信的模式选择的更多相关文章

  1. 手机NFC通信的安全车钥匙

    SmartKeys for Cyber-Cars:Secure Smartphone-based NFC-enabled Car Immobicizer 手机NFC通信的安全车钥匙 1概述 如今,智能 ...

  2. Docker Swarm 负载均衡详解 or 模式选择

    Docker Swarm 负载均衡详解 Swarm模式内置DNS组件,可以自动为集群中的每个服务分配DNS记录. Swarm manager使用内部负载均衡,根据服务的DNS名称在集群内的服务之间分发 ...

  3. Android 8.1 关机充电动画(一)模式选择

    system:Android 8.1 platform:RK3326/PX30 uboot kernel Android 8.1 关机充电动画(一)模式选择 Android 8.1 关机充电动画(二) ...

  4. 移动支付之智能IC卡与Android手机进行NFC通信

    本文来自http://blog.csdn.net/hellogv/ .引用必须注明出处.        眼下常见的智能IC卡执行着JavaCard虚拟机.智能IC卡上能够执行由精简后的Java语言编写 ...

  5. LR中HTTP协议录制模式选择

    在LR中使用HTML/HTTP协议进行脚本录制时面临正确选择HTTP-based script / URL-base script 录制模式的问题,以下是比较官方的建议:1)基于浏览器的应用程序推荐使 ...

  6. Android TimePickerDialog样式配置与TimePicker模式选择

    习惯性的,把要说的内容先总结一下: TimePicker有两种模式:spinner 和clock,可通过如下方式配置: <TimePicker android:timePickerMode = ...

  7. TMS320VC5509启动模式选择

    1. TMS320VC5509内部没有存储空间,所以需要外部接flash.如果使用JTAG仿真板子的话,应该是选择USB下载模式,同时EEPROM应该是支持SPI FALSH的.

  8. MySQL binlog日志三种模式选择及配置

    在认识binlog日志三种模式前,先了解一下解析binlog日志的命令工mysqlbinlog.mysqlbinlog工具的作用是解析mysql的二进制binlog日志内容,把二进制日志解析成可以在M ...

  9. VMware桥接模式选择宿主机物理网卡

    当宿主机有多块物理网卡时,VMware桥接模式也要根据情况选择使用的物理网卡. 比如宿主机有两块物理网卡,一个连外网,一个连内网,如果想与内网组成局域网就需要选择宿主机的内网网卡,反之选择外网网卡,当 ...

随机推荐

  1. request.getParamer()

    eturns the value of a request parameter as a String, or null if the parameter does not exist. Reques ...

  2. C# DateTime类,TimeSpan类

    DateTime类是.Net中用于处理时间类型数据的. 一.字段 MaxValue 表示 DateTime 的最大可能值.此字段为只读. MinValue     表示 DateTime 的最小可能值 ...

  3. app行业发展趋势

    近日,移动开放平台发布了2014年第一季度App开发行业报告.报告中对目前国内app开发者的分布情况,个人开发者和企业开发者的开发领域,相应比例以及提交应用过程中出现的问题做出统计,为如何建立一个更好 ...

  4. Family Tree

    Question A traditional constructing tree problem. Given a string to represent relationships, and pri ...

  5. 数字图像处理之sobel边缘检测

    在前两部文章介绍了几种边缘检测算法,和位图的内存结构.如果对前两篇文章已经理解透彻 了,那么本文将带你进入数字图像处理的世界. 本文通过C代码实现基本的sobel边缘检测,包括8个方向和垂直方向: 代 ...

  6. php接口数据加密、解密、验证签名代码实例

    php接口数据加密.解密.验证签名 代码非常easy,这里就不多废话了,直接奉上代码 <?php /** * 数据加密.解密.验证签名 * @edit http://www.lai18.com ...

  7. 搭建高可用mongodb集群—— 分片

    从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出 ...

  8. andeoid硬件解码学习 (二)

    Finally, I must say, finally, we get low-level media APIs in Android, the Android hardware decoding ...

  9. JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释

    以下内容转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29632145&id=4616836 jvm区域总体分两 ...

  10. PHP基础之 define() 函数

    定义和用法 define() 函数定义一个常量. 常量类似变量,不同之处在于: 在设定以后,常量的值无法更改 常量名不需要开头的美元符号 ($) 作用域不影响对常量的访问 常量值只能是字符串或数字 语 ...