Forum: Mikrocontroller und Digitale Elektronik MSP430F2410: Effektive Nettodatenrate UART


von Martin (Gast)


Lesenswert?

Hallo!

Bin mir bei einer Sache nicht sicher und ich hoffe ihr könnt die 
Unsicherheit aus der Welt schaffen.

Im Datenblatt des MSP430F2410 steht für UART-Schnittstelle (USCI) eine 
mögliche Bitrate von 2 MHz drin.

2 MHz bedeuten 2 Mbit/s.
Allerdings muss ich beachten, dass der UART-Frame ein Start-, ein 
Parity- und ein Stopp-Bit hat. Diese müssen ja auch übertragen werden. 
Was wiederrum heist, dass wenn ich 8 Bit übertragen will in Wirklichkeit 
11 Bit übertragen werden.
Sollte dies der Fall sein, dann kann ich mit der Taktrate von 2 MHz 
nicht 2 Mbit/s (=250kByte/s) Nettodaten übertragen, sondern effektiv nur 
1,45 MBit/s bzw. 181 kByte/s.

Und zum anderen:
Die 2 MHz Bittakt bekomme ich auch nur mit 16 MHz Prozessortakt hin.

Stimmt das?

Danke für eure Antworten!

Gruß
Martin

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Niemand zwingt Dich, die USCI als UART zu nutzen. Sie kann auch als 
SPI-Schnittstelle verwendet werden, und da gibt es weder Start- noch 
Stopbits.

Bei der Verwendung als UART kann übrigens auf das Parity-Bit verzichtet 
werden, was Deine Berechnung etwas verändert; pro Byte werden 10 Bit 
übertragen, was eine effektive Datenrate von 200 kByte/sec zur Folge 
hat.

Davon abgesehen hast Du die Funktion einer UART korrekt verstanden. So 
funktioniert die.

Die 2 MHz Bittakt der USCI im UART-Betrieb sind nur möglich, wenn ein 
16-MHz-Takt zur Verfügung steht, da für das "oversampling" zum Erkennen 
empfangener Daten ein entsprechend höherer Takt als die Baudrate 
erforderlich ist. Übliche UARTs verwenden hier einen Vorteiler von 16 
und --wie hier-- in manchen Fällen auch 8.

Wenn Du die USCI aber in einer synchronen Betriebsart wie z.B. SPI 
betreibst, ist dieses "oversampling" nicht erforderlich, was also höhere 
Datenraten ermöglicht.

Wobei der Takt des CPU-Kernes (MCLK) nicht dem der USCI zur Verfügung 
gestellten (via ACLK oder SMCLK) entsprechen muss.

Bedenke aber, daß der CPU-Kern die zu übertragenden Daten auch irgendwie 
heranschaffen muss, eine kontinuierliche Datenrate von 200 kByte/sec 
lässt pro Byte gerade mal 5 µsec Zeit, dieses bereitzustellen. Der 
CPU-Kern des MSP430 kann auch bei 16 MHz Takt nicht allzuviele 
Instruktionen in dieser Zeit abarbeiten, das sind maximal 80 
Ein-Takt-Operationen.

Im DMA-Betrieb lässt sich das auch ohne CPU-Intervention implementieren, 
aber nur für Speicherblöcke vorgegebener Größe. Und auch die müssen ihre 
Daten irgendwoher bekommen.

von Martin (Gast)


Lesenswert?

Ui, die Antwort schnell.
Danke.

Leider bin ich auf UART festgelegt, da der Baustein einen UART hat.

SPI hat halt deswegen die "volle" Datenrate, weil über einen Takt die 
Daten getriggert werden. Ein Kennzeichnung des Datenpaketes durch Start- 
und Stopp-Bits sowie Oversampling (8 oder 16fach) ist daher nicht 
erforderlich.

Aber gut, dass ich nicht falsch lag. Dann bin ich guter Hoffnung, dass 
es funktioniert. ;)

Danke noch mal!

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.