打印
[应用相关]

读智能IC卡

[复制链接]
532|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
songqian17|  楼主 | 2020-3-8 17:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在读智能IC卡的过程中出现发送数据完后,不能及时转为接收。

使用特权

评论回复
沙发
chenho| | 2020-3-8 17:14 | 只看该作者
然后呢?你是怎么应对这个的呢

使用特权

评论回复
板凳
songqian17|  楼主 | 2020-3-8 17:17 | 只看该作者
因此要漏掉IC卡返回的第1个字节 INS。不知如何解决。

使用特权

评论回复
地板
huwr| | 2020-3-8 17:20 | 只看该作者
代码看看

使用特权

评论回复
5
songqian17|  楼主 | 2020-3-8 17:23 | 只看该作者
代码是参照ST公司使用ST8024芯片的代码,收发转换的部分代码如下:
   else if(SC_ADPU->Body.LE)
  {
    SCData = SC_ADPU->Body.LE;
    USART_SendData(USART_S[card_num], SCData);
          STATUS_LED=!STATUS_LED;
    while(USART_GetFlagStatus(USART_S[card_num], USART_FLAG_TC) == RESET)   
        {
        ;
        }         
  }
  /* Flush the SC_USART DR */
  USART_ReceiveData(USART3);
  USART_DMACmd(USART3, USART_DMAReq_Rx, DISABLE);  
  if((USART_ByteReceive(&locData, SC_RECEIVE_TIMEOUT)) == SUCCESS)
  {

使用特权

评论回复
6
songqian17|  楼主 | 2020-3-8 17:27 | 只看该作者

用示波器观察,IO线上发完LE后2个etu(200us),IC卡即返回一个INS字节。但上述程序检查 USART_FLAG_TC
位成功是在发送完毕后的2ms才检测到。不知是什么原因,怎样才能改进,实现快速切换到接收状态?

使用特权

评论回复
7
chenho| | 2020-3-8 17:32 | 只看该作者

为什么不用中断接收呢?

使用特权

评论回复
8
gongche| | 2020-3-8 17:36 | 只看该作者
接收为什么不一直开着?

使用特权

评论回复
9
tian111| | 2020-3-8 17:40 | 只看该作者
关键指令为什么不直接读写寄存器?

使用特权

评论回复
10
zhuhuis| | 2020-3-8 17:44 | 只看该作者
为什么不直接用 USART 的智能卡方式。

使用特权

评论回复
11
wenfen| | 2020-3-8 17:48 | 只看该作者
我用的就是USART的智能卡方式。原来ST单片机在智能卡方式时,发送数据后有个GTPR保护时间,保护时间后标志才置位。修改该时间即可。

使用特权

评论回复
12
songqian17|  楼主 | 2020-3-8 17:55 | 只看该作者
还真是,屏蔽了就OK了

使用特权

评论回复
13
kangzj| | 2020-3-8 17:58 | 只看该作者
可以不中断发,中断收

使用特权

评论回复
14
zwll| | 2020-3-8 18:01 | 只看该作者
为什么不直接读写寄存器

使用特权

评论回复
15
chuxh| | 2020-3-8 18:04 | 只看该作者
加个切换指令不就好了吗?为什么切换不过来吗

使用特权

评论回复
16
zyf部长| | 2020-3-8 18:08 | 只看该作者
怎么不中断接收?

使用特权

评论回复
17
songqian17|  楼主 | 2020-3-14 09:52 | 只看该作者
嗯,预料中的结果,多谢大家啦

使用特权

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

本版积分规则

463

主题

5749

帖子

1

粉丝