Forum: Mikrocontroller und Digitale Elektronik Image von SD auf LCD Screen lesen


von Robert (Gast)


Angehängte Dateien:

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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.