Skip to content

Commit fee8a5e

Browse files
committed
update msc sdcad example to work with metro rp2040
1 parent 59d4393 commit fee8a5e

File tree

2 files changed

+45
-39
lines changed

2 files changed

+45
-39
lines changed

examples/MassStorage/msc_external_flash_sdcard/msc_external_flash_sdcard.ino

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,13 @@ FatVolume fatfs;
4545

4646
#if defined(ARDUINO_PYPORTAL_M4) || defined(ARDUINO_PYPORTAL_M4_TITANO)
4747
// PyPortal has on-board card reader
48-
#define SDCARD_CS 32
49-
#define SDCARD_DETECT 33
48+
#define SDCARD_CS 32
49+
#define SDCARD_DETECT 33
50+
#define SDCARD_DETECT_ACTIVE HIGH
51+
#elif defined(ARDUINO_ADAFRUIT_METRO_RP2040)
52+
#define SDCARD_CS 23
53+
#define SDCARD_DETECT 15
54+
#define SDCARD_DETECT_ACTIVE LOW
5055
#else
5156
#define SDCARD_CS 10
5257
// no detect
@@ -113,17 +118,15 @@ void setup() {
113118
usb_msc.setUnitReady(1, true);
114119
#endif
115120

116-
// while ( !Serial ) delay(10); // wait for native usb
121+
// while ( !Serial ) delay(10); // wait for native usb
117122
Serial.println("Adafruit TinyUSB Mass Storage External Flash + SD Card example");
118123
delay(1000);
119124
}
120125

121-
bool init_sdcard(void)
122-
{
126+
bool init_sdcard(void) {
123127
Serial.print("Init SDCard ... ");
124128

125-
if ( !sd.begin(SDCARD_CS, SD_SCK_MHZ(50)) )
126-
{
129+
if (!sd.begin(SDCARD_CS, SD_SCK_MHZ(50))) {
127130
Serial.print("Failed ");
128131
sd.errorPrint("sd.begin() failed");
129132

@@ -138,33 +141,29 @@ bool init_sdcard(void)
138141
block_count = sd.card()->cardSize();
139142
#endif
140143

141-
142144
usb_msc.setCapacity(1, block_count, 512);
143145
usb_msc.setReadWriteCallback(1, sdcard_read_cb, sdcard_write_cb, sdcard_flush_cb);
144146

145147
sd_changed = true; // to print contents initially
146148

147149
Serial.print("OK, Card size = ");
148-
Serial.print((block_count / (1024*1024)) * 512);
150+
Serial.print((block_count / (1024 * 1024)) * 512);
149151
Serial.println(" MB");
150152

151153
return true;
152154
}
153155

154-
void print_rootdir(File32* rdir)
155-
{
156+
void print_rootdir(File32* rdir) {
156157
File32 file;
157158

158159
// Open next file in root.
159160
// Warning, openNext starts at the current directory position
160161
// so a rewind of the directory may be required.
161-
while ( file.openNext(rdir, O_RDONLY) )
162-
{
162+
while (file.openNext(rdir, O_RDONLY)) {
163163
file.printFileSize(&Serial);
164164
Serial.write(' ');
165165
file.printName(&Serial);
166-
if ( file.isDir() )
167-
{
166+
if (file.isDir()) {
168167
// Indicate a directory.
169168
Serial.write('/');
170169
}
@@ -173,18 +172,14 @@ void print_rootdir(File32* rdir)
173172
}
174173
}
175174

176-
void loop()
177-
{
178-
if ( flash_changed )
179-
{
180-
if (!flash_formatted)
181-
{
175+
void loop() {
176+
if (flash_changed) {
177+
if (!flash_formatted) {
182178
flash_formatted = fatfs.begin(&flash);
183179
}
184180

185181
// skip if still not formatted
186-
if (flash_formatted)
187-
{
182+
if (flash_formatted) {
188183
File32 root;
189184
root = fatfs.open("/");
190185

@@ -198,8 +193,7 @@ void loop()
198193
flash_changed = false;
199194
}
200195

201-
if ( sd_changed )
202-
{
196+
if (sd_changed) {
203197
File32 root;
204198
root = sd.open("/");
205199

@@ -275,18 +269,14 @@ void sdcard_flush_cb (void)
275269
#ifdef SDCARD_DETECT
276270
// Invoked when received Test Unit Ready command.
277271
// return true allowing host to read/write this LUN e.g SD card inserted
278-
bool sdcard_ready_callback(void)
279-
{
272+
bool sdcard_ready_callback(void) {
280273
// Card is inserted
281-
if ( digitalRead(SDCARD_DETECT) == HIGH )
282-
{
274+
if (digitalRead(SDCARD_DETECT) == SDCARD_DETECT_ACTIVE) {
283275
// init SD card if not already
284-
if ( !sd_inited )
285-
{
276+
if (!sd_inited) {
286277
sd_inited = init_sdcard();
287278
}
288-
}else
289-
{
279+
} else {
290280
sd_inited = false;
291281
usb_msc.setReadWriteCallback(1, NULL, NULL, NULL);
292282
}

examples/MassStorage/msc_sdfat/msc_sdfat.ino

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,30 @@
1010
*********************************************************************/
1111

1212
/* This example expose SD card as mass storage using
13-
* SdFat Library
13+
* - SdFat https://github.com/adafruit/SdFat
1414
*/
1515

1616
#include "SPI.h"
1717
#include "SdFat_Adafruit_Fork.h"
1818
#include "Adafruit_TinyUSB.h"
1919

20-
const int chipSelect = 10;
20+
//--------------------------------------------------------------------+
21+
// SDCard Config
22+
//--------------------------------------------------------------------+
23+
24+
#if defined(ARDUINO_PYPORTAL_M4) || defined(ARDUINO_PYPORTAL_M4_TITANO)
25+
// PyPortal has on-board card reader
26+
#define SDCARD_CS 32
27+
#define SDCARD_DETECT 33
28+
#define SDCARD_DETECT_ACTIVE HIGH
29+
#elif defined(ARDUINO_ADAFRUIT_METRO_RP2040)
30+
#define SDCARD_CS 23
31+
#define SDCARD_DETECT 15
32+
#define SDCARD_DETECT_ACTIVE LOW
33+
#else
34+
#define SDCARD_CS 10
35+
// no detect
36+
#endif
2137

2238
// File system on SD Card
2339
SdFat sd;
@@ -57,16 +73,16 @@ void setup() {
5773
TinyUSBDevice.attach();
5874
}
5975

60-
//while ( !Serial ) delay(10); // wait for native usb
76+
while ( !Serial ) delay(10); // wait for native usb
6177
Serial.println("Adafruit TinyUSB Mass Storage SD Card example");
6278
Serial.print("\nInitializing SD card ... ");
63-
Serial.print("CS = "); Serial.println(chipSelect);
79+
Serial.print("CS = "); Serial.println(SDCARD_CS);
6480

65-
if ( !sd.begin(chipSelect, SD_SCK_MHZ(50)) ) {
81+
if ( !sd.begin(SDCARD_CS, SD_SCK_MHZ(50)) ) {
6682
Serial.println("initialization failed. Things to check:");
6783
Serial.println("* is a card inserted?");
6884
Serial.println("* is your wiring correct?");
69-
Serial.println("* did you change the chipSelect pin to match your shield or module?");
85+
Serial.println("* did you change the SDCARD_CS pin to match your shield or module?");
7086
while (1) delay(1);
7187
}
7288

0 commit comments

Comments
 (0)