www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme bei SPI Übertragung


Autor: Mathias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe ein Problem bei meiner SPI Übertragung. Wenn ich die
Daten per Logic Analyser am Ausgang des uC anschaue, bekomme ich nie
die Daten die ich in den Datenpuffer geschrieben habe. Meiner Meinung
nach werden die Daten nicht richtig in den Puffer übernommen.

Im Anhang ist ein Screenshot vom Logic Analyser, nach dem Senden von
0x00. Was auf dem Bild zu sehen ist, entspricht jedoch 0xEF und nicht
0x00!!

Einen Fehler in der SPI Initialisierung kann ich ausschließen. Kann es
sein dass die Daten nicht stimmen da die SPI Schnittstelle unbeschaltet
ist? Greife die Daten (MOSI - Leitung) über einen Serienwiderstand ( 470
Ohm ) direkt am uC ab.

Mfg, Mathias

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hoch ist denn dein SPI-Takt?

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
8MHZ/128

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, dann sind 500kHz Samplerate ok :)

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jupp :-)

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
muss der Datenbuffer ausgelesen werden, bevor man neue Daten
hineinschreiben kann?

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NEIN

ich kenne deinen Code nicht, ich denke auch nicht das es daran liegt,
aber man darf nix in das register reinschreiben solange noch
rausgetaktet wird....

Autor: Mathias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so hier mal ein auszug aus meinem code

mfg, mathias

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass das SPI Probleme mit der Verwendung des internen
Quarzes hat (7.3728Mhz) => LPC936

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner eine ahnung was das sein kann?

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"keiner eine ahnung was das sein kann?"


Naja, den LPC936 benutzen (hier) wohl nicht sehr viele.

Außerdem reichlich spät, daß Du damit rausrückst.
Mit fehlenden fundamental wichtigen Angaben kann man schnell jemanden
vergnatzen.


Peter

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Kann es sein, dass das SPI Probleme mit der Verwendung des internen
Quarzes hat"


Kein MC hat Probleme mit den internen Quarz, da keiner einen internen
Quarz hat !

Wäre ja viel zu teuer sowas. Guck Dir mal die Preise von RTC-Bausteinen
mit internem Quarz an.

Der interne RC-Oszillator macht nur Probleme bei UART oder
RTC-Anwendungen.


Peter

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lpc901 hat einen internen 7.3728Mhz Quartz und kostet bei größeren
stückzahlen um die 80Cent!! genau genommen hat die ganze lpc900 serie
einen internen quarz!

Das problem hab ich übrigens gelöst. lag daran, dass ich ein
übersprechen der leitung am logicanalyser hatte.... somit hatte ich bei
jeder pos. flanke von clk bzw. cs einen kurzen impuls auf mosi!

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da frage ich mich, was der Unterschied zwischen einem RC- und einem
Quarz-Oszilator ist.

In diesem Dokument steht nur was von RC-Oszillator:

http://www.semiconductors.philips.com/acrobat/data...

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auf jeden fall habe ich schon mehrere projekte mit einem lpc931
realisiert und dabei den internen quartz verwendet!

sehr genau ist das ganze natürlich nicht, aber zuwas auch. wenn ich
damit eine uhr machen will verwende ich ja so und so einen externen
takt wie zb. den ds32khz oder überhaupt einen rtc mit integriertem,
temperaturstabilem quartz

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"und dabei den internen quartz verwendet!"

Dann verrate mal, wie Du etwas verwendest, das gar nicht existiert !

Im Datenblatt steht nämlich nur: "On-Chip RC oscillator Option"


"sehr genau ist das ganze natürlich nicht"

Weil es eben kein Quarz ist !


Peter

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht hat da jemand Probleme, den Unterschied zwischen Quarz und
Oszillator zu verstehen...

Autor: Mathias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
lol @ peter

nur kann ich das ganze programm mit dem rc ocsillator laufen lassen (
mehrere LPC931 Projekte von mir funktionieren so ohne Probs.) und sogar
die oszillator pins alls i/o pins verwenden

kannst es ja selber probieren, wenn du lust und laune dazu hast..
einfach in der startup datei bzw. in der configuration den int. rc
oszillator auswählen und laufen lassen

im anhang noch eine art "beweis", dass man keinen ext. quarzt
benötigt

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. hat der LPC eine internen RC-Oszillator (deiner Meinung nach war der
interne Quarz kaputt o.ä)
2. Bei SPI ist die Übertragungsgeschwindigkeit ziemlich egal, da es
sich um eine synchrone Datenübertragung handelt; der Takt wird also auf
einer separaten Leitung übertragen, und muß nicht wie bei asynchroner
Übertragung durch den Empfänger erzeugt werden.
3. Was ist das den fürn Beweis? Zeigt nur, was ich in 1.) schon
geschrieben habe.

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
k @ peter ich habe keinen internen quarzt sondern den int. rc oszillator
verwendet. wollte eben nur wissen ob der rc oszillator mit spi probleme
hat... hat er jedoch nicht.. ob es probleme mit dem uart gibt wage ich
zu bezweifeln, da man ja auf den int. baudragengenerator zurückgreifen
kann, welcher sich vom rc oszillator ableitet. Dass man auf eine
begrentzte anzahl von baudraten beschränkt ist ( genau genommen 9),
muss man halt dann in kauf nehmen. bei den 9 baudraten ist jedoch
gewährleistet dass die toleranz in einer gew. grenze gehalten wird,
damit der empf. noch richtig abtasten kann

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ rahul:

1: jupp habe den oszillator mit dem quartz verwechselt => sry
2. eigentlich logisch
3. stimmt wohl :-)

=> dann noch ein schönes we

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo @ all

Ich möchte 2 Bytes über die SPI-Schnittstelle übertragen. Jedoch wenn 
ich die SPI-Clock-Leitung messe, dann sind 10 Takte zwischen der 
Übertragung des 1. Bytes und der Übertragung des 2. Bytes pause.

// 1. Byte übertragen
SPDR = 0x01;
//warten bis das 1. Byte übertragen ist
while(!(SPSR & 0x80));

Hier zwichen ist eine lange Pause. Ich denke mal das der Whilevergleich 
einfach zu lange dauert. Gibt es da keine bessere Alternative die nicht 
so lange dauert?

// 2. Byte übertragen
SPDR = 0x01;
// warten bis 2. Byte übertragen wude
while(!(SPSR & 0x80));

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum einen uralten Thread hijacken?

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wollte einen neuen aufmachen. ^^

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.