logo elektroda
logo elektroda
X
logo elektroda

Tester der Speicherkarten MicroSD

phanick 
Elektronischer microSD-Karten-Tester mit LEDs und USB-Port.
In diesem Artikel werde ich den Grund für die Erfindung und Entwicklung eines Testers für microSD-Speicherkarten beschreiben, mit dem einige interessante Eigenschaften von Karten überprüft werden.

Ursache des Aufbaus
MMC, SD, microSD-Karten werden neben ihren natürlichen Anwendungen auch von Fans von Mikrocontrollern aus mehreren Gründen geschätzt:
• kann als zusätzlicher Speicher mit sehr großer Kapazität verwendet werden (sowohl zum Auslesen, z. B. beim Anzeigen von Fotos, wenn der Mikrocontroller den digitalen Bilderrahmen steuert, als auch zum Speichern von z. B. Messergebnissen eines Thermometers
• Vereinfachen den Austausch dieser Daten mit einem PC oder Telefon
• Kommunikation mit der Außenwelt entweder über das SD- oder das SPI-Protokoll (letzteres ist extrem einfach zu implementieren)

Am Anfang gab es MMC-Karten (bis zu 128 MB, glaube ich), später wurden sie durch SD-Karten (identisch in der Größe) ersetzt, und dann wurden Mini- und Micro-SD-Karten erstellt. Es gab ,,normale", ,"SDHC"- und "SDXC"-Karten. Das Erkennen des Kartentyps (und damit der Adressierung) kann schwierig sein. Dies ist im folgenden Artikel perfekt beschrieben:
http://elm-chan.org/docs/mmc/mmc_e.html

und dies wird durch das folgende Diagramm perfekt veranschaulicht:
Diagramm zur Veranschaulichung des Initialisierungsprozesses von SDC/MMC im SPI-Modus

Das SPI-Protokoll ist ein serielles Vollduplex-Datenübertragungsprotokoll, bei dem:
• auf der MISO-Leitung (Master Input Slave Output) gehen die Daten von der Karte zum Host (z. B. PC),
• Auf der MOSI-Leitung (Mater Output Slave Input) gehen die Daten vom Host zur Karte.
• und all dies geschieht im Takt des vom Host erzeugten SCLK-Taktsignals.
• Es gibt auch eine vierte Zeile (nCS), die... das war's

Theoretisch soll es die Verbindung mehrerer Karten zu einem Host ermöglichen, indem dieselben MISO/MOSI/SCLK-Leitungen verwendet werden. Jede Karte hätte ihr eigenes separates nCS-Signal, das beim Senden mit ihr aktiv wäre:
                                 
                                       VCC VCC   
                                        |   |
SCLK ---+----------+----------+         R   R
MISO ---|+---------|+---------|+--------+   |
SCLK ---||+--------||+--------||+-----------+
        |||        |||        |||
	  +-------+  +-------+  +-------+
	  |Karta 1|  |Karta 2|  |Karta 3|
      +-------+  +-------+  +-------+
         |           |          |
nCS1-----+           |          |
nCS2-----------------+          |
nCS3----------------------------+


In der Praxis wird es jedoch wahrscheinlich nicht von vielen Menschen verwendet, und meistens haben wir es mit einer einzelnen Karte zu tun. Was ist also mit der nCS-Linie? Theoretisch sollte es nur während der Übertragung von 8 Bit niedrig (aktiv) sein, dann hoch gehen (was die Übertragung des gesamten Bytes signalisieren würde)

SCLK __--__--__--__--__--__--__--__--________--__--__--__--__--__--__--__--______
MISO ------------
nCS  --______________________________--------______________________________------


In der Praxis kann diese Leitung jedoch die ganze Zeit auf Low-Zustand sein und die Karte macht keinen Unterschied (und unser Mikrocontroller hat dann einen Pin mehr für andere Zwecke). Ist es aber wirklich so?

Nun, gemäß dem oben genannten Diagramm sollte man direkt nach dem Anlegen der Stromversorgung an die Karte einen Moment warten und ihr mindestens 74 Taktzyklen zum "Starten" schicken. Während dieser Aufwärmzyklen sollte die nCS-Leitung inaktiv sein und kann dann nach dem "Aufwärmen" bis zum Ausschalten niedrig sein. Und so konnte ich problemlos mit jeder Karte kommunizieren.

In einem Gerät, das ich einmal entworfen habe, war die nCS-Leitung jedoch dauerhaft geerdet (spart Pins und Ressourcen). Mit der Karte, die ich damals hatte, funktionierte es. Dann habe ich ein Dutzend anderer Karten gekauft und es stellte sich heraus, dass einige "nicht kommunizieren wollen". Das war eine schlechte Nachricht, denn ich hatte bereits mehr Platinen zum Aufbau des Geräts auf meinem Tisch - Nacharbeiten würden umständlich werden (also keine Option). Ich habe versucht, eine Regel zu finden - z. B. Sandisk-Karten haben immer funktioniert, und andere Hersteller oder sogar No-Name hatten manchmal Launen). Ich wollte eine 100 % effektive Bestimmungsmethode, die es mir ermöglicht, die Karte vor dem Kauf herauszufinden, vorzugsweise allein durch ihr Aussehen. Naja, Karten wie diese Karten, nach dem Herstellerlogo sind doch die gleichen. Allerdings nicht wirklich - ich habe eine interessante Eigenschaft entdeckt:

