@@ -45,8 +45,13 @@ FatVolume fatfs;
45
45
46
46
#if defined(ARDUINO_PYPORTAL_M4) || defined(ARDUINO_PYPORTAL_M4_TITANO)
47
47
// 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
50
55
#else
51
56
#define SDCARD_CS 10
52
57
// no detect
@@ -113,17 +118,15 @@ void setup() {
113
118
usb_msc.setUnitReady (1 , true );
114
119
#endif
115
120
116
- // while ( !Serial ) delay(10); // wait for native usb
121
+ // while ( !Serial ) delay(10); // wait for native usb
117
122
Serial.println (" Adafruit TinyUSB Mass Storage External Flash + SD Card example" );
118
123
delay (1000 );
119
124
}
120
125
121
- bool init_sdcard (void )
122
- {
126
+ bool init_sdcard (void ) {
123
127
Serial.print (" Init SDCard ... " );
124
128
125
- if ( !sd.begin (SDCARD_CS, SD_SCK_MHZ (50 )) )
126
- {
129
+ if (!sd.begin (SDCARD_CS, SD_SCK_MHZ (50 ))) {
127
130
Serial.print (" Failed " );
128
131
sd.errorPrint (" sd.begin() failed" );
129
132
@@ -138,33 +141,29 @@ bool init_sdcard(void)
138
141
block_count = sd.card ()->cardSize ();
139
142
#endif
140
143
141
-
142
144
usb_msc.setCapacity (1 , block_count, 512 );
143
145
usb_msc.setReadWriteCallback (1 , sdcard_read_cb, sdcard_write_cb, sdcard_flush_cb);
144
146
145
147
sd_changed = true ; // to print contents initially
146
148
147
149
Serial.print (" OK, Card size = " );
148
- Serial.print ((block_count / (1024 * 1024 )) * 512 );
150
+ Serial.print ((block_count / (1024 * 1024 )) * 512 );
149
151
Serial.println (" MB" );
150
152
151
153
return true ;
152
154
}
153
155
154
- void print_rootdir (File32* rdir)
155
- {
156
+ void print_rootdir (File32* rdir) {
156
157
File32 file;
157
158
158
159
// Open next file in root.
159
160
// Warning, openNext starts at the current directory position
160
161
// so a rewind of the directory may be required.
161
- while ( file.openNext (rdir, O_RDONLY) )
162
- {
162
+ while (file.openNext (rdir, O_RDONLY)) {
163
163
file.printFileSize (&Serial);
164
164
Serial.write (' ' );
165
165
file.printName (&Serial);
166
- if ( file.isDir () )
167
- {
166
+ if (file.isDir ()) {
168
167
// Indicate a directory.
169
168
Serial.write (' /' );
170
169
}
@@ -173,18 +172,14 @@ void print_rootdir(File32* rdir)
173
172
}
174
173
}
175
174
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) {
182
178
flash_formatted = fatfs.begin (&flash);
183
179
}
184
180
185
181
// skip if still not formatted
186
- if (flash_formatted)
187
- {
182
+ if (flash_formatted) {
188
183
File32 root;
189
184
root = fatfs.open (" /" );
190
185
@@ -198,8 +193,7 @@ void loop()
198
193
flash_changed = false ;
199
194
}
200
195
201
- if ( sd_changed )
202
- {
196
+ if (sd_changed) {
203
197
File32 root;
204
198
root = sd.open (" /" );
205
199
@@ -275,18 +269,14 @@ void sdcard_flush_cb (void)
275
269
#ifdef SDCARD_DETECT
276
270
// Invoked when received Test Unit Ready command.
277
271
// 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 ) {
280
273
// Card is inserted
281
- if ( digitalRead (SDCARD_DETECT) == HIGH )
282
- {
274
+ if (digitalRead (SDCARD_DETECT) == SDCARD_DETECT_ACTIVE) {
283
275
// init SD card if not already
284
- if ( !sd_inited )
285
- {
276
+ if (!sd_inited) {
286
277
sd_inited = init_sdcard ();
287
278
}
288
- }else
289
- {
279
+ } else {
290
280
sd_inited = false ;
291
281
usb_msc.setReadWriteCallback (1 , NULL , NULL , NULL );
292
282
}
0 commit comments