mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI- Timing auf OSCI darstellen


Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich mache gerade meine ersten Gehversuche mit dem SPI-Bus. Ziel ist es,
erst einen 24Bit AD Wandler (ADS 1217) von Burr Brown (Texas) und später
dann einen  1MByte Speicher von Atmel (AT45D161B) in Assembler zu
programmieren.
Ich habe zunächst die Sonderfunktion "digitaler I/O Port" am
AD-Wandler angesprochen. Dazu habe ich die entsprechenden
Konfigurationsregister beschrieben und anschließend wieder gelesen und
den Wert am LCD ausgegeben. Das funktioniert auch ganz gut soweit. Ich
bin mir allerdings nicht ganz sicher, wie ich die Bits CPHA und CPOL am
Master (µC) einstellen muss. Im Datenblatt des ADS1217 sind für mich
diesbezüglich widersprüchliche Angaben. Es funktioniert mit den
Einstellungen CPOL=0 und CPHA=1 sowie mit CPOL=1 und CPHA=0 ?!?

Meine Idee war es nun, mit einem Phillips Speicheroszilloskop (10 Jahre
alt, 100MHz) das SPI Timing zu untersuchen. Das klappt auch, wenn ich
extern triggere und das SCK und das MOSI Signal betrachte. Aber ich
bekomme nur ein "Schrott-Bild", wenn ich mir das MISO Signal
anschaue. Ich sehe einen schlechten dreieckigen Verlauf mit einer
Amplitude von maximal 0,5V. Das kann aber eigentlich nicht sein, da ich
einen korrekten Wert aus dem ADU herauslese und wie oben beschrieben,
auf dem LCD darstellen kann! Meine ersten Überlegungen gingen in die
Richtung: zu schlechte Performance des Oszis; das erklärt aber nicht,
warum ich das MOSI Signal darstellen kann, das MISO dagegen nicht.
Eine weitere Überlegung war, dass ich eventuell versehentlich den MISO
Treiber des ADS1217 geschossen habe und er nur noch mit schwacher,
gerade noch ausreichender Amplitude funktioniert. Es ist mir nämlich
anfangs, kurzzeitig passiert, dass ich beide Slaves adressiert (CS=1)
habe und dann 20mA zuviel in die Schaltung flossen.
Also nochmal auf den Punkt gebracht: Ist etwas zu beachten, wenn ich
MISO auf dem OSCI dastellen will, bzw. ist MISO schwieriger
darzustellen als MOSI?
Oliver

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heisst 100MHz wirklich 100Mhz oder nur 100Ms?

Im uebrigen es hindert sich doch keiner das Verhalten des SPI Buses bei
deutlich geringerer Frequenz zu beobachten. Wenn dann alles so laeuft
wie es soll schaltet du halt wieder hoch und musst dir dann nur noch
die Qualitaet deiner Flanken anschauen.

Was deine Darstellungsqualitaet angeht, wie triggerst du eigentlich? Es
sollte kein Problem sein beide Signale huebsch und ordentich zu sehen
wenn du eine vernuentige Triggerquelle hast. Auch das hast du selber in
der Hand. Du brauchst nur in deinem Programm kurz bevor du Daten ins
entsprechende Register schreibst einen Port zu setzen und danach wieder
zuruecksetzen. Damit solltest du dann ein stabiles Bild bekommen.
Ansonsten liegt der Verdacht natuerlich nahe das vielleicht keinen
Pullup hast. Vorausgesetzt natuerlich du verwendest einen 10:1
Tastkopf.

