SD-Karte wird nicht erkannt

#3537254
Lesenswert?

Hallo, ich habe schonmal einen Thread dazu geöffnet 
(Beitrag "SD-Karte wird nicht erkannt NetIO"), aber da der 
schon so lange ausser Betrieb war, denke ich macht es Sinn einen neuen 
zu Eröffnen. Sollte das nicht erwünscht sein, einfach löschen....:

Hi,
ich habe es immer noch nicht hin bekommen, ich habe jetzt den Adapter
(http://www.exp-tech.de/Shields/Itead-SD-MICRO-SD-B...)
erhalten und angeklemmt, siehe Bild. Ich benutze die Programmcodes im
Anhang und meine main sieht im Gunde so aus...(s.unten):

Hat noch jemand eine Idee warum das nicht gehen kann? Habe ich noch
einen Klemmfehler, eventuell erkenn man das auf den Bildern....

Es ist doch richtig, dass der "SPI_DI" an den DO des SD-Karten Adapters
geht, oder?
Dieser zehnpolige stecker an dem SD-Kartenhalter geht auf die "EXT"
Klemme des Net-IO (Klemmplanauszug im Anhang)
1
#define SPI_DI        6    //Input Port Pin an dem Data Output der MMC/SD-Karte angeschlossen ist

Auszug aus der main:
1
int main(void)
2
{      
3

4
    usart_init0(BAUDRATE);     // setup the UART0
5
  usart_init1(BAUDRATE);     // setup the UART1
6

7

8
  //Initialisierung der MMC/SD-Karte
9
  usart_writePC("System Ready!\r\n");  
10
  while ( mmc_init() !=0) //ist der Rückgabewert ungleich NULL ist ein Fehler aufgetreten
11
    {
12
    usart_writePC("** Keine MMC/SD Karte gefunden!! **\n");  
13
    }
14
  usart_writePC("Karte gefunden!!\n");
15
  
16
  fat_init();//laden Cluster OFFSET und Size
17
  //Initialisierung der MMC/SD-Karte ENDE!
18

19
  unsigned char Buffer[512];
20
  unsigned int tmp;
21
  
22
  mmc_read_csd (Buffer);
23
  
24
  for (tmp = 0;tmp<16;tmp++)
25
    {
26
    usart_writePC("%x ",Buffer[tmp]);
27
    };
28

29

30
  //Ausgabe des Root Directory
31
  unsigned int Clustervar;
32
  unsigned char Dir_Attrib = 0;
33
  unsigned long Size = 0;
34
  usart_writePC("\r\nDirectory\r\n");
35
  for (char a = 1;a < 240;a++)
36
  {
37
    Clustervar = fat_read_dir_ent(0,a,&Size,&Dir_Attrib,Buffer);
38
      if (Clustervar == 0xffff)
39
      {
40
        break;
41
      }
42
    tmp = (Size & 0x0000FFFF);
43
    usart_writePC("Cluster = %4x DirA = %2x FileName = ",Clustervar,Dir_Attrib);
44
    usart_writePC("%s",Buffer);
45
    usart_writePC("\r\n");
46
  }
47
  usart_writePC("\r\nDirectory Ende\r\n");
48

49
  //Lade Cluster für das index.htm File in den Speicher 
50
  Clustervar = 0;//suche im Root Verzeichnis
51
  if (fat_search_file((unsigned char *)"mmc.txt",&Clustervar,&Size,&Dir_Attrib,Buffer) == 1)
52
    {
53
    usart_writePC("\nFile Found!!\r\n");
54
    //Lese File und gibt es auf der seriellen Schnittstelle aus
55
    for (int b = 0;b<52;b++)
56
      {
57
      fat_read_file (Clustervar,Buffer,b);
58
      for (int a = 0;a<512;a++)
59
        {
60
        usart_writePC("%c",Buffer[a]);
61
        }
62
      }
63
    }
64

65
  usart_writePC("FERTIG!!\r\n");  
66

67

68

69

70

71

72

73

74
//Konfiguration der Ausgänge bzw. Eingänge
75
  //definition erfolgt in der config.h
76
  
77
  //1=OUTPUT / 0=INPUT -> Bei 0 (Eingang) mit Portx den Pullup aktivieren 
78
  
79
  DDRA = OUTA; //Eingang
80
  DDRC = OUTC;
81

82
  // Pullups einschalten PortA  1 Pull up aktiv = Eingang 
83
  PORTA |= (1 << PORTA0) | (1 << PORTA1) | (1 << PORTA2) | (1 << PORTA3);
84

85

86
  //DDRB  &= ~(1 << DDB1);   // Pin B1 (Pollin Prog.-Jumper) als Eingang definieren
87
  //PORTB |= (1 << PORTB1);  // Pullup einschalten PortB1
88
  
89
  
90
  eepvar_init();        // Grundeinstellungen einlesen
91
  
92
    com74hc595_init();
93
....
Angehängte Dateien:
Gast #3541324
Lesenswert?

An welcher stelle hakt es denn überhaupt....

<"Es ist doch richtig, dass der "SPI_DI" an den DO des SD-Karten 
Adapters
geht, oder?">

Ist Okay

Deine verwendeten Routinen im Bereich Initialisierung sind schon
arg rudimentär und weit weg von dem aktuellen Init Flow..
Schaue dir die Spec auf der SDA Seite an, Kapitel 7 im Physical Layer 
Part.

Die Software SPI Routinen haben den Clk Idle High, zusammen mit
Latch Positiv Edge und Shift Negativ Edge wäre das SPI Mode3,
(Die HW SPI Schnittstelle ist laut kommentar Clk IDLE Low)
kann wohl funktionieren.. Selbst nutze ich für SD an SPI Clk und Phase 0
also SPI Mode0(aber in HW), meine dies auch so der SD Spec entnommen zu 
haben...

Wie dem auch sei wo hängts genau?? oszi/LA zu Verfügung dann
schau dir mal schritt für schritt an was und wie gesendet wird...

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren