Image von SD auf LCD Screen lesen

Gast #2162468
Lesenswert?
• ▲
▼
Hallo ich habe eine frage und zwar ich möchte ein Bild von meiner 
microSD Karte auf dem STM3210C-Eval lesen. Im anhang könnt ihr mein 
derzeitiges Programm sehen. Das Programm läuft und er sagt mir auch das 
er die SD karte lesen kann, doch ich kann einfach kein Bild sehen, was 
ich beispielsweise drauf geladen habe!?! Ich finde einfach den Fehler 
nicht und hoffe einer kann mir weiter helfen.

Um das Programm ein wenig einzugrenzen schaut man im "main.c" bei dem 
abschnitt, dis enthält alle initialisierungen sowie dosfs(fat init) und 
sollte eigentlich das STLOGO.BMP laden.:

.....
if (SD_Detect() == SD_NOT_PRESENT)
  {
    LCD_DisplayStringLine(Line1, "Please insert SDCard");
    while (SD_Detect() == SD_NOT_PRESENT)
    {}

    LCD_DisplayStringLine(Line1, "   SDCard detected  ");
  LCD_SetDisplayWindow(239, 0x13F, 240, 320);
  Storage_OpenReadFile("STFILES", "STFILES/STLOGO.BMP", 
(uint32_t)&Wavebuffer, &bmplen);

   Demo_Delay(200);
  }
...


und um diese datei zu laden habe ich die fkt. in einer andere datei 
storage.c angesetzt "Storage_OpenReadFile" um normalerweise ein file zu 
öffnen.siehe hier:

uint32_t Storage_OpenReadFile(uint8_t *DirName, uint8_t *FileName, 
uint32_t BufferAddress, uint32_t *FileLen)
{
  uint32_t j = 0, lcdindex = 0, firstdata = 33;
  uint32_t err = 0;
  uint32_t number_of_clusters = 0;
  uint32_t i;
  FILEINFO fi;
  DIRINFO di;
  uint16_t *pbuffer;
  pbuffer = (uint16_t *)BufferAddress;

  /* Directory enumeration test */
  di.scratch = sector;
  if (DFS_OpenDir(&vi, "", &di))
  {
    err = 1;
  }
  if (DFS_OpenDir(&vi, DirName, &di))
  {
    err = 1;
  }
  if (DFS_OpenFile(&vi, FileName, DFS_READ, sector, &fi))
  {
    err = 1;
  }
  else
  {
    *FileLen = fi.filelen;
    number_of_clusters = fi.filelen / 512;
    if ((fi.filelen % SECTOR_SIZE) > 0)
    {
      number_of_clusters ++;
    }
  }

  /* Set GRAM write direction and BGR = 1 */
  /* I/D=00 (LCD_DIR_HORIZONTAL : decrement, LCD_DIR_VERTICAL : 
decrement) */
  /* AM=1 (address is updated in vertical writing direction) */
  LCD_WriteReg(LCD_REG_3, 0x1008);
  LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */

  if (err == 0)
  {
    for ( j = 0; j < number_of_clusters;j++)
    {
      DFS_ReadFile(&fi, sector, (uint8_t *) BufferAddress, &i, 
SECTOR_SIZE);
      for (lcdindex = firstdata; lcdindex < 256; lcdindex++)
      {
        LCD_WriteRAM(pbuffer[lcdindex]);
      }
      firstdata = 0;
    }
  }

  LCD_CtrlLinesWrite(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, Bit_SET);
  /* Set GRAM write direction and BGR = 1 */
  /* I/D = 01 (LCD_DIR_HORIZONTAL : increment, LCD_DIR_VERTICAL : 
decrement) */
  /* AM = 1 (address is updated in vertical writing direction) */
  LCD_WriteReg(LCD_REG_3, 0x1018);

  return err;
}



Nun kann ich leider keinen fehler finden, warum er kein bild liest?! Ich 
hoffe irgendjmd. kann mir weiterhelfen disbezüglich? Was der fehler ist 
bzw. warum ich kein Bild sehe obwohl er mir sagt das er die sd karte 
erkennt?!

Ich danke schon mal im vorraus...
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.