first commit
This commit is contained in:
commit
e6a42e28e9
4355 changed files with 4626605 additions and 0 deletions
93
libraries/SdFat/examples/Rp2040SdioSetup/Rp2040SdioSetup.ino
Normal file
93
libraries/SdFat/examples/Rp2040SdioSetup/Rp2040SdioSetup.ino
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
// RP2040 PIO SDIO setup and test.
|
||||
/*
|
||||
This example requires a SDIO Card socket with the following six lines.
|
||||
|
||||
CLK - A clock signal sent to the card by the MCU.
|
||||
CMD - A bidirectional line for for commands and responses.
|
||||
DAT[0:3] - Four bidirectional lines for data transfer.
|
||||
|
||||
CLK and CMD can be connected to any GPIO pins. DAT[0:3] can be connected
|
||||
to any four consecutive GPIO pins in the order DAT0, DAT1, DAT2, DAT3.
|
||||
|
||||
For testing, I use several RP2040/RP3350 boards.
|
||||
The Adafruit Metro RP2040 which has a builtin SDIO socket.
|
||||
|
||||
https://learn.adafruit.com/adafruit-metro-rp2040
|
||||
|
||||
I use this SD socket breakout board for other boards.
|
||||
|
||||
https://learn.adafruit.com/adafruit-microsd-spi-sdio
|
||||
|
||||
Wires should be short since signals can be as faster than 50 MHz.
|
||||
*/
|
||||
#define DISABLE_FS_H_WARNING // Disable warning for type File not defined.
|
||||
#include "SdFat.h"
|
||||
//------------------------------------------------------------------------------
|
||||
// Example GPIO definitions I use for debug. Edit for your setup.
|
||||
// Run this example as is to print the symbol for your variant.
|
||||
//
|
||||
#if defined(ARDUINO_ADAFRUIT_METRO_RP2040)
|
||||
#define RP_CLK_GPIO 18
|
||||
#define RP_CMD_GPIO 19
|
||||
#define RP_DAT0_GPIO 20 // DAT1: GPIO21, DAT2: GPIO22, DAT3: GPIO23.
|
||||
#elif defined(ARDUINO_RASPBERRY_PI_PICO) || defined(ARDUINO_RASPBERRY_PI_PICO_2)
|
||||
#define RP_CLK_GPIO 16
|
||||
#define RP_CMD_GPIO 17
|
||||
#define RP_DAT0_GPIO 18 // DAT1: GPIO19, DAT2: GPIO20, DAT3: GPIO21.
|
||||
#elif defined(ARDUINO_ADAFRUIT_FEATHER_RP2350_HSTX)
|
||||
#define RP_CLK_GPIO 11
|
||||
#define RP_CMD_GPIO 10
|
||||
#define RP_DAT0_GPIO 22 // DAT1: GPIO23, DAT2: GPIO24, DAT3: GPIO25.
|
||||
#endif // defined(ARDUINO_ADAFRUIT_METRO_RP2040))
|
||||
|
||||
#if defined(RP_CLK_GPIO) && defined(RP_CMD_GPIO) && defined(RP_DAT0_GPIO)
|
||||
#define SD_CONFIG SdioConfig(RP_CLK_GPIO, RP_CMD_GPIO, RP_DAT0_GPIO)
|
||||
#else // defined(RP_CLK_GPIO) && defined(RP_CMD_GPIO) && defined(RP_DAT0_GPIO)
|
||||
#warning "Undefined SD_CONFIG. Run this program for the Variant Symbol."
|
||||
#endif // defined(RP_CLK_GPIO) && defined(RP_CMD_GPIO) && defined(RP_DAT0_GPIO)
|
||||
//------------------------------------------------------------------------------
|
||||
// Class File is not defined by SdFat since the RP2040 system defines it.
|
||||
// 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT.
|
||||
#define SD_FAT_TYPE 3
|
||||
|
||||
#if SD_FAT_TYPE == 1
|
||||
SdFat32 sd;
|
||||
File32 file;
|
||||
#elif SD_FAT_TYPE == 2
|
||||
SdExFat sd;
|
||||
ExFile file;
|
||||
#elif SD_FAT_TYPE == 3
|
||||
SdFs sd;
|
||||
FsFile file;
|
||||
#else // SD_FAT_TYPE
|
||||
#error Invalid SD_FAT_TYPE
|
||||
#endif // SD_FAT_TYPE
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
while (!Serial) {
|
||||
yield();
|
||||
}
|
||||
Serial.println("Type any character to start\n");
|
||||
while (!Serial.available()) {
|
||||
yield();
|
||||
}
|
||||
Serial.print("Variant Symbol: ");
|
||||
Serial.print("ARDUINO_");
|
||||
Serial.println(BOARD_NAME);
|
||||
Serial.println();
|
||||
#if defined(SD_CONFIG)
|
||||
if (!sd.begin(SD_CONFIG)) {
|
||||
sd.initErrorHalt(&Serial);
|
||||
}
|
||||
Serial.println("Card successfully initialized.");
|
||||
Serial.println("\nls:");
|
||||
sd.ls(LS_A | LS_DATE | LS_SIZE); // Add LS_R for recursive list.
|
||||
Serial.println("\nDone! Try the bench example next.");
|
||||
#else // #if defined(SD_CONFIG)
|
||||
Serial.println("Error: SD_CONFIG undefined for your board.");
|
||||
Serial.println("Define RP_CLK_GPIO, RP_CMD_GPIO, and RP_DAT0_GPIO above.");
|
||||
#endif
|
||||
}
|
||||
|
||||
void loop() {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue