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
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.