rqxuan 发表于 2015-4-20 02:49:54

RC522 用单片机读卡序列号为什么一直不成功呢?

我最近在用MF RC522模块和AT89C52做东西,但是怎么都完成不了第一步操作。我现在就想先把卡号读出来。但是程序一到有关卡的部分就嗝屁了,求大神帮忙!

这是我的主函数程序:
Led用做断点测试
void main( )
{
unsigned char status;
InitializeSystem( );//初始化:单片机所有引脚置1
LED_GREEN = 0;//////
// while(1){}
PcdReset();//重置RC522
PcdAntennaOff();
PcdAntennaOn(); //重启天线
M500PcdConfigISOType( 'A' ); //ISO14443_A
LED_RED = 0;//////
while ( 1 )
{
// PcdAntennaOff();
// status = 23 ;
status = PcdRequest(PICC_REQALL, g_ucTempbuf);
LED_YELLOW=0; //////程序执行到这儿执行不下去了;
if(status != MI_OK)
{
LED_GREEN = 1; //!LED_GREEN;
continue;
}
// LED_GREEN = 0;

status = PcdAnticoll(g_ucTempbuf); //卡号 *pSnr
if (status != MI_OK)
{ continue; }

status = PcdSelect(g_ucTempbuf); //pSnr:卡片序列号,4字节
if (status != MI_OK)
{ continue; }

status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//A密钥,块地址1,密码,卡片序列号
if (status != MI_OK)
{ continue; }

status = PcdWrite(1, data1); //块地址,写入的数据(16字节)
if (status != MI_OK)
{ continue; }

status = PcdValue(PICC_DECREMENT,1,data2); //增减值(扣款,钱包地址,4字节增减值)
if (status != MI_OK)
{ continue; }

status = PcdBakValue(1, 2); //备份钱包(源地址,目标地址)
if (status != MI_OK)
{ continue; }

status = PcdRead(2, g_ucTempbuf); //块地址,读出数据
if (status != MI_OK)
{ continue; }

PcdHalt();
// PcdAntennaOff();

}
}



每次执行到
status = PcdRequest(PICC_REQALL, g_ucTempbuf);
这条指令的时候就嗝屁了

rqxuan 发表于 2015-4-20 02:52:52

RE: RC522 用单片机读卡序列号为什么一直不成功呢?

现在就想先把序列号读出来,可是一直搞不定http://imgsrc.baidu.com/forum/w%3D580/sign=06b5a10530fae6cd0cb4ab693fb20f9e/a670997eca8065389d49e42192dda144ac3482c0.jpg

tsaiwn 发表于 2015-4-20 12:00:26

确定连接正确吗 ?

信号      Pin            Pin
名称    Arduino Uno      MFRC522 board
----------------------------------------
Reset       9               RST
SPI SS   10               SDA
SPI MOSI   11               MOSI
SPI MISO   12               MISO
SPI SCK    13               SCK

mostblack 发表于 2015-4-20 16:34:51

tsaiwn 发表于 2015-4-20 12:00 static/image/common/back.gif
确定连接正确吗 ?

信号      Pin            Pin


他用的51.。。

tsaiwn 发表于 2015-4-20 18:45:40

mostblack 发表于 2015-4-20 16:34 static/image/common/back.gif
他用的51.。。

对喔
没注意到他说AT89C52
还写了 main( )
那怎跑到这来问 ?
不是应该去 51 的论坛问 ?

mostblack 发表于 2015-4-20 22:50:36

你可以用Arduino 有个RFID的库,可以直接读

小西西 发表于 2015-4-29 15:56:44

mostblack 发表于 2015-4-20 22:50 static/image/common/back.gif
你可以用Arduino 有个RFID的库,可以直接读

求下载地址,谢谢
页: [1]
查看完整版本: RC522 用单片机读卡序列号为什么一直不成功呢?