You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:15:02