Forum: Mikrocontroller und Digitale Elektronik MSP430 - Beste Möglichkeit der Kommunikation


von Christopher S. (Gast)


Lesenswert?

Hallo,

zwei 'tmote sky'-Module sollen miteinander kommunizieren. Verbaut ist 
ein MSP430 F1611. Meine erste Wahl der Kommunikation wäre I2C gewesen, 
allerdings sollen die Module gleichzeitig den Radio-Chip benutzen, der 
mit per SPI kommuniziert. I2C und SPI funktionieren allerdings nicht 
zeitgleich, da sie sich die gleichen Pins teilen. Stimmt das soweit?

Meine Frage wäre also: Welche Form der Kommunikation ist zu bevorzugen? 
Eine gleichzeitige Kommunikation per SPI mit dem Radio-Chip ist 
wünschenswert, aber nicht zwingend notwendig. I2C-Kommunikation schien 
mir am einfachsten umzusetzen.

Beste Grüße,

Christopher

von Jörg S. (joerg-s)


Lesenswert?

>I2C und SPI funktionieren allerdings nicht zeitgleich, da sie sich die
>gleichen Pins teilen. Stimmt das soweit?
Ich hab jetzt nicht ins Datenblatt geschaut, aber da er 2 Module drin 
hat, sollten die sich auch zeitgleich benutzen lassen.

von noips (Gast)


Lesenswert?

Also hier mal ein Auszug aus dem Datenblatt:

- Serial Communication Interface (USART0),
Functions as Asynchronous UART or
Synchronous SPI or I2C Interface

- Serial Communication Interface (USART1),
Functions as Asynchronous UART or
Synchronous SPI Interface

Das heißt über Modul USART0 kannst du per I2C kommunizieren

und GLEICHZEITIG

über Modul USART1 per SPI kommunizieren!!

von Christopher S. (Gast)


Lesenswert?

Ist zwar ne Weile her, aber ich bin erst jetzt wieder dazu gekommen. Das 
Problem dabei ist, dass der Radio-Chip über USART0 kommuniziert, daher 
klappt das wohl nicht.

"NOTE: The I2C pins are shared with the radio’s data input pin and the 
radio clock. Care
must be taken by application developers to multiplex operations on the 
I2C bus and the
radio."

Diese Möglichkeit fällt also raus.

Die nächste Wahl ist also SPI über USART1?

Welche Möglichkeiten gibt es sonst und was ist am einfachsten 
umzusetzen? Die Datenrate des Radiochips ist auf 250kbps limitiert, 
daher soll diese auch bei der seriellen Kommunikation erreicht werden.

von noips (Gast)


Lesenswert?

Christopher S. schrieb:
> Diese Möglichkeit fällt also raus.
>
> Die nächste Wahl ist also SPI über USART1?

Jawohl! Meiner Ansicht nach ist SPI sogar einfacher als I²C, außer dass 
mehr Leitungen nötig sind.


Christopher S. schrieb:
> Welche Möglichkeiten gibt es sonst und was ist am einfachsten
> umzusetzen? Die Datenrate des Radiochips ist auf 250kbps limitiert,
> daher soll diese auch bei der seriellen Kommunikation erreicht werden.

Sonst kannst du bei so langsamer Datenrate und nur zwei Teilnehmern auch 
asynchron senden über UART. Dazu muss aber die Taktfrequenz beider µC 
genau sein (externer Quarz/Oszillator).

