zoukankan      html  css  js  c++  java
  • PBOC规范研究之三、TypeB协议(转)

    第一、WUPB命令

    WUPB命令共包含3个字节,分别为

    1、05;

    2、AFI字节;

    AFI字节,PBOC规范中,READER的约定为该字节必须为0X00,即支持所有应用

             卡片可支持应用类型部位0X00的AFI;

    3、参数字节

    bit5:

         1:表示读写器支持扩展ATQB

         0:表示读写器不支持扩展ATQB

         但是卡片可以不理会该字节,即在ATQB中可携带该字节也可不携带该字节

    bit4:

         1:表示是WUPB

         0:表示是REQB

    bit3-1:

         表示slot号,如下图1所示:

                   PBOC规范研究之三、TypeB协议

                                            图1

    当读写器发送的参数中该域为101或者11x时,卡片应翻译为16个slot

    bit8-bit6:

             应该为000,当该域不为000时,卡片应忽略该域

    PBOC规范明确要求:

             不支持扩展ATQB,同时slot号应该设置为000,以确保所有卡片都在slot0给予响应。

    2、ATQB

    ATQB主要关注协议信息域

    1、首字节标明了卡支持的通讯速率:

    见下图2:

    PBOC规范研究之三、TypeB协议

                                                       图2

    PBOC规范强制规定:卡片的bit7---bit5与bit3---bit1必须为0,即双向都支持106kbps的通讯速率;读写器应能支持双向的106kbps通讯速率,且可支持更高的通讯速率,我想这是为后续协议的提高做好准备吧!

    2、第二字节为帧大小和协议类型

    bit8-bit5:表示帧大小

    其和实际的帧大小的对应关系见下图3:

    PBOC规范研究之三、TypeB协议

                                                        图3

    当参数为9-F是,应默认为8;

    究竟双方通讯时帧的大小还具有ATTRIB中的参数:两个参数取小的;

    bit3-bit2:表示TR2的值,PICC应将该位设置为0,即选择最小值,而读写器应忽略该域并将FDT作为TR2最小值

    bit1:协议类型选择:          

    0:表示仅支持ISO14443-3协议

    1:表示支持ISO14443-4协议

    PBOC规范中要求该位必须设置为1

    3、第三个字节

    第三个字节由FWI:ADC:FO组成。

    bit8-bit5:FWI

    FWI用来定义FWT,即帧等待时间,这个时间参数用来约定读写器发送完一帧数据的最后一个bit后,卡片必须给予响应的最长等待时间。其计算公式为:FWT=302*pow(2,FWI) us.但是Attrib命令你除外,Atrtib命令的FWT时间为302*pow(2,4)us,约等于4.8ms。FWI最大值为14,如果出现15则解释为14.

    bit4-bit3:ADC

    ADC为应用数据编码;

    bit4默认设置为0

    bit3设置为0,表示私有,设置为1表示在本规范JR/T0025.8中定义。

    bit2-bit1:FO,该域定义了卡片可选的支持选项,主要是CID和节点地址。其中bit2设置为1表示支持节点地址;bit1设置为1表示支持CID跟随

    很奇怪,PBOC规范里强制要求读写器不使用节点地址和CID.这个是和TypeA不同的一个地方。

    第三、扩展字节,这个域是可选的。

    bit8-bit5:SFGI,这个数值用来定义起始帧保护时间,用来取代TR2,它的值为0-14,如果该值为15则翻译为0,缺省值是0.

    bit4-bit1:0000,如果卡片该域返回的数值不等于0000,表示不支持该标准。其实在发送WUPB或者REQB时,卡片可以设置参数字节(第三个字节)的bit5位为0,告诉卡片自己不支持扩展字节,那么卡片也就不会返回该扩展字节了,省的麻烦。

    总结一下ATQB干的事情:ATQB告诉读写器,卡片是否支持CID、是否支持NAD、通讯速率、支持的最大帧长度,当然还有FWT或者SFGT等参数。但是读写器不一定支持这些参数,可以推测到ATTRIB命令中读写器肯定会告诉卡片自己对这些参数的支持情况。双方协商一个大家都力所能及的参数。

    第四、ATTRIB命令

    1、参数1

    参数1的定义如下图4:

    PBOC规范研究之三、TypeB协议
                                                    图4

    PBOC对该字节的要求如下图5:
    PBOC规范研究之三、TypeB协议

                                                    图5

    关于TR0,TR1,TR2参数的含义,我之前单独写过一个文章,这里不再重复了。

    2、参数2

    参数2定义了最大帧长度,通讯速率。

    bit8-bit7:定义了卡到读卡器的通讯速率,见图6PBOC规范研究之三、TypeB协议

                                                  图6

    bit6-bit5:定义了读写器到卡的通讯速率,见图7

         PBOC规范研究之三、TypeB协议
                                               图7
    bit4-bit1:

    定义了读写器支持的最大帧长度,具体见图3

    3、参数3

    bit8-bit5:

    读写器应设置该域为0000,设置为其他值时,卡片应该不响应。

    bit4-bit1:

    读写器应设置bit4为0;

    如果bit8-bit4不为00000,那么表示支持ISO14443标准;

    卡片应不理会bit4-bit2的值,即仍然采用最小TR2

    bit1:设置为1表示支持ISO14443-4协议,否则表示不支持。

    4、参数4

    bit8-bit5:应设置为0

    bit4-bit1:定义了CID,如果在ATQB中,卡片告诉读写器自己不支持CID,那么读写器发送的参数中该域应该为0.

    PBOC规范中对CID的要求是,卡片可支持CID且应该能同不带CID的读写器进行通讯。但是要求PCD不使用CID。也就是说,该域必须设置为0000

    第五、Attrib命令的响应

    这里主要关注第一个字节,该字节有两部分组成

    bit8-bit5:MBTI

    0:表示卡片不提供自身内部的最大缓冲区

    1: 表示卡片提供自身内部的最大缓冲区,其计算公式为

    MBL=PICC最大帧大小*pow(2,MBTI-1);

    bit4-bit1:CID

    如果卡片不支持CID,那么该域为0,如果支持,那么该域的值应该和ATTRIB中参数4中分配的CID相同

    在PBOC规范中,卡片返回这个域必须是0,读写器不必理会该域。

    通过两次交互,读写器和卡片之间协商了双方通讯必须共同遵守的规则。

  • 相关阅读:
    QTreeWidgetItem清空子节点
    qt no doubments matching "ui..h" could be found
    Qt 调试信息、打印信息、输出到文本
    QLayout及其子类 清除添加的widget
    同一个电脑安装两个jdk版本
    hive javaapi 002
    ActiveMQ之spring集成消息转换器MessageConverter
    install Maven
    install apache-activemq
    MySQL 5.7.9版本sql_mode=only_full_group_by问题
  • 原文地址:https://www.cnblogs.com/CQbk/p/9707741.html
Copyright © 2011-2022 走看看