以前调试一直正常,最近重新使用新模块发现居然不能选卡,寻卡防冲撞都正常。一直折腾了两三天,最后更改复位延时直接解决问题。
/
//功 能:复位RC522
//返 回: 成功返回MI_OK
/
char PcdReset(void)
{
//unsigned char i;
MF522_RST(GPIO_PIN_SET);
delay_us(10);/新添加的
//__NOP(); //原来的
MF522_RST(GPIO_PIN_RESET);
delay_us(10);
// __NOP();
MF522_RST(GPIO_PIN_SET);
delay_us(10);
// __NOP();
WriteRawRC(CommandReg,PCD_RESETPHASE);
delay_us(10);
// __NOP();
MF522_State = 0;
WriteRawRC(ModeReg,0x3D); //和Mifare卡通讯,CRC初始值0x6363
WriteRawRC(TReloadRegL,30); //定时器的低8位数据,
WriteRawRC(TReloadRegH,0); //定时器的高8位数据,
WriteRawRC(TModeReg,0x8D); //定时器模式寄存器,定时器减值计数
WriteRawRC(TPrescalerReg,0x3E); //实际值是OXD3E,这部分主要是设置定时器寄存器,
WriteRawRC(TxAutoReg,0x40); //必须要,设置逻辑1,强制100%ASK调制?
return MI_OK;
}