这将是非常具体的一个ESP32板,TTGO TDISPLAY。我能够让RC522与其他ESP32一起工作。
参考此板上的SPI引脚:https://github.com/Xinyuan-LilyGO/TTGO-T-Display/issues/32
现在,RC522正在被识别并成功返回固件号,但它不会读取卡。我已经在其他设备上验证过了。
MISO - 27
MOSI - 26
CLK - 25
CS - 33
RST - 17
我将RST设置为HIGH,就像在其他ESP32设备上一样,它读取HIGH并工作。
我不知道我是否错过了一个步骤(可能在板载显示器上禁用SPI),或者该板上的SPI是否有不同之处。我正在检查两个设备的SS, OLED和RC522都是1…然而,RC522在另一个工作的ESP32上仍然是1…
不确定这在TTGO上是否不同,因为有两个SPI, OLED和RC522。我相信他们都使用不同的SPI总线,HSPI和VSPI。OLED引脚不可访问,所以我使用另一组。
下面的代码
#include <SPI.h>
#include <MFRC522.h>
#include <TFT_eSPI.h> // Hardware-specific library
#define RST_PIN 17 // Configurable, see typical pin layout above
#define SS_PIN 33 // Configurable, see typical pin layout above
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
pinMode(RST_PIN, OUTPUT);
digitalWrite(RST_PIN, HIGH);
Serial.println("HELLO");
Serial.println(digitalRead(RST_PIN));
tft.init();
tft.fillScreen(TFT_WHITE);
SPI.begin(25,27,26); // Init SPI bus CLK, MISO, MOSI
mfrc522.PCD_Init(); // Init MFRC522
delay(4); // Optional delay. Some board do need more time after init to be ready, see Readme
mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}
void loop() {
// Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Dump debug info about the card; PICC_HaltA() is automatically called
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
无视。原来我的接地针坏了。当我换到另一个地方时,它工作得很好。
上面的代码应该适用于任何试图让RC522在TTGO TDISPLAY上工作的人。检查一下你的连接。