【ESP32】Adafruit_PN532库用于ESP32上时出现的问题及解决方法

目录

问题描述

出现问题的环境

问题出现的原因

解决方法

具体步骤如下

资源下载

原创不易,点个赞或者点个关注激励笔者分享更多优质原创内容吧!

开源万岁!


问题描述

在ArduinoIDE上使用Adafruit_PN532库,编译官方示例文件中的iso14443a_uid文件到ESP32板子中,串口监视器提示无法找到PN532(Can't find board PN532)

出现问题的环境

Arduino IDE V2.0.0-rc9.2

ESP32-Wroom-DA Module

Adafruit_PN532库 V1.2.2

PN532与ESP32使用SPI通信

问题出现的原因

Adafruit_PN532库本身是适配于Adafruit的PN532开发板,虽然从其库的github上可以看到ESP32通过了使用测试,但是在issues问题页上可以看到有很多用户也困扰于这个库用于ESP32提示Can't find board PN532的问题,从评论区可以看到,问题的原因应该是:

       Adafruit_PN532库中设定的SPI通信速度过快,导致找不到PN532 

此处附上该Issues页

ESP32 SPI · Issue #80 · adafruit/Adafruit-PN532 · GitHub

解决方法

修改库文件中.c文件的SPI通信速度配置

具体步骤如下

  • 点击文件->首选项

 

  • 找到项目文件夹地址并在文件夹中打开

  •  点进libraries文件夹,这里就是你下载的库的存放位置

  • 点进你要查看的库,这里我们点击Adafruit_PN532

 

  • 打开Adafruit_PN532.cpp文件

 

  •  在Adafruit_PN532.cpp文件的第1行添加下列代码用于SPI速度的宏定义配置
#ifdef ESP32
#define SPI_FREQ 100000
#else
#define SPI_FREQ 1000000
#endif

这里解释一下,因为如果使用了Arduino IDE环境来对ESP32进行编程,且使用了官方提供的开发板包,那么就会define ESP32标识符,这里通过这一点来进行SPI速度的选择

  • 然后将Adafruit_PN532.cpp文件第128行的函数修改为下面的函数
Adafruit_PN532::Adafruit_PN532(uint8_t clk, uint8_t miso, uint8_t mosi,
                               uint8_t ss) {
  spi_dev = new Adafruit_SPIDevice(ss, clk, miso, mosi, SPI_FREQ,
                                   SPI_BITORDER_LSBFIRST, SPI_MODE0);
}
  • 155行的函数修改为下面的函数
Adafruit_PN532::Adafruit_PN532(uint8_t ss) {
    spi_dev = new Adafruit_SPIDevice(ss, SPI_FREQ, SPI_BITORDER_LSBFIRST, SPI_MODE0);
}

这里其实就是将库文件中本来写死的SPI频率改成刚刚宏定义的SPI频率

修改后记得保存Adafruit_PN532.cpp文件

修改后再次编译官方示例,发现PN532在ESP32上正常工作了!

资源下载

下面是修改好的库,直接替换原来的文件就行

已经设置为免费下载

可适用于ESP32的Adafruit_PN532库-嵌入式文档类资源-CSDN下载

原创不易,点个赞或者点个关注激励笔者分享更多优质原创内容吧!

开源万岁!

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__Witheart__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值