rod-i-on (17.01.2014 01:35 - 01:39, просмотров: 1725)
Начал прикручивать к проекту на отладке Discovery с STM32F4 работу с карточкой через SDIO. Не работает. Отключил работу с акселерометром, заработало. SDIO сделано через DMA.
Не могу понять с какого перепугу? Разве SDIO как-то связан с SPI?
Падает на этом куске:
/* Initialize FAT area */
for (m = 0; m < N_FATS; m++) {
mem_set(tbl, 0, SS(fs)); /* 1st sector of the FAT */
if (fmt != FS_FAT32) {
n = (fmt == FS_FAT12) ? 0x00FFFF00 : 0xFFFFFF00;
n |= partition;
ST_DWORD(tbl, n); /* Reserve cluster #0-1 (FAT12/16) */
} else {
ST_DWORD(tbl+0, 0xFFFFFFF8); /* Reserve cluster #0-1 (FAT32) */
ST_DWORD(tbl+4, 0xFFFFFFFF);
ST_DWORD(tbl+8, 0x0FFFFFFF); /* Reserve cluster #2 for root dir */
}
if (disk_write(drv, tbl, b_fat++, 1) != RES_OK)
return FR_DISK_ERR;
mem_set(tbl, 0, SS(fs)); /* Following FAT entries are filled by zero */
for (n = 1; n < n_fat; n++) {
if (disk_write(drv, tbl, b_fat++, 1) != RES_OK)
return FR_DISK_ERR;
}
}
Конкретно выпадает на второй return FR_DISK_ERR; вот здесь if (disk_write(drv, tbl, b_fat++, 1) != RES_OK) в ff.c библиотеки Чена