Forum: Mikrocontroller und Digitale Elektronik SD-Karte (Spannungs-Bitmask, Block schreiben)


von Bernhard K. (kraftb)


Lesenswert?

Hallo,

Es gibt zu SD-Karten schon einiges an Infos und man wird auch immer 
wieder auf die Arbeiten von "chan" (oder wie auch der Kerl heißen mag) 
verwiesen. Ich hätte jedoch ein paar grundlegende Fragen:

1. In der Spec wird erwähnt das beim initialisieren der Karte (ACMD41) 
die Karte antwortet mit einer Bitmask welche die möglichen 
versorgungsspannungen angibt. Ist es notwendig das zu beachten oder 
unterstützt sowieso jede karte 3V ? In den verfügbaren Beiträgen und 
über google wird mehr oder weniger immer nur gesagt: Schließ 3V an und 
sei glücklich - aber warum gibt es dann diese Spannungs-Bitmask???

2. Kann man einen Datenblock (Page) "stückweise" in die Karte übertragen 
bevor man das write einer auslöst oder muss man eine page immer am Stück 
übertragen und schreiben?


grüße,
Berhard

von Jim M. (turboj)


Lesenswert?

Bernhard Kraft schrieb:
> Schließ 3V an und
> sei glücklich - aber warum gibt es dann diese Spannungs-Bitmask??

Es gab mal low Voltage MMCs IIRC, aber ich glaube die kennen kein 
ACMD41.

Bernhard Kraft schrieb:
> 2. Kann man einen Datenblock (Page) "stückweise" in die Karte übertragen

Nein, man muss den auf einmal senden. Bei alten SD (ohne HC) war das 
Stückeln theroretisch möglich, aber AFAIK gab es keine Karte die das 
praktisch kann (Write partial block Bit war nie gesetzt). Teilweises 
Lesen ging oft. Bei SDHC gibt es nur noch Blockadressen.

von Reto W. (Firma: Swissbit.com) (swissbit)


Lesenswert?

Die Spannungs Bitmask ist ein Relikt von einer Früheren Version des 
Standards, damals waren noch einige Spannungslevels (Low Voltage) mehr 
definiert und zur Verwendung geplant als in der aktuellen Version.

Gemäss Standard 2.0 gibt es zwei Arten von Karten, High Voltage Karten 
mit Versorgungsspannungen von  2.7-3.6V und Dual Voltage Karten die 
zusätzlich noch tiefere Spannungen unterstützen. Diese Dual Voltage war 
aber nur als TBD (To be done) im Standard.
Im Standard 3.0 sind die Low Voltage bereits ganz verschwunden.

In der Praxis ergibt sich daraus dass SD 2.00 oder 3.01 konforme Karten 
immer mit 2.7-3.6V arbeiten.


Gruss

von Bernhard K. (kraftb)


Lesenswert?

Also zuerst mal danke für die Antworten.

Ich denke das beantwortet meine Fragen. Ich werde einfach 3.0 V als 
Versorgung wählen. Sowohl mein µC (PIC18F25K80) als auch die meisten 
Komponenten (RTC, I2C Feuchtigkeits/Temperatur Sensor) kommen damit 
zurecht. Der Feuchtigkeits/Temperatur Sensor (SHT21) benötigt sogar 3.x 
V und darf mit 5V gar nicht betrieben werden - dadurch erspare ich mir 
sogar meinen I2C Pegelwandler. Einzig meinen CAN Controller muss ich 
gegen eine Alternative austauschen (CAN Busse lassen sich aufgrund der 
benötigten Differenzspannung nur schwer mit 3V betreiben).

Des weiteren hab ich wo gelesen das 3V "moderner" als 3.3V ist und habe 
mich daher für ersteres entschieden.

Zu dem schreiben eines Blockes: Das heißt im Prinzip ich darf nur das CS 
(Chip select) der SD-Karte während des schreiben eines Blockes nicht 
unterbrechen. Es gibt jedoch keine Mindestanforderung was die dauer des 
Schreibens betrifft. Soweit ich das verstehe ist die SPI Logik der 
SD-Karte ja statisch. D.h. ich könnte durchaus z.B. einfach eine Pause 
während des Schreibens machen und keine weiteren Clock-Signale + Daten 
senden. Wäre das zulässig?

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.