CMD24 - Datenblock auf SD-Karte schreiben

OP #708224
Lesenswert?

Hallo!
ICh bin gerade dabei, mit (Atmega8, asm, 8Mhz) eine SD-Karte zu 
beschreiben.
Nach der erfolgreichen Initalisierung (SPI-Mode) , habe ich die 
Blocklänge mit CMD16 auf 512 gelegt, und will jetzt erstmal 512 
Testweise Daten an die Karte schicken. Als Antwort sollte ich ja bei 
Nullsetzten der obersten drei bits 0x05 bekommen (Data Response TOKEN). 
Ich krieg abe immer andere Werte, manchmal 0x01, manchmal 0x40, 
manchmal 0x08 ,...

Woran kann das ligen?

hier ein Code-Ausschnitt (ich weiss, nicht besonders elegant, soll ja 
uch erstmal nur funktionieren...
1
ldi Datum1, 0x58
2
ldi Datum2, 0x00
3
ldi Datum3, 0x01
4
ldi Datum4, 0xE1
5
ldi Datum5, 0x39       ;ab position 123193, hab ich mit Tiny Hexer als ersten block rausgefunden, der nur 0xFF hatte...
6

7
rcall Kommando
8
;warten n bissl
9
ldi temp2, 15
10
clr temp3
11
lp10:  
12
    ldi  temp1,  0xFF
13
  rcall  sende
14
  dec  temp2
15
  brne  lp10
16
clr temp2
17

18
  ;//Sendet Start Byte an MMC/SD-Karte
19
ldi temp1, 0xFE
20
rcall sende
21

22
st0:
23
ldi temp1, 'M'   ;als Testdatn mal 512 M's
24
rcall sende
25
inc temp2
26
cpi temp2, 255
27
breq st1
28
rjmp st0
29

30
st1:
31
clr temp2
32
inc temp3
33
cpi temp3, 2
34
breq st2
35
rjmp st0
36

37
st2:
38
ldi temp1, 'M'
39
rcall sende
40
rcall sende
41
;jetzt sinds 512 bytes
42
ldi temp1, 0x00
43
rcall sende
44
ldi temp1, 0x00
45
rcall sende
46
;die beiden CRC's
47
;und ende
48

49
EMPFANG:
50

51
  ldi  temp1,  0xFF
52
  rcall  sende         ;//Wartet auf ein gültige Antwort von der MMC/SD-Karte
53
  in  temp1,  SPDR 
54
    cpi temp1, 0xFF
55
  breq empfang
56
  cpi temp1, 0x00
57
  breq empfang
58
  rcall lcd_number_hex   ; hier ist die Anzeige, sihe oben im Text
59
  
60
;////////////////////////////////////////////////////////////////////////////////////////////////////////
61
lp9:
62
rjmp lp9
OP #708229
Lesenswert?

Hier im Forum schreibt jemand:

"Nachdem ich Clock nun direkt (also mit 5V) an die Karte
gelegt habe, sind alle Antworten protokoll-getreu wie erwartet. Laut
MMC-Spec muss die CLK-Flankensteilheit <10ns sein."

Könnte es daran liegen? Ich habe einen Spannungsteiler --1kOhm --- 
<1kOhm-

Die direkten 5V an die Karte sollen der nix ausmachen. Gegenhypothesen?

Viele Grüsse,
Moritz
Gast #708248
Lesenswert?

Hmm, also ich habe SCLK und DataIn über einen Spannungsteiler von 
4k7/6k8 an die SD-Karte gelegt welche ich auf 3,0V bei 2 MHz SPI von 
einem ATMega32 aus betreibe.
Data-Out und CS habe ich über einen Level-Shifter mit einem BSN20 FET 
angeschlossen.

Nun ja, die Widerstände sind in Bauform 0805 und die Länge der 
Leiterbahnen beträgt jeweils weniger als 2 cm.

Eine pauschale Antwort ist also nicht wirklich sinnvoll.

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