Forum: Mikrocontroller und Digitale Elektronik Buffer Kapazitäten Serielle Schnittstelle


von Manu P. (whitewinter)


Lesenswert?

Hey guys!

Ich plane eine Projekt auf einem STM32 µC bei dem Daten von der serielle 
Schnittstelle des µC gelesen werden und ein Teil der Daten auf einer SD 
Karte gespeichert werden.

Zu Begin jeder Sekunde kommt ein Datensatz der um die 1000 Bytes enthält 
über die serielle Schnittstelle herein.

Geplant ist die Daten zunächst in einen Ringbuffer zu schreiben die dann 
in einem eigenen Task auf die SD Karte geschrieben werden.

Da diese Daten nach einem Protokoll muss die relevante Information 
geparst werden.

Nun gibt es im groben 2 Varianten das zu realisieren.

Variante 1 "Live":
Die Daten Byte weise parsen/abarbeiten.

oder Variante 2 "Datensatz"
Einen kompletten Datensatz einlesen und dann auf einmal parsen.

Ist Variante "Datensatz" auf einem STM32 Speicher mäßig überhaupt 
realisierbar ist?

Welche Variante setzt man eher ein?

lg

von Jee (Gast)


Lesenswert?

Ich wuerd sofort parsen und wenn ein Sektor voll ist schreiben. Klar 
geht das mit einem Controller, das macht sogar ein AVR.

von Uwe (Gast)


Lesenswert?

Naja wenn du es nicht schaffst in 32 Sekunden 32KByte auf die SD- Karte 
zu schreiben, dann nicht. Oder in 1 Sekunde 1KByte. Versteh die Frage 
nicht !

von Manu P. (whitewinter)


Lesenswert?

Danke für die raschen Antworten.

Jee schrieb:
> Ich wuerd sofort parsen und wenn ein Sektor voll ist schreiben. Klar
> geht das mit einem Controller, das macht sogar ein AVR.

Okay - was meinst du genau mit einem Sektor?

Uwe schrieb:
> Naja wenn du es nicht schaffst in 32 Sekunden 32KByte auf die SD- Karte
> zu schreiben, dann nicht. Oder in 1 Sekunde 1KByte. Versteh die Frage
> nicht !

Ist einleuchtend, meine Gedanken beschäftigen sich noch nur mit dem 
Auslesen.

Ich habe ein Framework (eine PC Lösung), das einen Datensätze auf einmal 
parsen kann.

Das heißt ich muss immer wieder 1KByte buffern und kann erst dann das 
Framework einsetzen - kann es hier zu Engpässen kommen?

Allerdings ist die Lösung sofort zu parsen irgendwie schöner, da 
dynamischer.
Dabei muss ich aber die Implementierung des Protokolls selbst 
übernehmen.

Deswegen wollte ich mal Meinungen/Erfahrungen hören, wie die Community 
solche Entscheidungen/Probleme löst.

lg

von Hoo (Gast)


Lesenswert?

Ein Sektor bezeichnet eine Seite eines SD Speichers

von Karl H. (kbuchegg)


Lesenswert?

Manu P. schrieb:

> Das heißt ich muss immer wieder 1KByte buffern und kann erst dann das
> Framework einsetzen - kann es hier zu Engpässen kommen?

Wieviele Speicher hast du denn auf dem STM? Und wieviel ist davon schon 
in Benutzung.

Es bringt ja auch nichts, wenn du um jeden Preis Speicher sparst und 
komplexe Lösungen erfindest, wenn dann sowieso 90% vom SRAM brach liegt.

> Deswegen wollte ich mal Meinungen/Erfahrungen hören, wie die Community
> solche Entscheidungen/Probleme löst.

Kommt drauf an.
Wenn man Parsen vom Protokoll trennen kann und dafür getrennte Schichten 
hat, dann sind Protokoll-Probleme meist leichter zu lösen. Denn entweder 
ein Datenframe ist komplett und fehlerfrei oder er ist es nicht, in 
welchem Fall er dann gleich gar nicht zum Parser kommt. Muss man aber 
bei Protokollproblemen den Parser erst mal wieder in einen sicheren 
Startzustand zurückmanövrieren, dann kann (muss nicht) das ausarten. 
Hängt natürlich aber auch vom Protokoll bzw. des zu parsenden Inhalts 
ab. Mit einer Statemachine kann man da des öfteren wahre 
Standing-Ovations provozieren.

: Bearbeitet durch User
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.