MSP430 Byte senden

Gast #1026606
Lesenswert?

Hallo,

ich möchte 2Byte direkt hintereinander senden. Jetzt habe ich folgendes 
Problem:
Benutze ich den UART werden ja Start und Stop Bit eingefügt, ich möchte 
aber nur die 2Byte direkt ohne Pause aufeinanderfolgend senden.
Also hab ich das SPI versucht zu nehmen, hier hab ich jetzt zwar kein 
Start und Stop Bit mehr, allerdings macht mir der MSP430F149 eine Pause 
zwischen den beiden Paketen.
Mein Code sieht so aus
1
...
2

3
TXBUF1 = Byte1;                   
4
while (!(IFG2 & UTXIFG1));
5
TXBUF1 = Byte2;                  
6
while (!(IFG2 & UTXIFG1));
7

8
...
Also wie schon gesagt funktioniert ja eigentlich, nur halt beim UART mit 
Start und Stop Bit, welche ich nicht möchte und beim SPI mit Pause, 
welche ich nicht möchte.

Hat mir da jemand eine Lösung???

Wäre nett, Gruß
Gast #1026614
Lesenswert?

An wen willst Du die 2 Bytes denn senden?

UART und SPI sind zwei grundlegend verschiedene serielle Schnittstellen, 
die Dein Empfänger auch "verstehen" können muss. Du kannst nicht einfach 
irgendwas davon nehmen.

Zur Deinem Problem:
UART ist eine asynchrone Schnittstelle ohne Taktübertragung. Start und 
Stop-bit sind zwingend notwendig, um Sender und Empfänger zu 
synchronisieren. Ohne das geht es nicht!

SPI ist eine synchrone Schnittstelle, d.h. Du hast da eine extra 
Taktleitung zur Synchronisation. Wenn Dein Sender eine "Pause" macht, 
ist auch der Takt inaktiv, d.h. die Pause ist nicht schlimm, der 
Empfänger merkt die Pause gar nicht!
Gast #1026651
Lesenswert?

@ Stefan

die grundlegenden Eigenschaften von UART und SPI sind mir klar.
Ich brauche nur eine Schnittstelle, welche mir 2 Bytes ohne Pause und 
zusätliche Bits rausschickt.
Ein Gedanke war noch ob ich einen Timer nehmen soll mit dessen IR die 
Bytes über einen normalen Port rausgeshiftet werden sollen, wollt ich 
aber nicht. Deshalb hab ich mich für UART und SPI entschieden und wollte 
nur wissen, ob man die Schnittstellen so "misshandeln" kann, das es 
meinen Anforderungen genügt?


@ Bastler
mit einem Schraubenzieher kann man nicht löten.
Gast #1026660
Lesenswert?

>die grundlegenden Eigenschaften von UART und SPI sind mir klar.
wirklich?

>Ich brauche nur eine Schnittstelle, welche mir 2 Bytes ohne Pause und
>zusätliche Bits rausschickt.
Wir wissen immer noch nicht, was für eine Schnittstelle das sein soll.
Ohne Infos -> keine Hilfe möglich

Apropos Infos... Dein MSP-Typ ist auch unbekannt.
Wenn's einer mit USI ist, hast Du sogar noch eine Chance...
Ansonsten hilft nur noch Bit-Banging!
#1026669
Lesenswert?

Gast wrote:
> @ Stefan
>
> die grundlegenden Eigenschaften von UART und SPI sind mir klar.
> Ich brauche nur eine Schnittstelle, welche mir 2 Bytes ohne Pause und
> zusätliche Bits rausschickt.

Ohne Pause ist fast immer ein Trugschluss. Entweder es ist synchron, 
also SPI, dann übernimmt der Empänger eh mit der Taktflanke, also kann 
die Pause zwischen 2 Bytes vier Tage lang sein, denn es kommt dazwischen 
kein Takt raus. Oder es ist asynchron, also UART, dann gibts Start und 
Stopp-Bit.

Also, was genau willst du ansteuern, und welchen MSP430 nimmst du?
Gast #1026679
Lesenswert?

Ich würde sowas mit einem Timer und einem normalen IO machen. Dann hast 
Du alles selber unter Kontrolle und die Software ist auch ohne grosse 
Änderungen auf anderen Kontrollern lauffähig.
Falls der MSP einen DMA-Controller einverleibt hat, kann man es 
vielleicht sogar mit diesem elegant lösen.
Gast #1026702
Lesenswert?

MSP430F149 hab ich aber im ersten Beitrag erwähnt.

Also...
ich möchte die 2 Bytes an den Funkchip ADF7012 schicken, dieser verfügt 
über einen DataIN Port.
Mein Empfänger RF Teil soll nun diese beiden Bytes empfangen.
Das Problem ist jetzt nur, das es sich beim Empfänger um den CC1100 
handelt, welcher über eine SPI Schnittstelle verfügt. Empfangene Bits 
werden über SPI an den Controller gesendet.

Jetzt wieder zum Sender:
Sende ich nun über UART, versteht das mein Empfänger als 2Bytes+2Stop 
und 2Start Bit = 20Bit. Sende ich über SPI versteht der Empfänger die 
Pause, welche auftritt als 2 '1' Bit, also insgesamt auch 20 Bit.

Das große Problem ist halt, dass der Sender RF Chip die Daten welche 
über DataIN kommen einfach sendet, und der Empfänger die empfangenen 
Daten über SPI wieder ausgibt.

Also möchte ich einfach 16 Bit ohne Pause (welche der Empfänger als '1' 
interpretiert) und/oder ohne Start und Stop Bit (welche der Empfänger 
ebenfalls dann über SPI an den Empfänger Controller sendet) schicken.

Mag jetzt sehr verwirrend sein und vielleicht mit zwei identischen Funk 
Chips einfacher zu lösen sein. Aber die Hard Ware ist gegeben und ich 
möchte da nichts ändern.

Also nochmal:
UART ohne Start und Stopbit möglich???
SPI ohne Pause möglich???
oder ander einfach Lösung???
Gast #1026721
Lesenswert?

Ohne das Datenblatt des ADF7012 jetzt komplett gelesen und verstanden zu 
haben... aber da steht doch ganz klar drin, dass die zu sendenden Daten 
an TxDATA über TxCLK synchronisiert werden müssen.
Du musst Dir also ein Schema ausdenken, wo Dein µC TxCLK als 
Eingangssignal verwendet und dazu synchron die Daten ausgibt!
Gast #1026734
Lesenswert?

@ Stefan

TxDATA ist korrekt.
TxCLK brauch ich nicht, da ich einfaches FSK und kein GFSK verwende, das 
ist nur nötig, wenn ich über meine Daten eine Gaußkurve legen möchte, um 
störende Oberwellen zu filtern. Diese Kurve benötigt dann eine 
synchronisation mit den Bits, welche über TxCLK gegeben wird.

Die Funkübertragung funktioniert ja.
Gast #1026751
Lesenswert?

Ich frage mich gerade, ob Du nicht ein generelles Problem bei Deiner 
Funkdatenübertragung drin hast. Wenn Dein Empfänger eine Pause als '1' 
interpretiert, dann läufst Du doch Gefahr, dass das auch bei Datenbytes 
passiert, wenn lange '0' oder '1' Sequenzen vorkommen?!
Du musst -denke ich- auf jeden Fall Deine Daten für die Funkstrecke 
codieren (Manchester, 4B5B, o.ä.), um von der "Zustandscodierung" auf 
eine "Flankencodierung" zu kommen!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren