From 69b588328e3624c411527e039c9cc13bbd4a2b87 Mon Sep 17 00:00:00 2001 From: Daniel Fekete Date: Sat, 22 Apr 2017 08:36:26 +0200 Subject: [PATCH] Add SD card example for Black F407VE --- .../SDIODirListWriteRead.ino | 68 +++++++++++++++++++ .../SDIODirListWriteRead/STM32SdFatSdio.h | 38 +++++++++++ 2 files changed, 106 insertions(+) create mode 100644 STM32/libraries/BoardExamples/examples/BlackF407VE/SDIODirListWriteRead/SDIODirListWriteRead.ino create mode 100644 STM32/libraries/BoardExamples/examples/BlackF407VE/SDIODirListWriteRead/STM32SdFatSdio.h diff --git a/STM32/libraries/BoardExamples/examples/BlackF407VE/SDIODirListWriteRead/SDIODirListWriteRead.ino b/STM32/libraries/BoardExamples/examples/BlackF407VE/SDIODirListWriteRead/SDIODirListWriteRead.ino new file mode 100644 index 0000000..d4e6c18 --- /dev/null +++ b/STM32/libraries/BoardExamples/examples/BlackF407VE/SDIODirListWriteRead/SDIODirListWriteRead.ino @@ -0,0 +1,68 @@ +// 1. Install SdFat-beta from https://github.com/greiman/SdFat-beta +// 2. In SdFatConfig.h, Change ENABLE_SDIO_CLASS 0 to 1 + + +#include "Arduino.h" +#include "SDIO.h" +#include "STM32SdFatSdio.h" + +STM32SdFatSdio sd; + +void setup() { + Serial.begin(115200); + + for(int i=0; i<5; i++) { + delay(1000); + Serial.print("."); + } +} + +void loop() { + Serial.println("Starting"); + delay(1000); + + if (!sd.begin()) { + Serial.println("Card error"); + return; + } + + /////////////// + + Serial.println("LS:"); + sd.ls(LS_R | LS_DATE | LS_SIZE); + + /////////////// + + File file; + + Serial.println("Writing:"); + file = sd.open("test.txt", FILE_WRITE); + if (file) { + file.print("Testing write\n"); + file.close(); + } else { + Serial.print("Error opening file"); + } + + /////////////// + + Serial.println("Reading:"); + file = sd.open("test.txt"); + if (file) { + while (file.available()) { + Serial.write(file.read()); + } + file.close(); + } else { + Serial.print("Error opening file"); + } + + /////////////// + + for(int i=0; i<5; i++) { + delay(1000); + Serial.print("."); + } + Serial.println(); + +} diff --git a/STM32/libraries/BoardExamples/examples/BlackF407VE/SDIODirListWriteRead/STM32SdFatSdio.h b/STM32/libraries/BoardExamples/examples/BlackF407VE/SDIODirListWriteRead/STM32SdFatSdio.h new file mode 100644 index 0000000..d4ca3ca --- /dev/null +++ b/STM32/libraries/BoardExamples/examples/BlackF407VE/SDIODirListWriteRead/STM32SdFatSdio.h @@ -0,0 +1,38 @@ +#ifndef _STM32_SDFAT_H_INCLUDED +#define _STM32_SDFAT_H_INCLUDED + +#include "SdFat.h" +#include "SDIO.h" + + +class Stm32SdioCard : public BaseBlockDriver { + public: + bool begin() { + return sdio.begin(); + } + bool syncBlocks() { + return true; + } + bool readBlock(uint32_t block, uint8_t* dst) { + return sdio.readBlocks(block, dst, 1); + }; + bool writeBlock(uint32_t block, const uint8_t* src) { + return sdio.writeBlocks(block, src, 1); + }; + bool readBlocks(uint32_t block, uint8_t* dst, size_t nb) { + return sdio.readBlocks(block, dst, nb); + }; + bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb) { + return sdio.writeBlocks(block, src, nb); + }; + private: + SDIOClass sdio; +}; +class STM32SdFatSdio : public SdFileSystem { + public: + bool begin() { + return m_card.begin() && SdFileSystem::begin(); + } +}; + +#endif