Example of using block device class for creating a block device to access a SD/MMC card via SD/MMC interface on DISCO_F746NG
Dependencies: BD_SD_DISCO_F746NG
Example of using block device class for creating a block device to access a SD/MMC card via SD/MMC interface on DISCO_F746NG development board. This block device API provides an interface for access to block-based storage. You can use a block device to back a full file system or write to it directly. More about Block Devices
Diff: main.cpp
- Revision:
- 0:4cdf28a602a8
- Child:
- 1:ffacc9d0b308
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Mar 24 19:11:15 2018 +0000 @@ -0,0 +1,56 @@ +#include "mbed.h" +#include "BD_SD_DISCO_F746NG.h" + +DigitalOut led (LED1); + +// Instantiate the Block Device for sd card on DISCO-F746NG +BD_SD_DISCO_F746NG bd; +uint8_t block[512] = "Hello World!\n"; + +int +main () { + Serial pc (SERIAL_TX, SERIAL_RX); + pc.baud (115200); + printf ("Start\n"); + + // Call the BD_SD_DISCO_F746NG instance initialisation method. + printf ("sd card init...\n"); + if (0 != bd.init ()) { + printf ("Init failed \n"); + return -1; + } + + printf ("sd size: %llu\n", bd.size ()); + printf ("sd read size: %llu\n", bd.get_read_size ()); + printf ("sd program size: %llu\n", bd.get_program_size ()); + printf ("sd erase size: %llu\n\n", bd.get_erase_size ()); + + printf ("sd erase...\n"); + if (0 != bd.erase (0, bd.get_erase_size ())) { + printf ("Error Erasing block \n"); + } + + // Write some the data block to the device + printf ("sd write: %s\n", block); + if (0 == bd.program (block, 0, 512)) { + // read the data block from the device + printf ("sd read: "); + if (0 == bd.read (block, 0, 512)) { + // print the contents of the block + printf ("%s", block); + } + } + + // Call the BD_SD_DISCO_F746NG instance de-initialisation method. + printf ("sd card deinit...\n"); + if (0 != bd.deinit ()) { + printf ("Deinit failed \n"); + return -1; + } + + // Blink led with 2 Hz + while (true) { + led = !led; + wait (0.5); + } +}