Hallo, ich benutze derzeit SPI für die kommunikation von meinem MSP430 mit einem anderen µC. Leider kann ich DMA nicht mit dem SPI benutzen, darum bin ich am überlegen die kommunikation auf UART umzustellen. Ich bräuchte so 1Mbps Übertragungsgeschwindigkeit. Der Abstand der beiden µC ist <20cm. Leider kann ich die beiden µC nicht auf den gleichen Takt einstellen, wesshalb auch mein Baudratentakt leicht unterschiedlich sein wird. Sender läuft mit 16MHz (auf 1Mbps eingestellt) und Empfänger läuft mit 70MHz (auf 1Mbps eingestellt). Die Baudrate mit der geringsten Abweichung muss ich mir noch ausrechnen. Was bedeutet die Errorwahrscheinlichkeiten die ich mir ausrechnen kann? bedeutet es wirklich das jedes x-te Byte falsch erkannt wird? Es gibt leider kein Parity bit. Und ich muss Strings mit ca. 50Bytes übertragen. Muss ich da mit Fehlern rechnen. Eventuell also doch mit Fehlerkontrolle? Wenn ja würde ich lieber bei SPI bleiben.
>Was bedeutet die Errorwahrscheinlichkeiten die ich mir ausrechnen kann? >bedeutet es wirklich das jedes x-te Byte falsch erkannt wird? Bedeuten das, wenn du eine gewisse Grenze überteigst, alle Zeichen fehlerhaft empfangen werden.
Der SPI als Master kann kann mit dem clock getaktet werden, als Slave muss er mindestens 4 mal langsamer als der clock sein. Zu beachten ist auch dass der SPI Buffer nur genau ein Byte gross ist, Waehrend ein UART Buffer teilweise 2 byte gross ist. Das bedeutet die Intrrupt Latenzzeit wird bei hohen Uebertragungsraten sehr klein.
Aber es wird nach jedem Byte neu syncronisiert? Und wenn der Empfänger 70 mal schneller arbeitet als die Baudrate, dann dürften doch keine Fehler auftreten, selbst bei einem Unterschied von 5% nicht?
Also in der Praxis geht das fehlerfrei, weil die UARTs eine gewisse Fehlanpassung erlauben. ich kommuniziere mit einem MSP430F1611 und Baudratenquarz mit 921.600 Baud zu einem DSP, der mit 150Mhz läuft und die baudrate annähernd einstellt. Bisher noch kein einziges Bit verloren gegangen. Die Übertragung ist bidirektional. Wenn´s nicht ganz passt, kannst du doch am MSP430 noch die Modulationsregister benutzen. Und wieso kann man eigentlich den DMA nicht mit dem USART-Interrupt verknispeln? Das ging doch schon beim F1611 usw. haben die das wieder rausgenommen bei den neuen?
@ Matze (Gast) >Aber es wird nach jedem Byte neu syncronisiert? ja. siehe RS232 > Und wenn der Empfänger >70 mal schneller arbeitet als die Baudrate, dann dürften doch keine >Fehler auftreten, selbst bei einem Unterschied von 5% nicht? Doch. Denn das funktioniert schon bissle anders. Die meisten UARTS können nur ganzzahlig teilen also 70/8=8,75 oder 70/16= 4,375. Gerundet macht das einen Fehler von 2,7% bzw. 9,3%. 2,7% ist sehr knapp für RS232. Aber viele Wege führen nach ROM. Der MSP430 kann nichtganzzahlige Teilerverhältnisse realisieren, dann klappt das auch mit dem anderen uC. Stell Deinen 70 MHz uC auf eien Teiler von 4, das macht dann ~1,09 MBit/s. Das kann dein MSP430 mit 16 MHz sehr gut generieren. Siehe Datenblatt. Mfg Falk
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.