各位前辈,有没有使用过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();//复位应答处理函数