@@ -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 }
0 commit comments