привет! помогите начинающему пожалста. собрал проект из FatFS Чана и стандартных библиотек СТ, скомпилировал, но нихрена не работает( стопорится на этапе инициализации SDIO. дело осложняется тем, что мне не на чем отлаживать, пытаюсь через UART решить этот вопрос, но это похоже на онанизм)
никак не могу понять почему не проходит инициализация, где я ошибся? карта microsd 4gb с телефона
З.Ы. проект не могу прикрепить, ограничения по размеру. поэтому залью на файлообменник http://disk.tom.ru/sd6t2v8
схема отладочной платы в прикрепленном файле, но ноги я вроде все верно указал
SDIO на stm32f103x, не проходит инициализация
SDIO на stm32f103x, не проходит инициализация
- Вложения
-
- TE-STM32F103_RED_v100.pdf
- (532.82 КБ) 533 скачивания
Re: SDIO на stm32f103x, не проходит инициализация
У меня тоже инициализация не сразу заработала. Взял инит из этого примера http://avrlab.com/node/156 , подправил под себя и все пошло.
Re: SDIO на stm32f103x, не проходит инициализация
с инициализацией разобрался, питание на карту подавалось через транзистор. завтра буду разбираться с файловой системой.
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: SDIO на stm32f103x, не проходит инициализация
А там уже и разбираться нечего, смонтировали диск и вперед. =)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: SDIO на stm32f103x, не проходит инициализация
опять забуксовал(
подскажите пожалста, такая проблема:
инициализирую - в ответ приходит ОК, монтирую - тоже ОК, пробую создать директорию и файл - не получается, почему то не проходит условие в функции chk_mounted вот тут:
в fs->fs_type ноль. соответственно, второй раз запускается инициализация и естественно она возвращает ошибку.
а вот это в мэйне:
в чем проблема может быть?
UPD
функция f_mkfs(0, 0, 512) заработала, форматнул. SD_TotalSize тоже заработала, если просто вызвать их без инициализации, инициализация проходит в теле. последняя возвращает 3729 MB available, 3729 MB total space.
подскажите пожалста, такая проблема:
инициализирую - в ответ приходит ОК, монтирую - тоже ОК, пробую создать директорию и файл - не получается, почему то не проходит условие в функции chk_mounted вот тут:
Код: Выделить всё
if (fs->fs_type) { /* If the logical drive has been mounted */
stat = disk_status(fs->drv);
if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized (has not been changed), */
if (!_FS_READONLY && chk_wp && (stat & STA_PROTECT)) /* Check write protection if needed */
return FR_WRITE_PROTECTED;
return FR_OK; /* The file system object is valid */
}в fs->fs_type ноль. соответственно, второй раз запускается инициализация и естественно она возвращает ошибку.
а вот это в мэйне:
Код: Выделить всё
FRESULT f_err_code;
FIL fil_obj;
if(disk_initialize(0)==RES_OK)
{
printf("init_OK\r\n"); //если карта есть
if(f_mount(0,&fs)==FR_OK)
{
printf("mount\r\n");
}
f_err_code = f_mkdir ("0:newdir"); // Create newdir
printf ("creating newdir ");
if(f_err_code==0) printf ("OK\r\n");
else printf("FAIL\r\n");
f_err_code = f_open(&fil_obj, "newfile.txt",FA_CREATE_NEW|FA_WRITE); //Create newfile into newdir
printf ("creating newfile.txt into newdir ");
if(f_err_code==0) printf ("OK\r\n");
else printf("FAIL\r\n");
scan_files ("0:/newdir");
}
else
{
printf("init_fail"); //карты нет
}в чем проблема может быть?
UPD
функция f_mkfs(0, 0, 512) заработала, форматнул. SD_TotalSize тоже заработала, если просто вызвать их без инициализации, инициализация проходит в теле. последняя возвращает 3729 MB available, 3729 MB total space.
Код: Выделить всё
FunctionalState SD_TotalSize(void)
{
FATFS *fs;
DWORD fre_clust;
FRESULT res; /* FatFs function common result code */
res = f_getfree("0:", &fre_clust, &fs); /* ±ШРлКЗёщДїВјЈ¬СЎФсґЕЕМ0 */
if ( res==FR_OK )
{
/* Print free space in unit of MB (assuming 512 bytes/sector) */
printf("\r\n%d MB total drive space.\r\n"
"%d MB available.\r\n",
( (fs->n_fatent - 2) * fs->csize ) / 2 /1024 , (fre_clust * fs->csize) / 2 /1024 );
return ENABLE;
}
else
return DISABLE;
} - SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: SDIO на stm32f103x, не проходит инициализация
Так получилось или нет? Не совсем понятно.
Мне не удавалось создать объект на носителе до тех пор, пока не отформатировал карту (тоже SDHC 4-ка, кстати). Процесс форматирования занял больше часа, правда.
Мне не удавалось создать объект на носителе до тех пор, пока не отформатировал карту (тоже SDHC 4-ка, кстати). Процесс форматирования занял больше часа, правда.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: SDIO на stm32f103x, не проходит инициализация
вроде как форматнул, карт ридера нет, на компе глянуть не могу. форматировалось минуты 3-4, интересно почему у вас более часа? 
Re: SDIO на stm32f103x, не проходит инициализация
запустилось:)
читает и пишет, в мультиблочном режиме правда не пробовал еще
читает и пишет, в мультиблочном режиме правда не пробовал еще