CMD24 - Datenblock auf SD-Karte schreiben

OP #708224
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
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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.