Olaf

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am Osci steht am Gehäuse 100MHz. Wie viele MSamples die Kiste macht,
muss ich nochmal genau nachlesen. Die Idee mit dem Port-Triggern hatte
ich auch. Ich setze dazu kurz vor dem Aussenden meines Dummy-Bytes
einen Port Pin. Diesen nutze ich als externe Triggerquelle mit
steigender Flanke. Kann vielleicht da genau mein Problem liegen? Wenn
ich ein Dummy-Byte per MOSI sende, dauert es ja die halbe SCK-Periode,
bis mir MISO etwas zurücksendet. Ich kann den Triggerzeitpunkt jedoch
nur vor dem Aussenden durch MOSI plazieren. Ich weiß nicht genau, wie
sich so ein Osci in solchen Situationen verhält.
Die Tastköpfe sind auf 10:1 eingestellt. Takt habe ich auf
"Takt/128". Das einzige was vielleicht noch Einfluss haben könnte,
ist die Masse- Leitung. Ich habe da nicht die Leitungen der Tastköpfe
benutzt, sondern den externen Ground-Anschluss des Oscis, weil die
Kabel an den Tastköpfen fehlen.
Pullup habe ich wieder deaktivert. Brachte beim Osci- Bild nur, dass
die "Schrott-Kurve" des MISO um VCC nach oben wanderte. Ist ein
Pullup erforderlich? Habe darüber nirgenswo Informatioonen finden
können. Ich dachte nur, dass sobald ich den µC als Master konfiguriere,
sich das SPI System seinen MISO selbst konfiguriert?
Oliver

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer misst, misst Mist.

  "Ich habe da nicht die Leitungen der Tastköpfe benutzt,
  sondern den externen Ground-Anschluss des Oscis, weil die
  Kabel an den Tastköpfen fehlen."

Signale AC- oder DC-gekoppelt am Oszilloskop angelegt?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe auf DC Kopplung gestellt, wieso?
Oliver

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DC ist hier immerhin schon mal besser als AC. Aber solange Du nicht mit
anständigen Messkabeln arbeitest und Deine Tastköpfe abgleichst, wird
mein einleitender Satz leider immer noch zutreffen.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstehe ich nicht ganz. Mein Problem ist doch, dass ich das MOSI-Signal
darstellen kann, das MISO-Signal dagegen nicht. Dann kann ich doch davon
ausgehen, dass die Tastköpfe ihren Dienst tun, oder? Oder gibt es
physikalische unterschiede zwischen beiden Signalen bezüglich
Flankensteilheit etc.?
Oliver

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Das du MOSI gut darstellen kannst und MISO nicht ist eigenartig und
deutet eigentlich auf einen def. Slavetreiber hin. Was nicht dazu passt
ist aber die Aussage:
"beschrieben und anschließend wieder gelesen und
den Wert am LCD ausgegeben. Das funktioniert auch ganz gut soweit"
0,5V sind auf jedenfall kein High-Pegel und die Werte könnten nicht
stimmen. Da ist was anderens im Busch. ?schlechter Kontakt zum Pin,
obwohl kann auch nicht sein weil:
"Pullup habe ich wieder deaktivert. Brachte beim Osci- Bild nur, dass
die "Schrott-Kurve" des MISO um VCC nach oben wanderte."
Das Ganze ist also recht hochohmig. Kalte Lötstelle? Haste mal an
deinem ADS gemessen? Wenn du Pech hast ist der Ausgang am ADS kaputt.Du
misst aber am richtigen Pin, oder?(Simples Übersprechen des Signals)
Mehr fällt mir momentan auch nicht ein.

Viel Erfolg , Uwe

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder kommen die 0,5 Volt daher, das du 1:10 Tastköpfe eingestellt hast
und 1:1 machst?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin mir sicher, dass ich am richtigen Pin messe, weil es der Stecker
für die ISP ist und die funktioniert einwandfrei. Die Sache mit dem 1:10
Verhältnis wäre auch schön gewesen, habe ich aber mit eingerechnet. Ich
dreh mich da irgendwie im Kreis. Ich hätte das auch alles nicht hier so
riesig beschrieben, wenn ich nicht schon 2 Tage daran rumgedoktort
hätte.
Oliver

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.