Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

SDIO на stm32f103x, не проходит инициализация

Вт авг 07, 2012 12:23:02

привет! помогите начинающему пожалста. собрал проект из FatFS Чана и стандартных библиотек СТ, скомпилировал, но нихрена не работает( стопорится на этапе инициализации SDIO. дело осложняется тем, что мне не на чем отлаживать, пытаюсь через UART решить этот вопрос, но это похоже на онанизм)

никак не могу понять почему не проходит инициализация, где я ошибся? карта microsd 4gb с телефона

З.Ы. проект не могу прикрепить, ограничения по размеру. поэтому залью на файлообменник http://disk.tom.ru/sd6t2v8

схема отладочной платы в прикрепленном файле, но ноги я вроде все верно указал
Вложения
TE-STM32F103_RED_v100.pdf
(532.82 KiB) Скачиваний: 482

Re: SDIO на stm32f103x, не проходит инициализация

Вт авг 07, 2012 19:46:04

У меня тоже инициализация не сразу заработала. Взял инит из этого примера http://avrlab.com/node/156 , подправил под себя и все пошло.

Re: SDIO на stm32f103x, не проходит инициализация

Ср авг 08, 2012 13:19:44

с инициализацией разобрался, питание на карту подавалось через транзистор. завтра буду разбираться с файловой системой.

Re: SDIO на stm32f103x, не проходит инициализация

Ср авг 08, 2012 14:02:00

А там уже и разбираться нечего, смонтировали диск и вперед. =)

Re: SDIO на stm32f103x, не проходит инициализация

Чт авг 09, 2012 12:15:42

опять забуксовал(

подскажите пожалста, такая проблема:
инициализирую - в ответ приходит ОК, монтирую - тоже ОК, пробую создать директорию и файл - не получается, почему то не проходит условие в функции 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;   
}   

Re: SDIO на stm32f103x, не проходит инициализация

Чт авг 09, 2012 13:27:12

Так получилось или нет? Не совсем понятно.
Мне не удавалось создать объект на носителе до тех пор, пока не отформатировал карту (тоже SDHC 4-ка, кстати). Процесс форматирования занял больше часа, правда. :)))

Re: SDIO на stm32f103x, не проходит инициализация

Пт авг 10, 2012 05:07:21

вроде как форматнул, карт ридера нет, на компе глянуть не могу. форматировалось минуты 3-4, интересно почему у вас более часа? :)

Re: SDIO на stm32f103x, не проходит инициализация

Пт авг 10, 2012 07:19:12

запустилось:)
читает и пишет, в мультиблочном режиме правда не пробовал еще
Ответить