打印
[STM32]

522无法写入mifare卡 选卡 防冲撞 读卡都通过了【已解决】

[复制链接]
4395|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doublemark|  楼主 | 2014-11-26 17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 doublemark 于 2015-6-2 08:26 编辑

使用的stm32f103 rc522 spi通信方式  读写522寄存器正常
具体在PcdWrite写数据函数中判断
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unLen);//unlen=4,ucommf522buf[0]=0x05 ????
        if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] & 0x0F) != 0x0A))//   
        {   status = MI_ERR;   }
直接跳到MI_ERR了,通过读值发现ucComMF522Buf[0]=0x05,其他正确,这是哪的问题?验证天线没问题,硬件可靠
解决方法见楼下本人回复

相关帖子

沙发
doublemark|  楼主 | 2014-11-27 08:16 | 只看该作者
求解决啊

使用特权

评论回复
板凳
doublemark|  楼主 | 2014-11-27 09:59 | 只看该作者
顶一个 求解决

使用特权

评论回复
地板
doublemark|  楼主 | 2014-11-27 15:32 | 只看该作者
顶上去

使用特权

评论回复
5
doublemark|  楼主 | 2014-11-28 09:16 | 只看该作者
在顶一个

使用特权

评论回复
6
ningling_21| | 2014-11-28 09:45 | 只看该作者
密码验证没通过吧

使用特权

评论回复
7
doublemark|  楼主 | 2014-11-29 11:28 | 只看该作者
ningling_21 发表于 2014-11-28 09:45
密码验证没通过吧

验证通过,可以读出各个block的数据,用的默认密码0xff,但就是无法写入

使用特权

评论回复
8
doublemark|  楼主 | 2014-12-2 09:14 | 只看该作者
问题依旧未解决

使用特权

评论回复
9
doublemark|  楼主 | 2015-6-2 08:25 | 只看该作者
已经解决,SPI初始化注意是  
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;

许多代码都是相反的,这里参考522的spi时序图可以看出来。调整之后读写稳定运行了。

使用特权

评论回复
10
___1_1___| | 2016-12-9 22:41 | 只看该作者
我是将例程中的SPI速度调低解决的,例程中SPI速度太高了。

使用特权

评论回复
11
又一个暑假| | 2016-12-14 15:17 | 只看该作者
___1_1___ 发表于 2016-12-9 22:41
我是将例程中的SPI速度调低解决的,例程中SPI速度太高了。

源码可以分享一下吗 我是在读卡型号的时候就错

   cStatus = PcdComMF522 ( PCD_TRANSCEIVE,        ucComMF522Buf, 1, ucComMF522Buf, & ulLen );        //寻卡  
  
   if ( ( cStatus == MI_OK ) && ( ulLen == 0x10 ) )        //寻卡成功返回卡类型
   {   
       * pTagType = ucComMF522Buf [ 0 ];
       * ( pTagType + 1 ) = ucComMF522Buf [ 1 ];
   }
         
   else
     cStatus = MI_ERR;


反来的ulLen 值不对

使用特权

评论回复
12
___1_1___| | 2017-3-9 11:31 | 只看该作者
又一个暑假 发表于 2016-12-14 15:17
源码可以分享一下吗 我是在读卡型号的时候就错

   cStatus = PcdComMF522 ( PCD_TRANSCEIVE,        ucComMF522 ...

源码都差不多吧,网上搜索“秉火RFID模块(WF-RC522)资料V1.0.0.ZIP”里面的代码

使用特权

评论回复
13
jiangjiayu| | 2018-4-3 13:46 | 只看该作者
终于找到一个和我一样的情况了,我读出来也是0x05(正常应该是0x0A),把优化等级调到Level0(-O0)就正常,O2就不正常。最后把SPI速度调低就好了,安全起见我也调为了
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
事实证明手册上写的SPI速度为10Mbps达不到,或我SPI线上干扰太大

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

15

帖子

0

粉丝