现在我正在做一个项目,其中包括通过SPI通信将RC522 RFID模块与Arduino Mega2560一起使用。我决定使用MFRC522库(https://github.com/miguelbalboa/rfid),并首先通过内置示例(rfid_read_user_data.ino,https://github.com/miguelbalboa/rfid/blob/master/examples/rfid_read_personal_data/rfid_read_personal_data.ino)进行尝试。但是,RC522模块不会对Arduino做出任何回应,无论它是否已扫描RFID卡。
P.S。 1 .my Arduino Mega2560是“兼容/可剥夺”的,而不是真正的Arduino开发板。
RC522到Arduino的接线是
RESET-9
SDA(SS)-10(我相应地更改了代码中的RESET和SDA定义)
MOSI-51
MISO-50
SCK-52
要调试此类问题,我尝试了以下操作:
使用同一程序与Arduino Uno(原装)配合使用,并且按预期方式工作-我使用的RC522模块和卡没有损坏。
将SPI通信频率降低SPI.beginTransaction(SPISettings(27120000,MSBFIRST,SPI_MODE0));
,因为RC522可能无法赶上Mega2560的速度–运气不好。 (27120000是基于RC522模块上的晶体振荡频率)
将MOSI,MISO,SCK从数字引脚更改为ICSP引脚-不走运。
开机后将SS(从站)(引脚53)设置为OUTPUT-没运气。
将MOSI和MISO反向,因为有人说在某些Arduino剥离板上,UART上的TX和RX可以颠倒,而在SPI上可能是相同的情况-没运气。
现在我担心我的Arduino受到电损坏,但这仍然是软件问题吗?
P.S.S。 Arduino上的Mega2560 MCU通电后感觉很热(但不很热)。这是电气损坏的迹象吗?由于某些兼容MCS-51的MCU可能会变得很热且无法正常运行,但在短路后仍可运行代码。