Verschiedene 2 GB microSD-Speicherkarten mit unterschiedlichen Erscheinungen.

Die Karten auf der linken Seite (die mit der nCS-Linie immer auf der Masse) sind auf der Rückseite "glatt" (entweder ganz schwarz oder mit einigen Aufschriften), und die Karten auf der rechten Seite (launisch) haben entweder einen Aufkleber oder seltsame Kontaktflächen. Immer beim Kartenkauf habe ich den Verkäufer gebeten, "glatt" zu wählen. Da ich mir jedoch nicht sicher war, ob es sich um eine 100 % effektive Methode handelt, entschied ich mich für einen einfachen Gerätetester mit: einem Kartensteckplatz, einem Knopf und zwei LEDs, die nach dem Drücken des Knopfes eine Überprüfung durchführen und abhängig davon aufleuchten davon, ob die Karte OK oder launisch ist. Ich wollte das Gerät vor dem Kauf an den Verkäufer schicken.

Entwurf
Um die Kosten zu senken, basiert das Gerät auf einem Miniatur-Attiny13-Mikrocontroller. Er hat nur 8 Beine. Durch Abnehmen von VCC, GND und RESET bleiben 5 Pins für den eigenen Gebrauch übrig:
- Das Programm ist so einfach, dass es keine Interaktion des Benutzers erfordert (daher kann die Testtaste mit dem RESET-Pin verbunden werden)
- zwei LEDs, geschickt verbunden, um einen der drei Zustände (0/1 / Z) auszuwählen, welche der LEDs (jeweils: rot/grün/keine) leuchten sollen,
- MMC/SD-Karten benötigen eine 3,3-V-Stromversorgung, daher ist ein Stabilisator nützlich.
- und eine Schaltung 74LVC245 zum Umwandeln der Spannungspegel auf den zur Karte führenden Leitungen (MOSI/SCK/nCS); MISO (ausgehend von der Karte erfordert keine Konvertierung)
- Die Mikrocontroller, die ich habe (ATTINY13V), können mit nur 3,3 V betrieben werden, sodass der 74LVC245-Konverter redundant wäre, aber... der von mir verwendete USBASP-Programmierer wird mit 5 V betrieben, und dies ist auch der Signalpegel auf den Leitungen während des Programmierens verwendet, so dass es das Attiny-Ego beschädigen könnte.
- Kartensteckplatz und Mini-USB-Buchse zur Stromversorgung
Elektrischer Schaltplan eines MicroSD-Karten-Testers. PCB-Layout eines microSD-Karten-Testers mit USB

Die Platine war wie immer ganz schön:
Elektronischer microSD-Karten-Tester mit LEDs und USB-Port. Rückseite einer Leiterplatte mit mehreren gelöteten Komponenten und einem angeschlossenen USB-Kabel.

Software
In attiny haben wir nur 1024 Bytes pro Code, also kein Wahnsinn. Das Programm führt nacheinander 2 identische Tests durch:
• TEST1 - Versuch, ständig mit der nCS-Karte an Masse zu kommunizieren
• TEST2 - Einstellen des nCS auf einen hohen Zustand, Starten von 80 Aufwärmzyklen, Zurückbringen des nCS auf Masse und Versuch der Kommunikation

Jeder der Tests:
• entweder wird es fehlschlagen,
• oder wir schaffen es, mit der Karte zu kommunizieren - dann bestimmt es, mit welcher Karte wir es zu tun haben.


Wyświetlanie wyniku testu:
dioda   | dioda    | wynik
zielona | czerwona |
--------+----------+-------
   -    |   miga   |  TEST1 fail, TEST2 fail (błąd komunikacji)
miga (*)| miga (*) |  TEST1 fail, TEST2 pass (karta kapryśna)
miga (*)|     -    |  TEST1 pass, TEST2 pass (karta ugodowa)

