本人在同STM32芯片模拟ISO7816协议的时候,在释放触点的函数中发现其中一个被配制成复用开漏的IO管脚怎么都无法拉低。其代码如下:
//释放智能卡触脚
void PSAM_DeInit(){
//拉低触脚电平
GPIO_ResetBits(PSAM_GPIO, PSAM_RST);
GPIO_ResetBits(PSAM_GPIO, PSAM_IO);
GPIO_ResetBits(PSAM_GPIO, PSAM_VCC);
//释放USART与GPIO管脚
USART_DeInit(PSAM_USART);
GPIO_DeInit(PSAM_GPIO);
//失能GPIO,USART和复用时钟
RCC_APB2PeriphClockCmd(PSAM_GPIO_CLK | RCC_APB2Periph_AFIO, DISABLE);
RCC_APB1PeriphClockCmd(PSAM_USART_CLK, DISABLE);
PSAM_Log();
}
”经过本人反复实验,发现将“释放USART与GPIO管脚”的两行代码与"失能GPIO,USART和复用时钟"的两行代码顺序颠倒后,其IO口能够正确被拉低。
全局接口字节的内容
8.5.1 总则
本条规定了全局接口字节的内容。ISO/IEC JTC1 SC17保留了所有未在本条中定义的全局字节以及虽定义了但未使用的整数值以备将来使用。
本条规定了TD(i-1)中T=15的第一次出现后i>2的字节TA(1) TB(1)TC(1) TA(2) TB(2)和TA(i)。这些字节以二进制的形式对无符号整数FI、DI、II、PI1、N、PI2、XI和UI进行编码,这些无符号整数等于或用于计算此后出现的参数F、D、N、P、I、X和U的值。
— 如果存在,为正确处理任一协议应解释该字节。
— 如果该字节不存在,则当需要时,相关参数使用缺省值。
TA(1)代码(见8.5.2)
— FI,位b8到b5 上的时钟率转换因子的引用,见表7。
— DI,位b4到b7上波特率校正因子的引用,见表8。
TB(1)b8=0代码处(见8.5.4)
— II,位b7 b6上最大编程电流的引用,见表9。
— PI1,位b5到b1上编程电压的值。
注:接口设备可以忽略TB(1)的位b8。
TC(1)代码(见8.5.3)
— N,计算八位额外保护时间的引用。
TA(2)是专用模式字节(见8.5.7和8.6)
TB(2)用八位上的编程电压值PI2编码以代替PI1(见8.5.4)。
TA(i)在TD(i-1)(i>2)中的T=15的第一个出现后编码(见8.5.5和8.5.6)
— XI,位b8b7上时钟停止指示的参考,见表10。
— UI,位b6到b1上级别指示的参考,见表11。
注:符合ISO/IEC 7816-3:1989的接口设备在TD(i-1) (i>2)中的T=15后正常忽略TA(i) TB(i) TC(i)所不支持的协议的接口字节特性。
8.5.2传输因子F和D
参数F和D分别是时钟率转换因子和波特率调整因子。在电路输入/输出上使用的etu依赖于传输因子F和D的实际值。etu应等于F/D时钟周期。
1 etu = F/D×1/f
频率f的最小值应当为1MHz。最大值以FI的函数的形式在表7中给出。缺省最大值是5MHz。
为计算etu,F和D因子对应当采用下面三对值:
— Fi和Di,按照表7和8在TA(1)中由卡指示的值;如果TA(1)不存在,则Fi和Di设为缺省值;
— Fd和Dd,缺省值为372和1;
— Fn和Dn,在Fd到Fi和Dd到Di范围里成功的PPS交换所协商的值。
在复位应答期间,应用Fd和Dd。复位应答后,F和D的值取决于操作模式(见10.6)。
— 协商模式中,Fd和Dd应继续应用直到PPS交换成功完成(见9.4)。PPS成功交换后,Fn和Dn立即应用。
— 专用模式中(见8.6.2)
h 如果TA(2)中b5=0,复位应答成功完成之后立即应用Fi和Di。
h 如果TA(2)中b5=1,使用隐含值。
8.5.3额外保护时间N
参数N是用于从接口设备到发送字符的卡的额外保护时间。从卡发送字符到接口设备不用额外保护时间。缺省值N=0。
在0到254范围里,在准备接收下一字符前,N指明卡要求从前一个字符(也是由卡或接口设备发送的)上沿的后续延迟。
12 etu + (Q×N/f)
公式中,Q取两个值中的一个:
— F/D,即,用于计算etu的值,当T=15不存在于复位应答中时,
— Fi/Di,当T=15在复位应答中时。
N=255指明在传输协议期间,两个连续前沿之间的最小延迟在传输的两个方向是一致。这个最小延迟值是
— T=0时,12etu
— T=1时,11etu
表7 — Fi,指明的时钟率转换因子的值
FI 0000 0001 0010 0011 0100 0101 0110 0111
Fi 372 372 558 744 1116 1488 1860 RFU
f (max) MHz 4 5 6 8 12 16 20 -
RFU=留作未来使用
FI 1000 1001 1010 1011 1100 1101 1110 1111
Fi RFU 512 768 1024 1536 2048 RFU RFU
f (max) MHz - 5 7,5 10 15 20 - -
表8 — 指明的波特率校正参数的值
DI 0000 0001 0010 0011 0100 0101 0110 0111
Di RFU 1 2 4 8 16 32 RFU
DI 1000 1001 1010 1011 1100 1101 1110 1111
Di 12 20 RFU RFU RFU RFU RFU RFU