智能卡ATR
一般来说只要VCC上电CLK有时钟(电压要对应,data保持上拉),这时只用给RST持续一段时间的低电平,智能卡就会主动回复ATR。智能卡可以直接使用5V供电,目前还没遇到过只工作在3V的卡,一般工作电压在2.7-5.5V,但遇到过工作电压是4.75-5.25V的卡。
ATR最长33字节,ATR的各数据位之间可能也有一段的时间间隔,这些在7816协议中都有规定。读ATR可以采用两种方式:按照协议边分析边读,这样按照协议读数结束就可以return了;也可以不管协议直接读,ATR中两个字节之间的间隔最长可以是9600etu,超时就认为ATR结束了。
反向
像NDS的卡数据是反向,可通过ATR第一个字节看出,一般判断0x03或0x3f为反向卡。反向指高低位倒过来,再取反(软件取反的话,可以通过查表的方式)
0x03
0 0 0 0 0 0 1 1 先高低倒过来
1 1 0 0 0 0 0 0 再取反
0 0 1 1 1 1 1 1 0x3f
数据传输
一般来说传输一个字符要12个etu=1 START + 8 DATA + 1 PARITY + 2 GUARD