(*) - ilość mignięć oznacza:
1 -> karta SD VER.2 (block address)
2 -> karta SD VER.2 (byte address)
3 -> karta SD VER.1
4 -> MMC VER.3


Von den Karten habe ich:
• 4 GB- und 2 GB-Karten sind SD VER.2 (Byte-Adresse)
• eine Karte mit einer Kapazität von 32 GB ist SD VER.2 (Blockadresse) - kein Wunder, denn auf 4 Bytes (32 Bit) kann man maximal 4 GB adressieren


Die Präsentation




Kod
Code: text
Melde dich an, um den Code zu sehen

Über den Autor
phanick
phanick hat 2899 Beiträge geschrieben mit der Bewertung 2813 , und dabei 65 Mal geholfen. Wohnt in der Stadt Warszawa. Er ist seit 2007 bei uns.

Kommentare

LA72 07 Jan 2022 10:23

Kaum zu glauben, dass das gute Kleinkind ATtiny13 es schaffen kann. Weiter so. Haben Sie eine "gefälschte" Karte getestet? (falsche Kapazität)? [Mehr erfahren]

Anonymous 07 Jan 2022 11:26

Ein sehr interessantes Projekt, ein schneller Test von Speicherkarten. Allerdings finde ich persönlich, dass tiny13 dafür etwas ungeeignet ist, wobei ich zugeben muss, dass der Artikel selbst sicherlich... [Mehr erfahren]

krzbor 07 Jan 2022 11:44

Es ist ein bisschen falsch - SPI wird nicht nur zum Verbinden von Karten verwendet - es wird sehr oft verwendet, um mit Displays, ADC / DAC-Wandlern, RTC-Uhren usw. zu arbeiten. Das nCS-Signal sollte im... [Mehr erfahren]

Eidems 07 Jan 2022 11:54

@phanick, kaufst du gebrauchte Speicherkarten? Es ist mir mehrmals passiert, dass die MicroSD-Karte von selbst nicht mehr funktioniert. Deshalb tausche ich meine Telefone vorsorglich alle 2/3 Jahre aus.... [Mehr erfahren]

ZnAl 07 Jan 2022 12:17

Ein sehr interessantes Projekt. :spoko: Ich habe nur eine kleine Anmerkung zu diesem Teil der Beschreibung: Nicht alle Abmessungen sind gleich. MMC-Karten (volle Größe) sind standardmäßig 1,4... [Mehr erfahren]

bsw 07 Jan 2022 13:18

Aus meiner Erfahrung weiß ich, dass der Mikrocontroller nicht beschädigt wird, aber andere Zubehörteile können beschädigt werden, die damit arbeiten. Dafür gibt es eine Lösung - eine einfache Modifikation... [Mehr erfahren]

zgierzman 07 Jan 2022 14:52

Das waren seltsame Zeiten, es gab auch MMC "half length" (halbe Länge) und es gab mehrere, wenn nicht ein Dutzend andere Standards. Jeder Hersteller - eine andere Karte. Mal der Memory Stick, mal eine... [Mehr erfahren]

Sentymentalny 08 Jan 2022 18:37

Ist es nicht möglich, die misc2.h-Datei zum Set hinzuzufügen? [Mehr erfahren]

phanick 08 Jan 2022 19:44

Vielen Dank für Ihr Interesse am Thema. Ich habe keine (oder ich weiß nichts darüber). Ich verstehe, dass die Karte dann eine andere Kapazität als die physische zurückgibt und die Partition diesen... [Mehr erfahren]

tmf 09 Jan 2022 19:24

CS wird auch verwendet, um Operationen auf dem SPI zu synchronisieren. Stellen Sie sich vor, was passiert, wenn der CS ständig aktiv ist und es eine Störung am SCK gibt? Die Übertragung wird nicht synchronisiert... [Mehr erfahren]

Anonymous 09 Jan 2022 20:21

Wenn Sie in dem Thema sitzen, lassen Sie sich ein Gerät zum Ändern der CID der Karte einfallen. [Mehr erfahren]

Błękitny 10 Jan 2022 22:32

Man kann auch ein solches System zum Lesen von Kartenparametern erstellen: Link Link Ich habe dieses Gerät gebaut und es funktioniert sehr gut. Wenn es darum geht, die CID-Nummer zu ändern,... [Mehr erfahren]

funzen 16 Jan 2022 09:28

MMC-Karten gibt es größer als 512 MB, ich habe selbst eine 2 GB MMC-Karte. https://obrazki.elektroda.pl/1832164900_1642321640_thumb.jpg [F] [Mehr erfahren]