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,读写器不必理会该域。

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

posted @ 2018-09-26 16:29  -CQ-  阅读(1253)  评论(0编辑  收藏  举报