我现在做一款产品,需要读SIM卡。用的卡是一个过期的旧卡,虽然不能用了,但是读里面的信息应该没问题。
我仿照STM32固件库写程序,如下
SCState = SC_POWER_ON;
SC_ADPU.Header.CLA = 0x00;
SC_ADPU.Header.INS = SC_GET_A2R;
SC_ADPU.Header.P1 = 0x00;
SC_ADPU.Header.P2 = 0x00;
SC_ADPU.Body.LC = 0x00;
while(SCState != SC_ACTIVE_ON_T0)
{
SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
if(SCState == SC_POWER_OFF)
{
/* Power ON the card */
SC_PowerCmd(DISABLE); //因为经过一个三角管反向,所以成禁止了
/* Reset the card */
SC_Reset(Bit_RESET);
SCState = SC_POWER_ON;
}
USART_SendData(USART1,SCState);
Delay(2000);
}
死在这个循环里了。
我把状态打出来,发现是01 00
/* Exported types ------------------------------------------------------------*/
typedef enum
{
SC_POWER_ON = 0x00,
SC_RESET_LOW = 0x01,
SC_RESET_HIGH = 0x02,
SC_ACTIVE = 0x03,
SC_ACTIVE_ON_T0 = 0x04,
SC_POWER_OFF = 0x05
} SC_State;
就是上电和复位低。我量了,复位是高。
还有,时钟有波形,数据没有。
请大神指教,哪里出了问题?谢谢!
|