Forum: Mikrocontroller und Digitale Elektronik China Board mit SDCard Adapter und Stm32xxx SDMMC


von Hans-Georg L. (h-g-l)


Lesenswert?

Hallo,
bei allen China STM32H7 Boards die ich habe ist der Card detect Schalter 
nicht verdrahtet und führt dazu, wenn keine SD Karte gesteckt ist, das 
SDMMCx_SD_Init nicht funktioniert und in der Error Loop landet.
Der Schalter ist am Adapter vorhanden, schaltet nach GND, und kann auf 
einen Eingang mit pullup, evtl. mit Schutzwiderstand, nach verdrahtet 
werden. Oder die HAL muss angepasst werden dann gibt es aber keinen 
Interrupt wenn Karte gesteckt/entfernt wird.

Betroffen sind die Boards von Fanke und DevEBox mit STM32H750 oder 
STM32H743 Controller und von WEACT mit STM32H7R3.
Ist das in China so üblich, den Pin nicht zu verdrahten ?

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Hans-Georg L. schrieb:

> Ist das in China so üblich, den Pin nicht zu verdrahten ?

Nicht nur in China. Fakt ist nämlich, dass dieser primitive Mechanismus 
zur presence detection eigentlich überflüssig ist. Das kann man auch auf 
andere Weise ermitteln.

von Hans-Georg L. (h-g-l)


Lesenswert?

Ob S. schrieb:
> Hans-Georg L. schrieb:
>
>> Ist das in China so üblich, den Pin nicht zu verdrahten ?
>
> Nicht nur in China. Fakt ist nämlich, dass dieser primitive Mechanismus
> zur presence detection eigentlich überflüssig ist. Das kann man auch auf
> andere Weise ermitteln.

Und wie unterscheide ich zwischen einer defekten und einer nicht 
gesteckten Karte ?

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Hans-Georg L. schrieb:

> Und wie unterscheide ich zwischen einer defekten und einer nicht
> gesteckten Karte ?

Wozu sollte das wichtig sein? Benutzbar ist die Karte in beiden Fällen 
nicht und eine Fehlermeldung á la "Keine Karte gesteckt oder gesteckte 
Karte defekt" überläßt dem Benutzer die Wahl. Der wird ja wohl wissen, 
ob er eine reingesteckt hat oder nicht. Oder kann zumindest nachschauen.

von Hans-Georg L. (h-g-l)


Lesenswert?

Ob S. schrieb:
> Hans-Georg L. schrieb:
>
>> Und wie unterscheide ich zwischen einer defekten und einer nicht
>> gesteckten Karte ?
>
> Wozu sollte das wichtig sein? Benutzbar ist die Karte in beiden Fällen
> nicht und eine Fehlermeldung á la "Keine Karte gesteckt oder gesteckte
> Karte defekt" überläßt dem Benutzer die Wahl. Der wird ja wohl wissen,
> ob er eine reingesteckt hat oder nicht. Oder kann zumindest nachschauen.

Wenn du davon ausgehst, das immer eine Anzeige vorhanden und jemand vor 
Ort ist mag das sein.

Wenn ich nun so etwas realisieren will  ...
1
if( detect_card() ) {
2
  
3
   if( connect_card() ) {
4
    do_A()
5
   else {
6
    call_service();
7
   } 
8
   
9
} 
10
else {
11
  do_B();
12
}}

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Hans-Georg L. schrieb:

> Wenn du davon ausgehst, das immer eine Anzeige vorhanden und jemand vor
> Ort ist mag das sein.

Auch wenn das nicht der Fall ist. Denn wenn niemand vor Ort ist, muss 
bei Nichtverfügbarkeit in jedem der beiden Fehlerfälle der Service 
gerufen werden, wenn eine funktionsfähige Karte benötigt wird, um den 
Job der Gesamtsache erledigen zu können.

Was deinen Pseudocode betrifft: Was soll denn do_B() ausrichten? Den 
CD-Card-Einlegeroboter anwerfen?

von Hans-Georg L. (h-g-l)


Lesenswert?

