iso7816經驗

本人在同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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章