ich versuche seit einigen Tagen bei meinem lpc1768-board diesd-karte zu 
initialisieren. Angeschlossen ist sie an ssp0/port 1.20,1.21,1.23,1.24.
Der Beispielcode von Nxp funktioniert für ssp bei mir nicht. Der auch an 
ssp0/port 0.15,0.16,0.17,0.18 angeschlossene spi-lcd war sonicht zum 
Laufen zu bringen.  Anderer code geht inzwischen, so dass ssp 
wahrscheinlich nicht das Problem ist.
Ich möchte nun den Orginal-code von chan implementieren. Der ssp wird 
über die  Datei mmc_ssp.c gesteuert. Wenn ich das richtig verstanden 
haben, ist in dieser Datei der Anschluss für ssp0 vertauscht.
#if SSP_CH == 0
//#define  CS_LOW()  {FIO0CLR = _BV(18);}  /* Set P0.18 low */
//#define  CS_HIGH()  {FIO0SET = _BV(18);}  /* Set P0.18 high
  __set_PINSEL(0, 15, 2);    /* Attach SCK0 to I/O pad */
  __set_PINSEL(0, 16, 2);    /* Attach MISO0 to I/O pad */
  __set_PINSEL(0, 17, 2);    /* Attach MOSI0 to I/O pad */
  FIO0DIR |= _BV(18);  /* Set CS# as output */
0.16 ist cs und nicht miso. Der Orginalcode von chan kann daher 
eigentlich nicht funktionieren. Für den zweiten ssp0-port müsste der 
code dann geändert werden zu:
//#define  CS_LOW()  {FIO0CLR = _BV(16);}  /* Set P0.18 low */
//#define  CS_HIGH()  {FIO0SET = _BV(16);}  /* Set P0.18 high */
#define  CS_LOW()  {FIO1CLR = _BV(21);}  /* Set P0.18 low */
#define  CS_HIGH()  {FIO1SET = _BV(21);}  /* Set P0.18 high */
und
#if SSP_CH == 0
/*  __set_PINSEL(0, 15, 2);    // Attach SCK0 to I/O pad
  __set_PINSEL(0, 17, 2);    // Attach MISO0 to I/O pad
  __set_PINSEL(0, 18, 2);    // Attach MOSI0 to I/O pad
  FIO0DIR |= _BV(16);      // Set CS# as output
*/
  __set_PINSEL(1, 20, 2);    // Attach SCK0 to I/O pad
  __set_PINSEL(1, 23, 2);    // Attach MISO0 to I/O pad
  __set_PINSEL(1, 24, 2);    // Attach MOSI0 to I/O pad
  FIO1DIR |= _BV(21);      // Set CS# as output
Als nächste müsste ich überprüfen ob eine Verbindung zwischen sd-karte 
und dem Board herzustellen ist. Notfalls über GPIO-software-spi statt 
sssp0. Alles sehr mühselig.
Hat jemand code für die sd-karte, der mit dem lpc1768 auf Anhieb 
funktioniert?
  FatChan ist installiert. Ging wider Erwarten einfach. Das Uart-Menü läuft. Die SD-Karte wird aber nicht erkannt.
ssp0/2 Schnittstelle nach außen geführt. Spi-lcd angeschlossen. 1. gefundener Fehler: SSP0/1 liegt auf Pin-Funktion=2, SSP0/2=3. Läuft aber immer noch nicht.
ssp0/2 läuft jetzt mit dem lcd. die sd-karte wird noch nicht erkannt. als nächstes versuche ich, ob der mmc_ssp.h-code mit dem lcd funktioniert. ich habe diese board <http://www.hotmcu.com/lpc1768minidk2-development-board-28-tft-lcd-p-12.html?cPath=1_21>
die entscheidende funktion für die Initialisierung der Karte ist wohl
DSTATUS disk_initialize (
  BYTE drv    /* Physical drive number (0) */
)
{
  BYTE n, cmd, ty, ocr[4];
  if (drv) return STA_NOINIT;      /* Supports only drive 0 */
  power_on();              /* Initialize SPI */
Stat=0;//kk
  if (Stat & STA_NODISK) return Stat;  /* Is card existing in the soket? 
*/
  FCLK_SLOW();
  for (n = 10; n; n--) xchg_spi(0xFF);  /* Send 80 dummy clocks */
  ty = 0;
  if (send_cmd(CMD0, 0) == 1) {      /* Put the card SPI/Idle state */
    Timer1 = 1000;            /* Initialization timeout = 1 sec */
    if (send_cmd(CMD8, 0x1AA) == 1) {  /* SDv2? */
      for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF);  /* Get 32 bit 
return value of R7 resp */
      if (ocr[2] == 0x01 && ocr[3] == 0xAA) {        /* Is the card 
supports vcc of 2.7-3.6V? */
        while (Timer1 && send_cmd(ACMD41, 1UL << 30)) ;  /* Wait for end 
of initialization with ACMD41(HCS) */
        if (Timer1 && send_cmd(CMD58, 0) == 0) {    /* Check CCS bit in 
the OCR */
          for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF);
          ty = (ocr[0] & 0x40) ? CT_SD2 | CT_BLOCK : CT_SD2;  /* Card id 
SDv2 */
        }
      }
    } else {  /* Not SDv2 card */
      if (send_cmd(ACMD41, 0) <= 1)   {  /* SDv1 or MMC? */
        ty = CT_SD1; cmd = ACMD41;  /* SDv1 (ACMD41(0)) */
      } else {
        ty = CT_MMC; cmd = CMD1;  /* MMCv3 (CMD1(0)) */
      }
      while (Timer1 && send_cmd(cmd, 0)) ;    /* Wait for end of 
initialization */
      if (!Timer1 || send_cmd(CMD16, 512) != 0)  /* Set block length: 
512 */
        ty = 0;
    }
  }
  CardType = ty;  /* Card type */
  deselect();
  if (ty) {      /* OK */
    FCLK_FAST();      /* Set fast clock */
    Stat &= ~STA_NOINIT;  /* Clear STA_NOINIT flag */
  } else {      /* Failed */
    power_off();
    Stat = STA_NOINIT;
  }
  return Stat;
}
bei separatem Aufruf mit
i=  (WORD)disk_initialize(0);
wird 0 zurückgegeben. Ich bin mir aber nicht sicher, ob wirklich eine 
Initialisierung der Karte erfolgt ist.
  Es besteht ein konflikt zwischen ssp0/1-lcd und ssp0/2-sd-karte. nach abschalten von ssp0/1 wird die sd-karte erkannt und ausgelesen.
anzeide per uart0: >fl kktest rc=5 FR_NO_PATH >fl 20130220 D---- 1980/01/01 00:00 0 . D---- 1980/01/01 00:00 0 .. ----A 1980/01/01 00:00 1126244 201302~1.AVI ----A 1980/01/01 00:00 1075716 201302~2.AVI ----A 1980/01/01 00:00 1079638 201302~3.AVI 3 File(s), 3281598 bytes total 2 Dir(s), 3622309888 bytes free > Wie bekomme ich jetzt das directory auf dem lcd angezeigt und einen einzelnen file in den lpc-speicher geladen? Hat jemand für den lpc1768 einsetzbaren Code für den anschluss eines vs1053 mp3-players? Vorlage könnte z.B. http://atmusic.my404.de sein.
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
Mit Google-Account einloggen
  Noch kein Account? Hier anmelden.
 Thread beobachten
 Thread beobachten Seitenaufteilung abschalten
 Seitenaufteilung abschalten