Пытаюсь запустить sdio на stm32l476 камне, с халовской библиотекой. Инициализация работает, чтение работает, запись нет. При записи в STA регистре устанавливается флаг DCRCFAIL. Тот же код прекрасно работает на stm32l151. Железо проверил 10раз - подтяжки 47к, питание 3.3в, все линии прозваниваются от карты до контроллера, тактирование правильное.
UPD: Починено. Проблема в корявых дефайнах хала
It's know issue in STM32L4 during writing on SD card due to wrong definition for SDMMC registers value:
#define SDMMC_DCTRL_DBLOCKSIZE_2 (0x3U << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x00000040 */
#define SDMMC_DCTRL_DBLOCKSIZE_3 (0x4U << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x00000080 */
These lines should be defined as follow:
#define SDMMC_DCTRL_DBLOCKSIZE_2 (0x4U << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x00000040 */
#define SDMMC_DCTRL_DBLOCKSIZE_3 (0x8U << SDMMC_DCTRL_DBLOCKSIZE_Pos) /*!< 0x00000080 */