Forum: Mikrocontroller und Digitale Elektronik Datenübertragung per SPI


von Franz (Gast)


Lesenswert?

Hallo zusammen,

ich möchte Daten von einem STM32 µC an den anderen per SPI übertragen. 
Nun kann ich leider nur uint_8 übertragen. Für float vlaue z.B. 43.54 
mache das Folgendes: 43.54 *100 =4354 und diesen Wert im 2.µC maskieren 
4354 & 0x00FF und 4354 & 0xFF00 und dann 8 bits shiften. Nun zu meiner 
Frage, wie kann ich -43.54 übertragen also negative value?

beste Grüße

von STK500-Besitzer (Gast)


Lesenswert?

Franz schrieb:
> Nun zu meiner
> Frage, wie kann ich -43.54 übertragen also negative value?

Indem du als Zahlenbereich einen nimmst, der auch negative Zahlen 
darstellen kann. Nicht umsonst gibt "signed" und " un signed" Integer.

von Wolfgang (Gast)


Lesenswert?

Franz schrieb:
> Für float vlaue z.B. 43.54
> mache das Folgendes: 43.54 *100 =4354 und diesen Wert im 2.µC maskieren
> 4354 & 0x00FF und 4354 & 0xFF00 und dann 8 bits shiften.

Was du da beschreibst, ist nicht Float, sondern Festkomma. Bei Float 
hättest du noch einen Exponenten.

von Franz (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Indem du als Zahlenbereich einen nimmst, der auch negative Zahlen
> darstellen kann. Nicht umsonst gibt "signed" und " un signed" Integer.

das geht leider nicht. Der empfangenen Daten müssen aus uint8_t array 
bestehen, daher geht das nicht

von TK (Gast)


Lesenswert?

Helf mir bitte mal auf die Sprünge:
4354 sind bei mir aber 0x1102. Wie kommst Du denn jetzt bitteschön 
wieder auf 43.54 nach dem maskieren und einem 8bit shift?

Gruß
TK

von STK500-Besitzer (Gast)


Lesenswert?

Franz schrieb:
> das geht leider nicht. Der empfangenen Daten müssen aus uint8_t array
> bestehen, daher geht das nicht

Tja, dann kann ich dir zumindest nicht mehr helfen.
Son bißchen Cast-Geschubse ist für manche Leute schon zuviel.

von NichtWichtig (Gast)


Lesenswert?

Die Darstellung in beiden Maschinen (Source/Sink) hat mit der 
Übertragung nicht viel gemeinsam.

Was man aux X Bytes macht ist das eine, wie man sie transportiert ist 
etwas anderes.

Und jede reale Zahl (float, double, .. ) wird intern in mehreren bytes 
abgelegt.

siehe z.B. hier
https://de.wikipedia.org/wiki/IEEE_754


Kann der SPI doch egal sein wie man 4, 8 oder X bytes deutet.

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.