ESP32通过SPI同时驱动RFID与SD卡读卡器故障求助
SPI总线并联RFID与SD卡模块冲突问题
我正在使用ESP32 Dev Kit V1,将MISO、MOSI、CLK引脚并联连接到MFRC522 RFID读卡器和SD卡读卡器。拔除SD卡读卡器时,RFID读卡器工作正常;接入SD卡读卡器后,SD卡初始化正常,但RFID读卡器完全无法扫描或传输数据。
我已经尝试了以下方案,均未解决问题:
- 使用VSPI与HSPI分别驱动两个模块
- 为CS引脚添加上下拉电阻
- 修改MFRC522库的属性配置
- 在SD卡与RFID的MOSI引脚之间串联电阻
以下是我的代码:
/* * Rui Santos * Complete Project Details http://randomnerdtutorials.com */ #include <MFRC522.h> // for the RFID #include <SPI.h> // for the RFID and SD card module #include <SD.h> // for the SD card // define pins for RFID #define CS_RFID 32 #define RST_RFID 33 // define select pin for SD card module #define CS_SD 26 // Create a file to store the data File myFile; // Instance of the class for RFID MFRC522 rfid(CS_RFID, RST_RFID); // Variable to hold the tag's UID String uidString; // Instance of the class for RTC void setup() { Serial.begin(9600); while(!Serial); // for Leonardo/Micro/Zero // Init SPI bus SPI.begin(); // Init MFRC522 rfid.PCD_Init(); // Setup for the SD card Serial.print("Initializing SD card..."); if(!SD.begin(CS_SD)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // Setup for the RTC } void loop() { //look for new cards digitalWrite(CS_SD, HIGH); if(rfid.PICC_IsNewCardPresent()) { readRFID(); logCard(); } delay(10); } void readRFID() { rfid.PICC_ReadCardSerial(); Serial.print("Tag UID: "); uidString = String(rfid.uid.uidByte[0]) + " " + String(rfid.uid.uidByte[1]) + " " + String(rfid.uid.uidByte[2]) + " " + String(rfid.uid.uidByte[3]); Serial.println(uidString); } void logCard() { // Enables SD card chip select pin digitalWrite(CS_SD,LOW); // Open file myFile=SD.open("DATA.txt", FILE_WRITE); // If the file opened ok, write to it if (myFile) { Serial.println("File opened ok"); myFile.print(uidString); myFile.print(", "); } else { Serial.println("error opening data.txt"); } // Disables SD card chip select pin digitalWrite(CS_SD,HIGH); }
这个问题是我的毕业设计项目的基础功能环节,急需解决后整合到完整项目中,恳请技术支持。
内容的提问来源于stack exchange,提问作者Brent Roberson
相关产品推荐
相关产品推荐