von Christopher S. (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Dank schonmal für die Antwort. Ich hatte vorher schon einen Post 
verfasst, aber anscheinend vergessen ihn abzuschicken, deswegen häng ich 
ihn trotzdem mal an:

"Ich häng hier mal das Datenblatt an. Vielleicht kann mir ja jemand 
weiterhelfen.

Ich fasse am besten nochmal zusammen was ich erreichen möchte:

Ich habe zwei tmote-sky-Module auf denen ein MSP430 F1611 sitzt. Diese 
sollen zum einen durchgehend Daten senden über einen Radio-Chip, der 
soweit ich das verstehe (Datenblatt S. 12) über die gleichen Pins 
kommuniziert wie I²C. Die beiden Module sollen gleichzeitig die 
identischen Daten, die sie über den Radiochip sende auch an das jeweils 
andere Modul kommunizieren.

Soweit ich das verstehe würde sich hier SPI anbieten, da dieses den 
Full-Duplex-Modus ermöglicht. Oder ist dieser gar nicht notwendig, da 
die Datenrate der seriellen Kommunikation ohnehin so viel schneller ist, 
dass ich die Daten ja auch jeweils abwechselnd zwischen den Modulen hin- 
und herschicken kann, während diese noch über den sehr viel langsameren 
Radio-Chip senden.

Welche Möglichkeiten bestehen sonst noch für die Kommunikation. Was hat 
es mit den GPIO-Pins auf sich?"

von noips (Gast)


Lesenswert?

Hallo Christopher,

Christopher S. schrieb:
> Diese
> sollen zum einen durchgehend Daten senden über einen Radio-Chip, der
> soweit ich das verstehe (Datenblatt S. 12) über die gleichen Pins
> kommuniziert wie I²C.

Was mir jetzt auffällt, die I²C-Schnittstelle vom tmote-sky-Modul kann 
genutzt werden und wird es auch. Im Schaltplan ist zu sehen, dass die 
I²C-Signale auf den 10-Bit-Connector rausgeführt sind. Wie ich es sehe, 
ist es auch so gedacht, das der User die Schnittstelle verwenden kann. 
Außerdem wird über die Schnittstelle ein Switch geschaltet. Das findest 
du im Schaltplan Figure 4, und auf S. 10 (Abschnitt !NOTE). Eigentlich 
können I²C und SPI beide verwendet werden, obwohl sie die gleichen Pins 
teilen, vorausgesetzt du programmierst das richtig.

Christopher S. schrieb:
> Welche Möglichkeiten bestehen sonst noch für die Kommunikation. Was hat
> es mit den GPIO-Pins auf sich?"

Wie schon gesagt, kannst du auch per UART (also Tx-, Rx-Leitungen) die 
MSP430 miteinander verbinden (Voraussetzung, siehe mein letzten Post).

GPIO-Pins sind gewöhnliche digitale Ein-, Ausgänge (General Purpose 
Input Output). Die sind nicht für serielle Kommunikation gedacht, obwohl 
mit zusätlichem Software-Aufwand können die auch zur Seriellen 
Datenübertragung verwendet werden. Ist aber für dich uninteressant, weil 
ja andere Schnittstellen zur Verfügung stehen.

Christopher S. schrieb:
> da dieses den
> Full-Duplex-Modus ermöglicht. Oder ist dieser gar nicht notwendig, da
> die Datenrate der seriellen Kommunikation ohnehin so viel schneller ist,
> dass ich die Daten ja auch jeweils abwechselnd zwischen den Modulen hin-
> und herschicken kann, während diese noch über den sehr viel langsameren
> Radio-Chip senden.

Ich sehe es auch so, dass du keinen Duplex brauchst, weil du genug Zeit 
hast, nacheinander zu senden.

von Christopher S. (Gast)


Lesenswert?

Vielen Dank für Deine ausführlichen Antworten.

Nochmal eine kurze Frage zu der letztendlichen Pin-Belegung:
Beim tmote-sky komme ich ja nur an die über den expansion-Port 
zugänglichen Pins. Laut TI-Userguide benötige ich für SPI entweder 3 
oder 4 Pins (4 Pins für mehrere Master): SIMO, SOMI, UCLK und STE(um 
mehrere Master zu erlauben).

Wenn ich das richtig verstehe werden Pins 44-47 STE1, SIMO1, SOMI1 und 
UCLK1) vom MCU gar nicht rausgeführt. Bleiben also noch Pins 28-31, die 
mit dem Radio-Chips geteilten Pins. 28(STE0) wird nicht rausgeführt, 
brauchen wir aber auch nicht, weil ich ja nur 2 Teilnehmer hab, richtig?
SIMO0 und SOMI0 liegen am 10-pin-Expansion-Port an. Aber wie komme ich 
an den UCLK0 Gar nicht?

Also ist nur I2C möglich, da hier ja die beiden Leitungen reichen?

(Falls nur I²C möglich ist: Ist es richtig, dass ich dann extra eine 
Spannung auf die beiden Leitungen legen muss?)


Gruß,
Christopher

von noips (Gast)


Lesenswert?

Oh, da muss ich was berichtigen, ich hab zu flüchtig drüber geschaut:

noips schrieb:
> Außerdem wird über die Schnittstelle ein Switch geschaltet. Das findest
> du im Schaltplan Figure 4, und auf S. 10 (Abschnitt !NOTE). Eigentlich
> können I²C und SPI beide verwendet werden, obwohl sie die gleichen Pins
> teilen, vorausgesetzt du programmierst das richtig.

Switch wird nicht über die I²C des Controllers sondern über den USB-Chip 
angesprochen.

von noips (Gast)


Lesenswert?

Du hast recht, die SPI-Schnittstelle ist gar nicht zugänglich, also 
bleiben I²C oder UART.

Christopher S. schrieb:
> (Falls nur I²C möglich ist: Ist es richtig, dass ich dann extra eine
> Spannung auf die beiden Leitungen legen muss?)

Nein, die Leitungen sollen über Pull-Up-Widerstände (ca. 5 kOhm) mit 
Versorgungsspannung verbunden werden, wie hier im Bild rechts:
http://de.wikipedia.org/wiki/I2c#Elektrische_Definition

Was allerdings noch wichtig ist, ist die Entfernung zwischen den 
kommunizierenden Modulen. Wenn sie viel mehr als einige Zentimeter ist, 
muss du die Leitungen terminieren oder sogar irgendwelche 
Leitungstreiber einsetzen.

von Christopher (Gast)


Lesenswert?

kann mir jemand bezüglich der zu erreichenden Datenrate weiterhelfen?

µC1 soll Daten per Radiochip (250kb/s) empfangen. Seriell an µC2 
weiterleiten und der sendet wieder per Radio.

Beide µCs sind tmote sky Module mit einem MSP430 F1611. Zu erreichende 
Datenrate von I²C ist maximal 3,4 MBit/s (im High Speed Mode). Welchen 
Modus unterstützt der MSP 430 F1611?

von Christopher (Gast)


Lesenswert?

Die Frage würde sich allerdings erübrigen wenn mir jemand sagen könnte, 
dass eine GLEICHZEITIGE I²C-Kommunikation als auch die Kommunikation 
über den Radiochip möglich wäre.

von Jörg S. (joerg-s)


Lesenswert?

Christopher schrieb:
> Die Frage würde sich allerdings erübrigen wenn mir jemand sagen könnte,
> dass eine GLEICHZEITIGE I²C-Kommunikation als auch die Kommunikation
> über den Radiochip möglich wäre.
Da er 2 getrennte USARTs hat, sollte das funktionieren.

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.