首先介绍一下.
我正在尝试使Arduino的MFRC522库在C语言编程的ATmega328上工作(我首先使用一个“正常”控制器,使它在以后的状态下工作在一个覆盆子皮上)。
我将.h和.cpp从库复制到自己的项目中,并将.c重命名为.cpp。删除.h文件中的类之后,就可以使用.c文件了。我将所有‘字节’语句替换为‘uint8t’,将'Serial.print‘替换为printf,并对GPIO和SPI进行了更改。
问题。,在犯了一些小错误后,我终于从一张钥匙卡上得到了数据。不管它看起来如何工作,我从卡片上读取第58行时出错了。错误是:
MIFARE_READ()失败: MIFARE PICC用NAK作出回应。
我在SPI的写和读中添加了一个打印语句,发现了下面的区别(左边是C版本,右边是Arduino版本):(由于我的声誉,这张图片可以在代码部分提到的BitBucket中找到)
代码代码代码很长,但我做了可在BitBucket上获得
我希望有人能指点我去哪看(一些C++ >> C的不同解释),因为我不知道该去哪里看了。
砂光机
发布于 2016-01-12 02:47:47
您需要在读和写之前运行PCD_Authenticate函数。链接的github库中有几个预先编程的密钥,将对这些卡进行身份验证。因为我使用的是KEY_B,而不是KEY_A,所以当我试图写到卡片时,我得到了它。您可以看到在GitHub页面上提供的示例中使用了这个身份验证。应该是这样的。
status = (MFRC522::StatusCode) mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));据我所知,NAK仅仅意味着使用了错误的密钥,或者没有密钥。
https://stackoverflow.com/questions/26719509
复制相似问题