这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 合作大赛 » 关于智能卡接口IC芯片TDA8007B的问题

共2条 1/1 1 跳转至

关于智能卡接口IC芯片TDA8007B的问题

菜鸟
2012-10-25 09:29:53     打赏

各位前辈,有没有使用过TDA8007B芯片的帮帮小弟解决下疑难啊,现在我使用这款IC芯片对智能卡上电、复位,发现根本不起作用,别说卡的复位应答信号啦,卡的各个管脚上都没有电压迹象,麻烦各位看看能不能帮帮小弟 ,,谢谢啦~~以下是我根据网上介绍的做的初始化上电复位代码,还望赐教啊
==========================================================
 CS   = 0;   //片选 TDA8007
 CSR &= 0xf8; //复位UART
 CSR |= n_card;  // 选择卡,ncard=1,2
 
 CSR &= 0xf7;
 CSR |= 0xf7;
 CSR |= 0x08;    //UART操作前准备 //复位 UART 的寄存器
 
 UCR2 &= 0xf7;  //异步模式,SAN=0 (表示连接的是一步卡片)
 
 CCR  &= 0xdf;  //时钟停止于低电平
 
 UCR2 |= 0x60;  //关闭附加中断及收发中断
 GTR   = 0xff;  //保持时间 12ETU
 
 if(power_v == 1)  //v 为函数变量
  PCR |= 0x08; //1.8V 卡用
 else if(power_v == 3)
  PCR |= 0x02; //3V 卡用
 else
  PCR &= 0xfd;  //5V 卡用
 
 UCR2 &= 0Xfc; //CKU=PSC=0,--31
 FCR  =  0x00; //1 奇偶校验 1FIFO
 PDR  =  0x0c; //Divider=12
 CCR  =  0x00; //不分频
 PCR  &= 0xfb; //RSTIN=0
 
 UCR2 |= 0x04; //不自动转换
 UCR1  = 0x01; //正向约定
 
 UCR1   &= 0xf7;  //接收模式
 flag3   = 0;   //复位定时标志
 flagatr = 0;   //接收 ATR 首字节定时标志
 
 PCR |= 0x01;   //激活
 
 TOR2 = 0x6c;   //RST 拉高前等待 108ETU
 TOR3 = 0x00;
 TOC  = 0x61;
 send_byte(0xaA);

 while(flag3 == 0)   //定时时间到,
 {
  flag3 = TDA8007_Timer();//我采用上啦检测中断引脚INT,函数中INT拉低时返回1
 }
 
 TOC  = 0x00;    //关闭定时器
 PCR |= 0x04;   //给复位拉高
 
 TOR2 = 0x78;
 TOR3 = 0x00;
 TOC  = 0x61;   //RST 拉高前等待
 
 while(flagatr==0)
 {
  flagatr = TDA8007_Timer();(同上)
 }
 
 ATR();//复位应答处理函数




关键词: 关于     智能卡     接口     芯片     TDA8007B     问题    

高工
2013-02-24 18:34:59     打赏
2楼

信号送到了吗,可以用示波器或者逻辑分析仪看看芯片管脚的信号,先保证信号的物理电气连接时没有问题的,

然后在对照datasheet的时序图分析一下你的时序是否满足(PS:相同的程序,在不同的MCU中运行得到的时序不一定相同,即使是同一款MCU,不同主频下,时序也有差异)


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]