STM32F479 and STm32L476 microcontrollers compliance with with SD memory card version 3.0
Dear all,
I was trying to verify STM32F479 and STM32L476 microcontrollers compliance with SD memory card version 3.0. Both reference manuals state "Full compliance with SD Memory Card Specifications Version 2.0".
Using HAL functions provided by ST I have done some tests to initialize a micro SD version 3.0 and I have noticed that SDIO initialization function return an error status. However I have ignored this error and the subsequent read and write operations to micro SD memory card have worked correctly anyway. This is the list of calls to initialization functions that returned an error status:
- BSP_SD_Init is called during initialization
- then HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) is called...
- which calls SD_WideBus_Enable(hsd)...
- which calls SD_FindSCR(hsd, scr)
- in SD_FindSCR(SD_HandleTypeDef *hsd, uint32_t *pSCR) SDIO_FLAG_DBCKEND is 1 so tempscr remains zero and the output parameter *pSCR is zero. In details, bit DBCKEND = 1 (Data block sent/received (CRC check passed)) in SDIO_STA register (SDIO status register, address offset: 0x34).
- as a consequence SD_WideBus_Enable returns HAL_SD_ERROR_REQUEST_NOT_APPLICABLE and HAL_SD_ConfigWideBusOperation returns HAL_ERROR.
I would like to know if it's safe to ignore this error and why read/write operations work despite the initialization error.
Best regards,
Massimo Gallon
