Hi zusammen, ich hab ein kleines Verständnissproblem beim MSP430, genauer gesagt beim MSP430FG4618 (Datenblatt: http://www.ti.com/lit/gpn/msp430fg4618 ). Wie unten rechts im Blockdiagramm auf Seite 5 zu erkennen, gibt es einen USART1 der UART und/oder SPI kann, einen USCI_A0 für UART, IrDA, SPI und noch einen USCI_B0 für SPI und/oder I2C. Zuerst dachte ich, dass man jedes Modul (USART1, USCI_A0, USCIB0) für eine der angegebenen Schnittstellen konfigurieren kann und dann nur diese verwenden kann, ohne dass ein Umschalten möglich ist. Nun ist mir aber aufgefallen, dass zB. Bei USART1 UART und SPI fast komplett an verschiedenen Ports hängen. USART1: Pin 49: MISO, SPI Pin50: MOSI, SPI Pin 51: slave transmit enable, SPI (Ich nehm mal an CS) - Pin62 RX, UART Pin63 TX, UART - Allerdings haben sie auch einen Port gemeinsam: Pin 48: UCLK, clock output UART or SPI mode Sehe ich das richtig, dass ich also an USART1 sowohl UART als auch SPI nutzen kann wohl aber immer nur nacheinander, da sie denselben CLK benutzen? Ist damit dann das Umschalten zwischen UART / SPI auch zur Laufzeit des MSPs möglich? Dass ich zuerst über UART an USART1 etwas empfangen und dann danach über SPI an USART1 das weiterschickt? Finde das klingt eigentlich recht plausibel, wollte aber lieber nochmal auf Nummer sicher gehen :) Danke schomal! Grüße Flo
Flo schrieb: > UCLK, clock output UART or SPI mode braucht UART einen clock? Der ist doch asynchron.
Nein, braucht er nicht. Dafür ist das Start / Stop-Bit Aber dann sollten alle beteiligten die gleichen Einstellungen benutzen (z.b. 9600 8 N 1)
Ich schreibe das weil Flo folgendes geschrieben hat: > Allerdings haben sie auch einen Port gemeinsam: > Pin 48: UCLK, clock output UART or SPI mode > > Sehe ich das richtig, dass ich also an USART1 sowohl UART als auch SPI > nutzen kann wohl aber immer nur nacheinander, da sie denselben CLK > benutzen? Die benutzen nicht denselben Clock weil UART gar keinen braucht. Folglich haben sie auch keine Pins gemeinsam. Allerdings kann man sie trotzdem nur abwechselnd benutzen, weil es ja gleiches Modul ist, das jedes Mal umkonfiguriert werden muss.
Hi, danke erstmal für euere Antworten! Mittlerweile ist mir aufgefallen, dass sich beim USCI_B0 anscheinend einiges mehr überschneidet. P3.3 (Pin68): USCI_B0/UART or SPI mode, clock output—USCI_B0/SPI mode P3.2 (Pin69): MISO (SPI), SCL (I2C) P3.1 (Pin70): MOSI (SPI), SDA (I2C) P3.0 (Pin71): CS (SPI) Nun hätte ich dazu noch ein paar Fragen: - Was macht der P3.3? UART braucht keinen Clock und für I2C liegt dieser auf P3.2. Wozu also P3.3? Muss ich diesen unbeschaltet lassen wenn SPI/I2C benutzt wird? - Für I2C braucht man ja pull-up Widerstände. Stören diese möglicherweiße über SPI ebenfalls angeschlossene Geräte (wenn dann umgeschalten wurde und diese verwendet werden)? Oder anders gesagt: Kann man die beiden problemlos "parallel" (=nacheinander) verwenden, oder sollte man beim Einsatz von I2C dann auf diese SPI-Schnittstelle doch lieber verzichten? Grüße Flo
Flo schrieb: > Was macht der P3.3? P3.3 ist bei der Nutzung von SPI die CLK-Leitung. Oder halt bei USART, da kann ebenfalls ein CLK benutzt werden. Für I²C brauchst du den nicht, nein. Flo schrieb: > Für I2C braucht man ja pull-up Widerstände. Stören diese > möglicherweiße über SPI ebenfalls angeschlossene Geräte Nein, mir würde gerade nichts einfallen, wo die sich negativ bei der Kommunikation auswirken. Nur ein Tip: Wenn du irgendwas an den Kommunikationsschnittstellen änderst / einstellst - dann setze immer zuerst das Bit für den Software-Reset. Dann ändern, dann Bit wieder löschen. Im Datenblatt steht auch ein Hinweis, wie man die USCIs konfigurieren sollte.
Dennis schrieb: > P3.3 ist bei der Nutzung von SPI die CLK-Leitung. Ach ja klar, natürlich! Danke, hab ich grad irgendwie total übersehen! Danke auch für deinen Tipp, werd mir das alles nochmal in Ruhe anschauen. Grüße Flo
Hi zusammen, jetzt hab ich noch eine letzte (hoff ich mal ;)) Kleinigkeit: Der USCI_A0 hat die Ports für UART anscheinend doppelt belegt. P2.4, P2.5 und P4.6, P4.7. Auszug aus dem Datenblatt hab ich unten angefügt. Wenn ich nun über USCI_A0 (auf UART konfiguriert) Daten ausgeben / lesen möchte kommen diese dann an beiden Portpaaren? Oder ist es möglich das gewünschte Portpaar einzustellen und nur auf diesem auszugeben / zu lesen? Hintergrund ist der: Ich habe drei Geräte die ich via UART an den MSP hängen möchte. Das eine kommt an USART1 und die anderen beiden hätte ich gerne an USCI_A0, jeweils an ein anderes Portpaar, gehängt da diese nicht gleichzeitig, sondern nur nacheinander benötigt werden. Wäre dies möglich? Oder müsste den dritten UART in Software realisieren? Danke schonmal! ---------- Auszug aus dem Datenblatt ---------- P2.5/UCA0RXD 74 C11 I/O General-purpose digital I/O / receive data in—USCI_A0/UART or IrDA mode P2.4/UCA0TXD 75 B12 I/O General-purpose digital I/O / transmit data out—USCI_A0/UART or IrDA mode P4.7/UCA0RXD/S34 46 J7 I/O General-purpose digital I/O / receive data in -- USCI_A0/UART or IrDA mode / LCD segment output 34 P4.6/UCA0TXD/S35 47 M9 I/O General-purpose digital I/O / transmit data out -- USCI_A0/UART or IrDA mode / LCD segment output 35 ---------- Grüße Flo
Du sagst dem Controller ja mit PxSEL, ob du ihn als GPIO oder als Sonderfunktion haben willst. Wenn du bei einem Portpaar das SEL-Bit setzt und beim anderen nicht, dann ist die Kommunikation auch nur auf dem möglich, wo das Bit gesetzt ist, der andere hat dann standard-IO-Pins.
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.