microSD Card control function for DISCO-F469NI based on BD_SD_DISCO_F746NG library by Roy Krikke

Dependencies:   BSP_DISCO_F469NI_modified BD_SD_DISCO_F469NI

Fork of DISCO-F769NI_BD_SD_Card_Control by Kenji Arai

Please refer following my Notebook page.
/users/kenjiArai/notebook/sd-card-control-new/

Committer:
kenjiArai
Date:
Thu Jan 14 00:38:59 2021 +0000
Revision:
11:a13b9833d5f4
Parent:
9:b819be925e97
run on mbed-os6.6.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 4:0f7797c2d3fe 1 /* Example file of using SD/MMC Block device Library for MBED-OS
kenjiArai 4:0f7797c2d3fe 2 * Copyright 2017 Roy Krikke
kenjiArai 4:0f7797c2d3fe 3 *
kenjiArai 4:0f7797c2d3fe 4 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 4:0f7797c2d3fe 5 * you may not use this file except in compliance with the License.
kenjiArai 4:0f7797c2d3fe 6 * You may obtain a copy of the License at
kenjiArai 4:0f7797c2d3fe 7 *
kenjiArai 4:0f7797c2d3fe 8 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 4:0f7797c2d3fe 9 *
kenjiArai 4:0f7797c2d3fe 10 * Unless required by applicable law or agreed to in writing, software
kenjiArai 4:0f7797c2d3fe 11 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 4:0f7797c2d3fe 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 4:0f7797c2d3fe 13 * See the License for the specific language governing permissions and
kenjiArai 4:0f7797c2d3fe 14 * limitations under the License.
kenjiArai 4:0f7797c2d3fe 15 *
kenjiArai 4:0f7797c2d3fe 16 */
kenjiArai 8:3c5373ba612a 17
kenjiArai 8:3c5373ba612a 18 // ORIGINAL PROGRAM
kenjiArai 8:3c5373ba612a 19 // https://os.mbed.com/users/roykrikke/code/BD_SD_DISCO_F746NG/
kenjiArai 8:3c5373ba612a 20 //
kenjiArai 8:3c5373ba612a 21 // Modified by K.Arai
kenjiArai 11:a13b9833d5f4 22 // January 14th, 2021
kenjiArai 8:3c5373ba612a 23 //
kenjiArai 8:3c5373ba612a 24
kenjiArai 8:3c5373ba612a 25 #include "select_program.h"
kenjiArai 8:3c5373ba612a 26 #ifdef MAIN_2
kenjiArai 8:3c5373ba612a 27
kenjiArai 4:0f7797c2d3fe 28 #include "mbed.h"
kenjiArai 4:0f7797c2d3fe 29 #include "FATFileSystem.h"
kenjiArai 8:3c5373ba612a 30 #include "SDBlockDeviceDISCOF469NI.h"
kenjiArai 4:0f7797c2d3fe 31 #include <stdio.h>
kenjiArai 4:0f7797c2d3fe 32 #include <errno.h>
kenjiArai 11:a13b9833d5f4 33 #include "uart_as_stdio.h"
kenjiArai 11:a13b9833d5f4 34
kenjiArai 4:0f7797c2d3fe 35 DigitalOut led (LED1);
kenjiArai 8:3c5373ba612a 36 SDBlockDeviceDISCOF469NI bd;
kenjiArai 4:0f7797c2d3fe 37 FATFileSystem fs ("fs");
kenjiArai 11:a13b9833d5f4 38
kenjiArai 4:0f7797c2d3fe 39 void
kenjiArai 4:0f7797c2d3fe 40 return_error (int ret_val)
kenjiArai 4:0f7797c2d3fe 41 {
kenjiArai 4:0f7797c2d3fe 42 if(ret_val)
kenjiArai 4:0f7797c2d3fe 43 printf ("Failure. %d\r\n", ret_val);
kenjiArai 4:0f7797c2d3fe 44 else
kenjiArai 4:0f7797c2d3fe 45 printf ("done.\r\n");
kenjiArai 4:0f7797c2d3fe 46 }
kenjiArai 11:a13b9833d5f4 47
kenjiArai 4:0f7797c2d3fe 48 void
kenjiArai 4:0f7797c2d3fe 49 errno_error (void* ret_val)
kenjiArai 4:0f7797c2d3fe 50 {
kenjiArai 4:0f7797c2d3fe 51 if(ret_val == NULL)
kenjiArai 4:0f7797c2d3fe 52 printf (" Failure. %d \r\n", errno);
kenjiArai 4:0f7797c2d3fe 53 else
kenjiArai 4:0f7797c2d3fe 54 printf (" done.\r\n");
kenjiArai 4:0f7797c2d3fe 55 }
kenjiArai 11:a13b9833d5f4 56
kenjiArai 4:0f7797c2d3fe 57 int
kenjiArai 4:0f7797c2d3fe 58 main ()
kenjiArai 4:0f7797c2d3fe 59 {
kenjiArai 4:0f7797c2d3fe 60 printf("Start\n");
kenjiArai 11:a13b9833d5f4 61
kenjiArai 4:0f7797c2d3fe 62 int error = 0;
kenjiArai 4:0f7797c2d3fe 63 printf("Welcome to the filesystem example.\r\n"
kenjiArai 4:0f7797c2d3fe 64 "Formatting a FAT, RAM-backed filesystem. ");
kenjiArai 4:0f7797c2d3fe 65 error = FATFileSystem::format(&bd);
kenjiArai 4:0f7797c2d3fe 66 return_error(error);
kenjiArai 11:a13b9833d5f4 67
kenjiArai 4:0f7797c2d3fe 68 printf("Mounting the filesystem on \"/fs\". ");
kenjiArai 4:0f7797c2d3fe 69 error = fs.mount(&bd);
kenjiArai 4:0f7797c2d3fe 70 return_error(error);
kenjiArai 11:a13b9833d5f4 71
kenjiArai 4:0f7797c2d3fe 72 printf("Opening a new file, numbers.txt.");
kenjiArai 4:0f7797c2d3fe 73 FILE* fd = fopen("/fs/numbers.txt", "w");
kenjiArai 4:0f7797c2d3fe 74 errno_error(fd);
kenjiArai 11:a13b9833d5f4 75
kenjiArai 4:0f7797c2d3fe 76 for (int i = 0; i < 20; i++) {
kenjiArai 4:0f7797c2d3fe 77 printf("Writing decimal numbers to a file (%d/20)\r", i);
kenjiArai 4:0f7797c2d3fe 78 fprintf(fd, "%d\r\n", i);
kenjiArai 4:0f7797c2d3fe 79 }
kenjiArai 4:0f7797c2d3fe 80 printf("Writing decimal numbers to a file (20/20) done.\r\n");
kenjiArai 11:a13b9833d5f4 81
kenjiArai 4:0f7797c2d3fe 82 printf("Closing file.");
kenjiArai 4:0f7797c2d3fe 83 fclose(fd);
kenjiArai 4:0f7797c2d3fe 84 printf(" done.\r\n");
kenjiArai 11:a13b9833d5f4 85
kenjiArai 4:0f7797c2d3fe 86 printf("Re-opening file read-only.");
kenjiArai 4:0f7797c2d3fe 87 fd = fopen("/fs/numbers.txt", "r");
kenjiArai 4:0f7797c2d3fe 88 errno_error(fd);
kenjiArai 11:a13b9833d5f4 89
kenjiArai 4:0f7797c2d3fe 90 printf("Dumping file to screen.\r\n");
kenjiArai 4:0f7797c2d3fe 91 char buff[16] = { 0 };
kenjiArai 4:0f7797c2d3fe 92 while(!feof (fd)) {
kenjiArai 4:0f7797c2d3fe 93 int size = fread(&buff[0], 1, 15, fd);
kenjiArai 4:0f7797c2d3fe 94 fwrite(&buff[0], 1, size, stdout);
kenjiArai 4:0f7797c2d3fe 95 }
kenjiArai 4:0f7797c2d3fe 96 printf("EOF.\r\n");
kenjiArai 11:a13b9833d5f4 97
kenjiArai 4:0f7797c2d3fe 98 printf("Closing file.");
kenjiArai 4:0f7797c2d3fe 99 fclose(fd);
kenjiArai 4:0f7797c2d3fe 100 printf(" done.\r\n");
kenjiArai 11:a13b9833d5f4 101
kenjiArai 4:0f7797c2d3fe 102 printf("Opening root directory.");
kenjiArai 4:0f7797c2d3fe 103 DIR* dir = opendir("/fs/");
kenjiArai 4:0f7797c2d3fe 104 errno_error(fd);
kenjiArai 11:a13b9833d5f4 105
kenjiArai 4:0f7797c2d3fe 106 struct dirent* de;
kenjiArai 4:0f7797c2d3fe 107 printf("Printing all filenames:\r\n");
kenjiArai 4:0f7797c2d3fe 108 while((de = readdir (dir)) != NULL) {
kenjiArai 4:0f7797c2d3fe 109 printf(" %s\r\n", &(de->d_name)[0]);
kenjiArai 4:0f7797c2d3fe 110 }
kenjiArai 11:a13b9833d5f4 111
kenjiArai 4:0f7797c2d3fe 112 printf("Closeing root directory. ");
kenjiArai 4:0f7797c2d3fe 113 error = closedir(dir);
kenjiArai 4:0f7797c2d3fe 114 return_error(error);
kenjiArai 4:0f7797c2d3fe 115 printf("Filesystem Demo complete.\r\n");
kenjiArai 11:a13b9833d5f4 116
kenjiArai 4:0f7797c2d3fe 117 // Blink led with 2 Hz
kenjiArai 4:0f7797c2d3fe 118 while(true) {
kenjiArai 4:0f7797c2d3fe 119 led = !led;
kenjiArai 11:a13b9833d5f4 120 ThisThread::sleep_for(500ms);
kenjiArai 4:0f7797c2d3fe 121 }
kenjiArai 4:0f7797c2d3fe 122 }
kenjiArai 4:0f7797c2d3fe 123 #endif