PSAM卡与CPU卡交互流程===》》》
1 读CPU卡设备对CPU卡进行复位操作
2 打开CPU卡用户文件夹DF,COS命令:00 A4 00 00 02 12 00
3 从CPU卡获取4位随机数,COS命令:00 84 00 00 04
4 对PSAM卡进行复位
5 打开PSAM卡用户文件夹DF,COS命令:00 A4 00 00 02 13 00
6 对获取的CPU 4位随机数+补4位0x00做内部认证,COS命令:00 88 00 00 08 4位随机数+4位0x00
7 发送取响应指令,获取8位DES加密结果,COS命令:00 C0 00 00 08
8 将获得的加密结果数据发给CPU做外部认证,COS命令:00 82 00 00 08 8位加密后的数据
9 读取CPU卡二进制文件,获得卡号,COS命令:00 B0 83 00 00 (二进制文件00 03)
如下是做GPIO模拟交互时的一些记录:
/*
* A 类卡:1-5MHz 时钟、VCC-5V、
* B 类卡:1-4MHz 时钟、VCC-3V、
*通过 pwm 产生 50% 占空比的方波(协议规定 ISO-7816 时钟信号的工作周期应在稳定操作期间周期的40% 60%)
*clk 电压最小值为 0.7*VCC,最大值为 VCC
*单总线I/O数据持续时间(电压min 0.7 Vcc,max Vcc):
在数据 I/O 上,一位数据所持续的时间叫做“基本时间单位”,简写为 etu。
etu是由F和D共同决定的,这两个值是在复位应答中给出的,F 为时钟分频因子,D为波特率调整因子。
其大小为 F/D 个时钟周期,这里的时钟指的是 CLK 触点上的时钟,即
1etu =(F/D) * (1/f)
卡上电时默认F = 372, D = 1,所以1etu = 372/3.579Mhz= 103us,也就是每一位是103us,对应波特率为9600
帧格式:
每帧数据采用Byte字符方式,一个Byte由8比特组成。
每帧的传输由起始位、字符数据(8位)、校验位和停止位组成
其中
起始位为一个ETU(Elementary Time Unit)的低电平
数据位占用8个ETU的时间 (psam卡从最低位开始发送)
校验位占用一个ETU的时间 偶校验
停止位比特为高电平,占用2个ETU的时间
*操作:
热复位:当VCC和CLK保持稳定时,接口设备置RST为状态L至少400时钟周期(时间te)后,接口设备启动热复位,该code 时钟周期为278ns
应答:I/O的应答在RST上信号上升沿之后的400-40000个时钟周期(tf)之前开始(时间tf在Td之后);
在RST处于状态H时,如果应答信号未在40000个周期之后开始,RST上的信号将返回状态L
两个连续字符上升沿之间的延迟至少 12etu
在复位应答期间,卡发出的两个连续字符的上升沿间的延迟应不超过9600etu,这个最大值被称为 “初始等待时间”
应答值:TS 为 0x3b 时表示正向约定解码,先传低位;TS为 0x3f 时表示反向约定,先传高位
*注:
状态Z:传号或高电平
状态A:空号或低电平
*/
参考资料:
http://www.doc88.com/p-7982900155813.html PSAM卡应用交易指令
https://www.stmcu.org.cn/article/id-325648 STM32单片机的PSAM卡驱动模块设计
SmartCOS-PSAM1.3用户手册.pdf
eetop.cn_STM32智能卡接口笔记.pdf