FAQ | Points | Add... | Recent posts | Search | Register | Log in


[LPC2368][C/Keil][FatFS]Błędy przy próbie zapisu na kartę SD


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> ARM Microcontrollers -> [LPC2368][C/Keil][FatFS]Błędy przy próbie zapisu na kartę SD
Author
Message
Szaflik
Poziom 17
Poziom 17


Joined: 12 Jun 2003
Posts: 446
Location: Gdańsk

Post#1 Post from the author of the topic 18 Aug 2010 21:29   

[LPC2368][C/Keil][FatFS]Błędy przy próbie zapisu na kartę SD


Witam

Mam problem z biblioteką FatFS (v.0.08). Implementuje ją w środowisku Keil uVision (v.3.70). Procesor to LPC2368. Komunikacja z kartą SD poprzez interfejs SPI.
Obsługa karty SD jest sprawdzona i działa (inicjalizacja, zapis/odczyt sektora).

Implementacja jest bardzo uproszczona (np. disk_ioctl zwraca jedynie RES_OK, zapis kilku bloków został zrobiony w petli for z wykorzystaniem komendy "WRITE_SINGLE_BLOCK" etc.)
Kod kompiluje się bez błędów, jednak przy próbie utworzenia pliku / katalogu na karcie SD funkcje zwracają kody błędów 0x08 (FR_EXIST, /* (8) Acces denied due to prohibited access */) oraz 0x09 (FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */).

Kod obsługi wygląda tak:

Code:
FIL plik;
UINT zapisanych_bajtow;
   
FATFS g_sFatFs;   

FRESULT fresult;
/* Main Program */
int main (void)
{      
   fresult = f_mount(0, &g_sFatFs);   
   fresult = f_open(&plik,"test.txt", FA_CREATE_NEW);
   fresult = f_write(&plik, "zawartosc pliku", 15, &zapisanych_bajtow);
   fresult = f_close(&plik);   
   fresult = f_mkdir("katalog1");   
   while (1); /* Loop forever */
}


Funkcja f_write:

Code:
DRESULT disk_write (
   BYTE drv,         /* Physical drive nmuber (0..) */
   const BYTE *buff,   /* Data to be written */
   DWORD sector,      /* Sector address (LBA) */
   BYTE count         /* Number of sectors to write (1..255) */   )
{
   int i, result = 0 ;
   if(count==1)
   {
      result = mmc_write_block(buff, sector);
      if(result == 0) return RES_OK;
   }
   // translate the reslut code here   
   else
   {       
       for(i=0;i<count;i++)
      {
         mmc_write_block(buff, sector);         
      }
      if(result == 0) return RES_OK;
   }

return RES_ERROR;
}


Prosił bym o sugestie w czym może tkwić problem.
Ew. może ktoś ma trochę bogatsza bibliotekę obsługującą kartę SD na ten procek (z interfejsem SPI) ?
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 18 Aug 2010 21:29   





Back to top
   
Szteker
Poziom 6
Poziom 6


Joined: 28 May 2004
Posts: 19

Post#2 05 Sep 2010 05:14   

Re: [LPC2368][C/Keil][FatFS]Błędy przy próbie zapisu na kart


Spróbuj z parametrami :
FA_CREATE_ALWAYS,FA_WRITE

Code:
fresult = f_open(&plik,"test.txt", FA_CREATE_ALWAYS|FA_WRITE)


FA_CREATE_ALWAYS nadpisze wtedy istniejący plik, a to FA_WRITE to tak dla bezpieczeństwa ja zawsze daje.
btw. LPC2368 ma interfejs pod karty SD (MCI).
Back to top
   
Google

Google Adsense


Post# 05 Sep 2010 05:14   





Back to top
   
Szaflik
Poziom 17
Poziom 17


Joined: 12 Jun 2003
Posts: 446
Location: Gdańsk

Post#3 Post from the author of the topic 05 Sep 2010 11:15   

Re: [LPC2368][C/Keil][FatFS]Błędy przy próbie zapisu na kart


hmm teoretycznie coś pomogło - nie ma zwracanych kodów błędu przy tworzeniu plików (fresult = 0, przy tworzeniu katalogu nadal zwracany jest kod 0x08). Jednak windows nie widzi nadal plików na karcie. Co dziwne pliki te fizycznie są tworzone - karta po sformatowaniu ma zajęte 4KB - po uruchomieniu programu tworzącego 3 pliki wartość ta wzrasta do 40KB - jednak pliku jako takiego nie ma na karcie :/

Co do MCI to niestety na mojej płytce testowej ktoś na ostro podpiął złącze karty SD do interfejsu SPI.
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> ARM Microcontrollers -> [LPC2368][C/Keil][FatFS]Błędy przy próbie zapisu na kartę SD
Page 1 of 1
Similar topics
[lpc2378][C/Keil] Błędy kompilacji mojego drivera Pin Connect Block. (5)
[LPC2368][Keil]USBCDC dla MCB2300 - brak sterownika dla Win7 (2)
FatFS Atmega32 [c] Błędy kompilacji (21)
[STM32][C]fatfs i najszybszy sposób zapisu danych modyfikowanych w przerwaniach (12)
[STM32F407VG][CodeSourcey][C] Błędy kompilacji przy próbie użycia FPU (16)
[lpc2368][C][Keil] Przerwanie ADC0 - kasowanei flagi AINT (17)
[LPC2368][Keil+GNU]Zepsuty czy nie? (6)
[LPC2368][Keil]Zabawa z przerwaniami (1)
FatFs - błąd przy próbie użycia ścieżki pośredniej (1)
[LPC2378][C/KEIL] Błędy w przetwarzaniu ADC. Nie mogę znaleźć przyczyny. (36)

Page generation time: 0.197 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed