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

Dependencies:   BD_SD_DISCO_F769NI BSP_DISCO_F769NI

Fork of DISCO-F746NG_BLOCK_DEVICE_WITH_FAT_FILESYSTEM_ON_SDCARD by Roy Krikke

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

Committer:
kenjiArai
Date:
Thu Jan 14 00:40:36 2021 +0000
Revision:
8:12621f1fcbbe
Parent:
4:0f7797c2d3fe
run on mbed-os6.6.0

Who changed what in which revision?

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