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
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
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
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?
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.
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
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
oder kommen die 0,5 Volt daher, das du 1:10 Tastköpfe eingestellt hast und 1:1 machst?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.