STC与FM1702SL 读卡请教
本帖最后由 ecomputer 于 2013-11-22 09:36 编辑寻卡和认证都过了,就卡在读写扇区上,一直返回CRC错误,对照了网上多份示例代码,驱动都没有问题,请各位调试过的指导一下,主要是
MIF_Read函数中,这时总是返回if((temp & 0x08) == 0x08) return FM1702_CRCERR;错误,单片机为STC89LE54RD+/****************************************************************/
/*名称: MIF_Read */
/*功能: 该函数实现读MIFARE卡块的数值*/
/*输入: buff: 缓冲区首地址*/
/* Block_Adr: 块地址*/
/*输出: FM1702_NOTAGERR: 无卡*/
/* FM1702_PARITYERR: 奇偶校验错*/
/* FM1702_CRCERR: CRC校验错*/
/* FM1702_BYTECOUNTERR: 接收字节错误*/
/* FM1702_OK: 应答正确*/
/****************************************************************/
unsigned char MIF_READ(unsigned char *buff, unsigned char Block_Adr)
{
unsigned char idata temp;
SPIWrite(CRCPresetLSB,0x63);
SPIWrite(CWConductance,0x3f);
SPIWrite(ModConductance,0x3f);
SPIWrite(ChannelRedundancy,0x0f);
//SPIWrite(Int_Req,0x7f); //Int_Req=0x7f;
buff = RF_CMD_READ;
buff = Block_Adr;
temp = Command_Send(2, buff, Transceive);
if(temp == 0)
{
return FM1702_NOTAGERR;
}
_nop_();
temp = SPIRead(ErrorFlag);
if((temp & 0x02) == 0x02) return FM1702_PARITYERR;
if((temp & 0x04) == 0x04) return FM1702_FRAMINGERR;
if((temp & 0x08) == 0x08) return FM1702_CRCERR;
temp = SPIRead(FIFO_Length);
if(temp == 0x10)
{
Read_FIFO(buff);
return FM1702_OK;
}
else if(temp == 0x04)
{
Read_FIFO(buff);
return FM1702_OK;
}
else
{
return FM1702_BYTECOUNTERR;
}
} 当时用的开发包,里面的没问题,这是从哪来的程序 sky_walker 发表于 2013-11-22 11:24 static/image/common/back.gif
当时用的开发包,里面的没问题,这是从哪来的程序
网上找的啊,兄弟能不能把你的程序共享一下 结果如何了? 楼上 我用522能读取正规m1卡,但是读两张一块钱的s50卡确只能过去id.不能读取块信息,但是能通过认证,怀疑是卡的问题
页:
[1]