打印
[STM32F1]

四问STM32读取SIM卡的问题

[复制链接]
3079|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JY-DX-JY|  楼主 | 2015-6-12 19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在读SIM卡数据正常,读ICCID有问题不明白
/* Read Binary in ICCID --------------------------------------------------*/
    if(SC_Responce.SW1 == SC_EF_SELECTED)       //9F
    {
      SC_ADPU.Header.CLA = SC_CLA_GSM11;      //A0
      SC_ADPU.Header.INS = SC_READ_BINARY;     //B0
      SC_ADPU.Header.P1 = 0x00;
      SC_ADPU.Header.P2 = 0x00;
      SC_ADPU.Body.LC = 0x00;
      SC_ADPU.Body.LE = 10;
      SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
    }
  /* Select GSMDir ---------------------------------------------------------*/
    if(((SC_Responce.SW1 << 8) | (SC_Responce.SW2)) == SC_OP_TERMINATED)      //9000
    {
         
      /* Copy the ICCID File content into ICCID_Content buffer */
      for(i = 0; i < SC_ADPU.Body.LE; i++)
      {
        ICCID_Content[i] =  SC_Responce.Data[i];
      }
   for(i = 0; i < SC_ADPU.Body.LE; i++)
      {
    USART_SendData(USART1,ICCID_Content[i]);    //98 68 00 16 51 40 02 83 52 19
       delay1(2);
   }
读了10个字节,数据是98 68 00 16 51 40 02 83 52 19
可是手机卡上的ICCID是8986,0112,8170,4100,187w。
我怎么对都对不上?是不是哪儿有问题?谢谢!

沙发
JY-DX-JY|  楼主 | 2015-6-12 20:20 | 只看该作者
  /* Select ICCID ----------------------------------------------------------*/
    if(((SC_Responce.SW1 << 8) | (SC_Responce.SW2)) == SC_OP_TERMINATED)     //9000
    {
      /* Check if the CHV1 is enabled */
      if((SC_Responce.Data[13] & 0x80) == 0x00)     //93                       这一步,CHV1Status=0x00
      {
        CHV1Status = 0x01;                                                                  
      }
      /* Send APDU Command for ICCID selection */
      SC_ADPU.Header.CLA = SC_CLA_GSM11;      //A0
      SC_ADPU.Header.INS = SC_SELECT_FILE;     //A4
      SC_ADPU.Header.P1 = 0x00;
      SC_ADPU.Header.P2 = 0x00;
      SC_ADPU.Body.LC = 0x02;
      for(i = 0; i < SC_ADPU.Body.LC; i++)
      {
        SC_ADPU.Body.Data = ICCID;
      }
      while(i < LC_MAX)
      {
        SC_ADPU.Body.Data[i++] = 0;
      }
      SC_ADPU.Body.LE = 0;
      SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
    }

使用特权

评论回复
板凳
JY-DX-JY|  楼主 | 2015-6-12 20:22 | 只看该作者
/* Read Binary in IMSI ---------------------------------------------------*/
    if(CHV1Status == 0x00)
    {
      if(((SC_Responce.SW1 << 8) | (SC_Responce.SW2)) == SC_OP_TERMINATED)  //9000
      {
//    USART_SendData(USART1,0x13);
//      delay1(2);
        /* Enable CHV1 (PIN1) ------------------------------------------------*/                         //CHV1Status=0x00,进到这里来
        SC_ADPU.Header.CLA = SC_CLA_GSM11;          //A0
        SC_ADPU.Header.INS = SC_ENABLE;            //28
        SC_ADPU.Header.P1 = 0x00;
        SC_ADPU.Header.P2 = 0x01;
        SC_ADPU.Body.LC = 0x08;
        for(i = 0; i < SC_ADPU.Body.LC; i++)
        {
          SC_ADPU.Body.Data = CHV1;
//     USART_SendData(USART1,SC_ADPU.Body.Data);       //30 30 30 30 30 30 30 30
//      delay1(2);
        }
        while(i < LC_MAX)
        {
          SC_ADPU.Body.Data[i++] = 0;
        }
        SC_ADPU.Body.LE = 0;
        SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
      }
    }
    else
    {
      if(((SC_Responce.SW1 << 8) | (SC_Responce.SW2)) == SC_OP_TERMINATED)
      {
        /* Verify CHV1 (PIN1) ------------------------------------------------*/
        SC_ADPU.Header.CLA = SC_CLA_GSM11;
        SC_ADPU.Header.INS = SC_VERIFY;
        SC_ADPU.Header.P1 = 0x00;
        SC_ADPU.Header.P2 = 0x01;
        SC_ADPU.Body.LC = 0x08;
        for(i = 0; i < SC_ADPU.Body.LC; i++)
        {
          SC_ADPU.Body.Data = CHV1;
        }
        while(i < LC_MAX)
        {
          SC_ADPU.Body.Data[i++] = 0;
        }
        SC_ADPU.Body.LE = 0;
        SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
      }
    }
得到的SW1=0x98,SW2=0x40,是什么意思呢?手册上没查到,往下进行不下去了。高手支招!谢谢!

使用特权

评论回复
地板
FireRiver9| | 2015-6-12 21:26 | 只看该作者
帮你顶起,大家来帮忙

使用特权

评论回复
5
JY-DX-JY|  楼主 | 2015-6-13 12:30 | 只看该作者
译码算出来SC_A2R.T[0]=0x11,可是程序里
void SC_PTSConfig(void)
{
  RCC_ClocksTypeDef RCC_ClocksStatus;
  uint32_t workingbaudrate = 0, apbclock = 0;
  uint8_t locData = 0, PTSConfirmStatus = 1;
  USART_InitTypeDef USART_InitStructure;
  USART_ClockInitTypeDef USART_ClockInitStructure;
/* Reconfigure the USART Baud Rate -------------------------------------------*/
  RCC_GetClocksFreq(&RCC_ClocksStatus);
  apbclock = RCC_ClocksStatus.PCLK1_Frequency;
  apbclock /= ((SC_USART->GTPR & (uint16_t)0x00FF) * 2);
  /* Enable the DMA Receive (Set DMAR bit only) to enable interrupt generation
     in case of a framing error FE */
  USART_DMACmd(SC_USART, USART_DMAReq_Rx, ENABLE);

  if((SC_A2R.T0 & (uint8_t)0x10) == 0x10)
  {
    if(SC_A2R.T[0] != 0x11)                                              //这个地方是不等于11,怎么回事呀?大神解惑。谢谢!
    {

使用特权

评论回复
6
zh113214| | 2015-6-13 18:47 | 只看该作者
不错不错不错不错不错不错不错不错不错不错

使用特权

评论回复
7
JY-DX-JY|  楼主 | 2015-6-14 07:02 | 只看该作者
顶一个,别沉了。

使用特权

评论回复
8
JY-DX-JY|  楼主 | 2015-6-14 13:14 | 只看该作者
今天发帖子的好多。

使用特权

评论回复
9
JY-DX-JY|  楼主 | 2015-6-14 20:06 | 只看该作者
周末大家都很忙。

使用特权

评论回复
10
insignal| | 2015-6-14 21:43 | 只看该作者
你这东西是公司项目还是纯粹自己爱好?

使用特权

评论回复
11
JY-DX-JY|  楼主 | 2015-6-15 08:56 | 只看该作者
公司项目。

使用特权

评论回复
12
JY-DX-JY|  楼主 | 2015-6-15 11:31 | 只看该作者
有没有人知道啊?貌似搞这个的人少啊!

使用特权

评论回复
13
JY-DX-JY|  楼主 | 2015-6-15 13:14 | 只看该作者
救救我啊!

使用特权

评论回复
14
sinshine| | 2015-6-15 14:45 | 只看该作者
老卡请看考3GPP 11.11 EF_ICCID,BCD编码

使用特权

评论回复
15
JY-DX-JY|  楼主 | 2015-6-15 16:14 | 只看该作者
谢谢!
我找到了,内容如下:
1、        在MF级别下的EF的内容
在MF级别下只能有一个EF文件。
(1)、EFiccid(ICC鉴别文件)
这个文件为SIM提供了一个唯一的识别码。

识别符:0x2FE2        结构:透明        必须的
文件大小:10个字节        更新级别:低
访问条件:
读:always。
更新:never。
        使无效:ADM。
        恢复:ADM。
字节        描述        M/O(必须或可选)        长度
1-10        识别码        M        10个字节
识别码:
容量:以CCITT E.118[17],SIM卡在阶段1使用的网络操作符,它的识别码的长度为20个数字,它将保持这个长度。
目的:卡识别码
编码:BCD码。
第一个字节:
B1 B2 B3 B4:数字1
B5 B6 B7 B8:数字2
第二个字节:
B1 B2 B3 B4:数字3
B5 B6 B7 B8:数字4
等等。
可是还是对不上,我无语啦!

使用特权

评论回复
16
zhangrui2004| | 2015-6-19 09:59 | 只看该作者
公司项目可以问代理商啊

使用特权

评论回复
17
JY-DX-JY|  楼主 | 2015-6-19 10:22 | 只看该作者
没有代理商。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:晴天响霹雳,平地一声雷。

245

主题

3351

帖子

30

粉丝