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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.