Forum: Mikrocontroller und Digitale Elektronik msp430: Binärsequenz ausgeben @ 2Mhz


von matthias (Gast)


Lesenswert?

Liebe Forumgemeinde,

Versuche mit einem MSP430 (8Mhz) ein Sender für ein DSSS-System zu 
realisieren. Dazu sollte dieser eine Binäre (PRN) Codesequenz bei 
2.047Mhz, der Länge 2047*1000 ausgeben. Wenn möglich externer Clock.

Da bei DSSS nur zwei "Muster" der Länge 2047 existieren, bieten sich die 
DMA-Kanäle an.

Meine Idee war, dass ich pro Muster der Länge 2047 einen DMA Kanal 
nutze. Anschliessend kann "nur" noch zwischen den Kanälen gewechselt 
werden.

Problem(e):
Single-Modus: Maximale Geschwindigkeit bei 1.25Mhz, oder gehts 
schneller?

Block Transfer: CPU Auslastung 100%! (wesshalb eigentlich?), dadurch 
kann nicht nahtlos zwischen den Kanälen gewechselt werden.

Burst-Block Modus: Unbrauchbar, da nach jedem 4te Byte ein Unterbruch 
entsteht.

Hat jemand eventuell eine Idee, Vermutung oder ein Lösungsansatz?

...oder gleich ein FPGA?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wie gibst Du denn die Sequenz hardwaretechnisch aus? Durch einfaches 
Wackeln an einem Pin? Oder nutzt Du die SPI-Schnittstelle?

von matthias (Gast)


Lesenswert?

Wackeln an einem Pin, wie du so schön sagst :-) Würde sich evt. SPI dazu 
eignen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Naja, SPI böte den Vorteil, daß eben nur alle 8 Bits lang ein Byte per 
DMA übertragen werden muss.

Der DMA-Controller müsste dann so programmiert werden, daß er vom 
SPI-Sende-Register gesteuert das nächste Byte heranholt; die 
Taktsteuerung wird somit vom SPI übernommen.

Habe das selber noch nicht gemacht, würde es aber in etwa so ablaufen 
lassen:

DMA im Single-Transfer-Modus, als Trigger wird 0100 in DMAxTSELx 
verwendet.

Möglicherweise ist es sinnvoll, den SPI im Slavemode laufen zu lassen, 
denn dann kannst Du einen externen Bittakt nutzen. Die 
DMA/SPI-Ablaufsteuerung sollte dann trotzdem so funktionieren.

Einziger Nachteil, den ich sehe: SPI-Transfers sind immer 8 Bit lang, 
daher wird es problematisch, 2047 Bits zu übertragen.

von matthias (Gast)


Lesenswert?

Vielen Dank für deine Inspiration und die ausführliche Anleitung!

Das mit den 8 Bits scheint ein Problem zu sein :/

Falls es keine andere Möglichkeit gibt, passe ich entweder mein System 
auf 2048 Bits an oder ich wähle einen anderen Controller. Bei 2048 
könnte ich dann keine m-Sequenz wählen :/ ...im Hinblick auf CDMA (bei 
mehreren Sendern), ist es schade diesen Standard zu verwerfen.

Mal schauen, jedenfalls vielen herzlichen Dank für deinen Input!

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.