首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFRC522 PICC响应NAK (将MFRC522 arduino库[C++]移植到[C])

MFRC522 PICC响应NAK (将MFRC522 arduino库[C++]移植到[C])
EN

Stack Overflow用户
提问于 2014-11-03 17:23:52
回答 1查看 3.2K关注 0票数 2

首先介绍一下.

我正在尝试使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的不同解释),因为我不知道该去哪里看了。

砂光机

EN

回答 1

Stack Overflow用户

发布于 2016-01-12 02:47:47

您需要在读和写之前运行PCD_Authenticate函数。链接的github库中有几个预先编程的密钥,将对这些卡进行身份验证。因为我使用的是KEY_B,而不是KEY_A,所以当我试图写到卡片时,我得到了它。您可以看到在GitHub页面上提供的示例中使用了这个身份验证。应该是这样的。

代码语言:javascript
复制
status = (MFRC522::StatusCode) mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));

据我所知,NAK仅仅意味着使用了错误的密钥,或者没有密钥。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26719509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档