SD class for DISCO_F746NG platform

Dependents:   Joerg_turbo_ede DISCO-F746NG_master_wifi DISCO-F746NG_Monttory_Base DISCO-F746NG_Monttory_Base ... more

deprecated lib

Committer:
adustm
Date:
Fri Jun 09 08:35:08 2017 +0000
Revision:
1:cf12f3d37081
Parent:
0:9f8c87fd3af5
Align the class with BSP_DISCO_F746NG library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adustm 0:9f8c87fd3af5 1 /* Copyright (c) 2010-2016 mbed.org, MIT License
adustm 0:9f8c87fd3af5 2 *
adustm 0:9f8c87fd3af5 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
adustm 0:9f8c87fd3af5 4 * and associated documentation files (the "Software"), to deal in the Software without
adustm 0:9f8c87fd3af5 5 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
adustm 0:9f8c87fd3af5 6 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
adustm 0:9f8c87fd3af5 7 * Software is furnished to do so, subject to the following conditions:
adustm 0:9f8c87fd3af5 8 *
adustm 0:9f8c87fd3af5 9 * The above copyright notice and this permission notice shall be included in all copies or
adustm 0:9f8c87fd3af5 10 * substantial portions of the Software.
adustm 0:9f8c87fd3af5 11 *
adustm 0:9f8c87fd3af5 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
adustm 0:9f8c87fd3af5 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
adustm 0:9f8c87fd3af5 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
adustm 0:9f8c87fd3af5 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
adustm 0:9f8c87fd3af5 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
adustm 0:9f8c87fd3af5 17 */
adustm 0:9f8c87fd3af5 18
adustm 0:9f8c87fd3af5 19 #ifndef __SDRAM_DISCO_F746NG_H
adustm 0:9f8c87fd3af5 20 #define __SDRAM_DISCO_F746NG_H
adustm 0:9f8c87fd3af5 21
adustm 0:9f8c87fd3af5 22 #ifdef TARGET_DISCO_F746NG
adustm 0:9f8c87fd3af5 23
adustm 0:9f8c87fd3af5 24 #include "mbed.h"
adustm 0:9f8c87fd3af5 25 #include "stm32746g_discovery_sd.h"
adustm 0:9f8c87fd3af5 26
adustm 0:9f8c87fd3af5 27 /*
adustm 0:9f8c87fd3af5 28 This class drives the uSD card driver mounted on DISCO_F746NG board.
adustm 0:9f8c87fd3af5 29
adustm 0:9f8c87fd3af5 30 Usage:
adustm 0:9f8c87fd3af5 31
adustm 0:9f8c87fd3af5 32 #include "mbed.h"
adustm 0:9f8c87fd3af5 33 #include "SD_DISCO_F746NG.h"
adustm 0:9f8c87fd3af5 34
adustm 0:9f8c87fd3af5 35 SD_DISCO_F746NG sd;
adustm 0:9f8c87fd3af5 36
adustm 0:9f8c87fd3af5 37 int main()
adustm 0:9f8c87fd3af5 38 {
adustm 0:9f8c87fd3af5 39 sd.Erase(BLOCK_START_ADDR, (BLOCKSIZE * NUM_OF_BLOCKS);
adustm 0:9f8c87fd3af5 40 sd.WriteBlocks(aTxBuffer, BLOCK_START_ADDR, BLOCKSIZE, NUM_OF_BLOCKS);
adustm 0:9f8c87fd3af5 41 sd.ReadBlocks(aRxBuffer, BLOCK_START_ADDR, BLOCKSIZE, NUM_OF_BLOCKS);
adustm 0:9f8c87fd3af5 42 while 1 {}
adustm 0:9f8c87fd3af5 43
adustm 0:9f8c87fd3af5 44 }
adustm 0:9f8c87fd3af5 45 */
adustm 0:9f8c87fd3af5 46 class SD_DISCO_F746NG
adustm 0:9f8c87fd3af5 47 {
adustm 0:9f8c87fd3af5 48
adustm 0:9f8c87fd3af5 49 public:
adustm 0:9f8c87fd3af5 50 //! Constructor
adustm 0:9f8c87fd3af5 51 SD_DISCO_F746NG();
adustm 0:9f8c87fd3af5 52
adustm 0:9f8c87fd3af5 53 //! Destructor
adustm 0:9f8c87fd3af5 54 ~SD_DISCO_F746NG();
adustm 0:9f8c87fd3af5 55
adustm 0:9f8c87fd3af5 56 /**
adustm 0:9f8c87fd3af5 57 * @brief Initializes the SD card device.
adustm 0:9f8c87fd3af5 58 * @retval SD status
adustm 0:9f8c87fd3af5 59 */
adustm 0:9f8c87fd3af5 60 uint8_t Init(void);
adustm 0:9f8c87fd3af5 61
adustm 0:9f8c87fd3af5 62 /**
adustm 0:9f8c87fd3af5 63 * @brief DeInitializes the SD card device.
adustm 0:9f8c87fd3af5 64 * @retval SD status
adustm 0:9f8c87fd3af5 65 */
adustm 0:9f8c87fd3af5 66 uint8_t DeInit(void);
adustm 0:9f8c87fd3af5 67
adustm 0:9f8c87fd3af5 68 /**
adustm 0:9f8c87fd3af5 69 * @brief Configures Interrupt mode for SD detection pin.
adustm 0:9f8c87fd3af5 70 * @retval Returns MSD_OK
adustm 0:9f8c87fd3af5 71 */
adustm 0:9f8c87fd3af5 72 uint8_t ITConfig(void);
adustm 0:9f8c87fd3af5 73
adustm 0:9f8c87fd3af5 74 /**
adustm 0:9f8c87fd3af5 75 * @brief Detects if SD card is correctly plugged in the memory slot or not.
adustm 0:9f8c87fd3af5 76 * @retval Returns if SD is detected or not
adustm 0:9f8c87fd3af5 77 */
adustm 0:9f8c87fd3af5 78 uint8_t IsDetected(void);
adustm 0:9f8c87fd3af5 79
adustm 0:9f8c87fd3af5 80 /**
adustm 0:9f8c87fd3af5 81 * @brief Reads block(s); from a specified address in an SD card, in polling mode.
adustm 0:9f8c87fd3af5 82 * @param pData: Pointer to the buffer that will contain the data to transmit
adustm 0:9f8c87fd3af5 83 * @param ReadAddr: Address from where data is to be read
adustm 0:9f8c87fd3af5 84 * @param BlockSize: SD card data block size, that should be 512
adustm 0:9f8c87fd3af5 85 * @param NumOfBlocks: Number of SD blocks to read
adustm 0:9f8c87fd3af5 86 * @retval SD status
adustm 0:9f8c87fd3af5 87 */
adustm 1:cf12f3d37081 88 uint8_t ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout);
adustm 0:9f8c87fd3af5 89
adustm 0:9f8c87fd3af5 90 /**
adustm 0:9f8c87fd3af5 91 * @brief Writes block(s); to a specified address in an SD card, in polling mode.
adustm 0:9f8c87fd3af5 92 * @param pData: Pointer to the buffer that will contain the data to transmit
adustm 0:9f8c87fd3af5 93 * @param WriteAddr: Address from where data is to be written
adustm 0:9f8c87fd3af5 94 * @param BlockSize: SD card data block size, that should be 512
adustm 0:9f8c87fd3af5 95 * @param NumOfBlocks: Number of SD blocks to write
adustm 0:9f8c87fd3af5 96 * @retval SD status
adustm 0:9f8c87fd3af5 97 */
adustm 1:cf12f3d37081 98 uint8_t WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout);
adustm 0:9f8c87fd3af5 99
adustm 0:9f8c87fd3af5 100 /**
adustm 0:9f8c87fd3af5 101 * @brief Reads block(s); from a specified address in an SD card, in DMA mode.
adustm 0:9f8c87fd3af5 102 * @param pData: Pointer to the buffer that will contain the data to transmit
adustm 0:9f8c87fd3af5 103 * @param ReadAddr: Address from where data is to be read
adustm 0:9f8c87fd3af5 104 * @param BlockSize: SD card data block size, that should be 512
adustm 0:9f8c87fd3af5 105 * @param NumOfBlocks: Number of SD blocks to read
adustm 0:9f8c87fd3af5 106 * @retval SD status
adustm 0:9f8c87fd3af5 107 */
adustm 1:cf12f3d37081 108 uint8_t ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks);
adustm 0:9f8c87fd3af5 109
adustm 0:9f8c87fd3af5 110 /**
adustm 0:9f8c87fd3af5 111 * @brief Writes block(s); to a specified address in an SD card, in DMA mode.
adustm 0:9f8c87fd3af5 112 * @param pData: Pointer to the buffer that will contain the data to transmit
adustm 0:9f8c87fd3af5 113 * @param WriteAddr: Address from where data is to be written
adustm 0:9f8c87fd3af5 114 * @param BlockSize: SD card data block size, that should be 512
adustm 0:9f8c87fd3af5 115 * @param NumOfBlocks: Number of SD blocks to write
adustm 0:9f8c87fd3af5 116 * @retval SD status
adustm 0:9f8c87fd3af5 117 */
adustm 1:cf12f3d37081 118 uint8_t WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks);
adustm 0:9f8c87fd3af5 119
adustm 0:9f8c87fd3af5 120 /**
adustm 0:9f8c87fd3af5 121 * @brief Erases the specified memory area of the given SD card.
adustm 0:9f8c87fd3af5 122 * @param StartAddr: Start byte address
adustm 0:9f8c87fd3af5 123 * @param EndAddr: End byte address
adustm 0:9f8c87fd3af5 124 * @retval SD status
adustm 0:9f8c87fd3af5 125 */
adustm 0:9f8c87fd3af5 126 uint8_t Erase(uint64_t StartAddr, uint64_t EndAddr);
adustm 0:9f8c87fd3af5 127
adustm 0:9f8c87fd3af5 128 /**
adustm 0:9f8c87fd3af5 129 * @brief Gets the current SD card data status.
adustm 0:9f8c87fd3af5 130 * @retval Data transfer state.
adustm 0:9f8c87fd3af5 131 * This value can be one of the following values:
adustm 0:9f8c87fd3af5 132 * @arg SD_TRANSFER_OK: No data transfer is acting
adustm 0:9f8c87fd3af5 133 * @arg SD_TRANSFER_BUSY: Data transfer is acting
adustm 0:9f8c87fd3af5 134 * @arg SD_TRANSFER_ERROR: Data transfer error
adustm 0:9f8c87fd3af5 135 */
adustm 1:cf12f3d37081 136 uint8_t GetCardState(void);
adustm 0:9f8c87fd3af5 137
adustm 0:9f8c87fd3af5 138 /**
adustm 0:9f8c87fd3af5 139 * @brief Get SD information about specific SD card.
adustm 0:9f8c87fd3af5 140 * @param CardInfo: Pointer to HAL_SD_CardInfoTypedef structure
adustm 0:9f8c87fd3af5 141 * @retval None
adustm 0:9f8c87fd3af5 142 */
adustm 1:cf12f3d37081 143 void GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo);
adustm 0:9f8c87fd3af5 144
adustm 0:9f8c87fd3af5 145 private:
adustm 0:9f8c87fd3af5 146
adustm 0:9f8c87fd3af5 147 };
adustm 0:9f8c87fd3af5 148
adustm 0:9f8c87fd3af5 149 #else
adustm 0:9f8c87fd3af5 150 #error "This class must be used with DISCO_F746NG board only."
adustm 0:9f8c87fd3af5 151 #endif // TARGET_DISCO_F746NG
adustm 0:9f8c87fd3af5 152
adustm 0:9f8c87fd3af5 153 #endif