Example description
SDIO_uSDCard How to use the SDIO to drive an SD card memory
Example Description
This example provides a basic example of how to use the SDIO firmware library and
an associate driver to perform read/write operations on the SD Card memory (SD Card
V1.0, V1.1, V2.0 and SDHC (High Capacity) protocol)that could be mounted on the
STM322xG_EVAL board.
The example provides different SD Card transfer states and operations and here
below a description of each step:
- First the SDIO peripheral and SD Card are initialized using the SD_Init()
function:
- Configure the SDIO according to the desired SDIO_CK clock frequency.
- Reset the SD Card
- Identify the SD Card
- Initializes the SD Card
- Get the SD Card Info
- Select the SD Card
- Enable the Wide Bus mode (4-bit data)
- SD Card Erase Operation
- Starts an Erase operation: Erase the corresponding blocks using
the SD_Erase() function
- Read the Erased blocks using the SD_ReadMultiBlocks() function
- Test if the corresponding Blocks are well erased: check if the
EraseStatus variable is equal to PASSED. If the erase operation is
passed LED1 is turned ON.
- SD Card Single Block Operation
- Starts a Write operation: Write a single Block using the SD_WriteBlock()
function
- Read a single Block using the SD_ReadBlock() function
- Compare the written Block and the read one: check if the TransferStatus1
variable is equal to PASSED. If the Single Block Read/write operation
is passed LED2 is turned ON.
- SD Card Multiple Block Operation
- Starts a Multiple Write operation: Write a multi Blocks using the
SD_WriteMultiBlocks() function.
- Read a multiple Blocks using the SD_ReadMultiBlocks() function
- Compare the written Blocks and the read one: check if the TransferStatus2
variable is equal to PASSED. If the Multiple Blocks Read/Write operation
is passed LED3 is turned ON.
All data transfers are made by DMA.
At each operation, the SD Card presence and status is checked using the SD_GetStatus()
function and a global variable "Status" storing the results of the last operation.
SD Card Operations and Written/Read data correctness is signaled by LED
lightening and though as follow:
- If the Erase operation is PASSED then LED1 ON else the LED4 is ON and LED1 is OFF
- If the Single Block Write/Read operation is PASSED then LED2 ON else the LED4 is ON and LED2 is OFF
- If the Multi Blocks Write/Read operation is PASSED then LED3 ON else the LED4 is ON and LED3 is OFF
- Any SD Card operation including the SD Initialization error is signaled by
LED4 ON.
Directory contents
- SDIO/uSDCard/system_stm32f2xx.c STM32F2xx system clock configuration file
- SDIO/uSDCard/stm32f2xx_conf.h Library Configuration file
- SDIO/uSDCard/stm32f2xx_it.c Interrupt handlers
- SDIO/uSDCard/stm32f2xx_it.h Header for stm32f2xx_it.c
- SDIO/uSDCard/main.c Main program
The "system_stm32f2xx.c" is generated by an automatic clock configuration
tool and can be easily customized to your own configuration.
To select different clock setup, use the "STM32F2xx_Clock_Configuration_V1.0.0.xls" tool.
Hardware and Software environment
- This example runs on STM32F2xx Devices.
- This example has been tested with STM322xG-EVAL RevB and can be easily
tailored to any other development board.
- STM322xG-EVAL RevB
- Make sure that Jumper JP22 is in position 1<->2
- STM322xG-EVAL RevB
- Make sure that Jumpers JP22 and JP16 are in position 1<->2