PBOC规范研究之三、TypeB协议

来源:互联网 发布:移动医疗软件 编辑:程序博客网 时间:2024/06/05 22:58

第一、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所示:

这里写图片描述
图1

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

bit8-bit6:

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

PBOC规范明确要求:

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

2、ATQB

ATQB主要关注协议信息域

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

见下图2:
这里写图片描述
图2

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

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

bit8-bit5:表示帧大小

其和实际的帧大小的对应关系见下图3:
这里写图片描述
图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:
这里写图片描述
图4

PBOC对该字节的要求如下图5:
这里写图片描述
图5

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

2、参数2

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

bit8-bit7:定义了卡到读卡器的通讯速率,见图6
这里写图片描述
图6

bit6-bit5:定义了读写器到卡的通讯速率,见图7
这里写图片描述
图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,读写器不必理会该域。

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

原创粉丝点击