Ob S. schrieb:
> Hans-Georg L. schrieb:
>
>> Wenn du davon ausgehst, das immer eine Anzeige vorhanden und jemand vor
>> Ort ist mag das sein.
>
> Auch wenn das nicht der Fall ist. Denn wenn niemand vor Ort ist, muss
> bei Nichtverfügbarkeit in jedem der beiden Fehlerfälle der Service
> gerufen werden, wenn eine funktionsfähige Karte benötigt wird, um den
> Job der Gesamtsache erledigen zu können.
>
> Was deinen Pseudocode betrifft: Was soll denn do_B() ausrichten? Den
> CD-Card-Einlegeroboter anwerfen?

Nö warum, die Karte ist nur Optional.
Wenn sie nicht da ist, ist es kein Fehler aber wenn sie da ist muss es 
die richtige sein und funktionieren. Plan B funktioniert immer ;-)

Vor Ort hast du oft nur angelerntes Personal oder auch einen Endkunden. 
Da funktioniert das genau so: "Lauf mal dahin und stecke die Karte rein, 
wenn die grüne LED weiter leuchtet ist alles Ok, wenn sie ausgeht und 
die rote LED angeht rufe den Service an". Dazu muss der Bediener auch 
nicht in den Kartenslot steigen ;-)))

Selbst die ganzen Arduino Adapter vom Chinesen haben den Kontakt 
herausgeführt, teilweise mit pullup und Längswiderstand.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Wer baut mit China Eval Boards Industrieprodukte mit Servicetechniker 
und Fernwartung?

von Hans-Georg L. (h-g-l)


Lesenswert?

Niklas G. schrieb:
> Wer baut mit China Eval Boards Industrieprodukte mit Servicetechniker
> und Fernwartung?

Das ist eine ganz andere Frage.

Es ging doch darum, das alle es angeblich so machen ...

Ob S. schrieb:
> Nicht nur in China. Fakt ist nämlich, dass dieser primitive Mechanismus
> zur presence detection eigentlich überflüssig ist. Das kann man auch auf
> andere Weise ermitteln.

Dafür habe ich Beispiele aus der Praxis genommen. Bei einer 
Eigenentwicklung würde ich diese Leiterbahn und die 2 Widerstände auch 
nicht einsparen.
Bisher ist auch noch nichts über alternative Methoden bekannt. Die 
Geschichte mit CD/D3 funktioniert nur mit 1Bit SPI. Die SDMMC benutzt 
aber 4 Bit Daten. Clock und CMD. Was wäre die Alternative ?. eine Menge 
clock Signale senden und schauen ob was an den anderen Pins wackelt und 
das im poll Modus ? . Da ist mir ein Pin mit Interrupt lieber.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Hans-Georg L. schrieb:
> . Die Geschichte mit CD/D3 funktioniert nur mit 1Bit SPI. Die SDMMC
> benutzt aber 4 Bit Daten.

Nö, das 4bit Interface wird erst später aktiviert, die Karte startet im 
1bit SDMMC ("SD bus") Modus (CMD, CLK, D0).
Ist schon viele Jahre her, aber ich meine man kann die Karte wunderbar 
über D3 erkennen. Außer eben der Widerstand in der Karte ist defekt, das 
kann man dann nicht unterscheiden von "keine Karte drin".

: Bearbeitet durch User
von Hans-Georg L. (h-g-l)


Lesenswert?

Niklas G. schrieb:
> Hans-Georg L. schrieb:
>> . Die Geschichte mit CD/D3 funktioniert nur mit 1Bit SPI. Die SDMMC
>> benutzt aber 4 Bit Daten.
>
> Nö, das 4bit Interface wird erst später aktiviert, die Karte startet im
> 1bit SDMMC ("SD bus") Modus (CMD, CLK, D0).
> Ist schon viele Jahre her, aber ich meine man kann die Karte wunderbar
> über D3 erkennen. Außer eben der Widerstand in der Karte ist defekt, das
> kann man dann nicht unterscheiden von "keine Karte drin".

ST scheint das aber nicht zu wissen. Die HAL schmiert bei der 
Initialisierung ohne Karte jedenfalls ab.
Müsste ich mir bei Gelegenheit mal näher anschauen, habe aber im Moment 
andere Prioritäten. Mein Post war nur dazu gedacht darauf aufmerksam zu 
machen das es bei den Boards an der Stelle Probleme geben kann.

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.