SPI-Code von (Intel) Galileo nach Edison portieren - Arduino

Ich arbeite derzeit daran, einige Arduino-Skizzen von Intel Galileo zu portieren, die SPI verwenden (unter Verwendung eines Prototyps eines Arduino Breakout-Boards).

Ich konnte es bisher nicht zum Laufen bringen - aber ich habe ein Oszilloskop verwendet, um zu sehen, was der SPI tatsächlich tut.

Ich habe beobachtet, dass die SPI-Taktsignale von Galileo und Edison eine andere Form haben und auch eine andere Spannung haben (beachten Sie die Skalen oben auf dem Display). Mir ist auch aufgefallen, dass die Uhr des Galileo die ganze Zeit läuft, während die des Edison alle paar Sekunden aus- und wieder einschaltet.

Oszilloskop

Der obere ist der Edison und der untere der Galileo.

Als Software-Typ weiß ich nicht wirklich, was hier los ist - weiß jemand, was das verursachen könnte? Kann ich das in der Software ändern oder ist es definitiv eine Hardwaresache? Und würde dies durch den Edison selbst oder das Breakout Board verursacht werden?

Danke - jede Hilfe oder Anleitung ist willkommen!

Bearbeiten - Weitere Informationen

Unten sind einige weitere Bilder der Uhren, die mit unterschiedlichen Frequenzen laufen - HINWEIS: Der Galileo (gewünschtes Verhalten) befindet sich jetzt oben und der Edison unten. Die Skalen wurden so angepasst, dass sie gleich sind.

125kHz

Imgur

1 MHz

Imgur

4MHz

Imgur

Es sieht so aus, als ob die Uhr auf dem Edison immer mehr verzerrt wird, wenn wir die Frequenz erhöhen - könnte das unsere Probleme verursachen? Jetzt ist das Überschwingen so dominant, dass es auf einem höheren Logikpegel zu liegen scheint.

Sind das Oszilloskopsonden oder zufällige BNC-Kabel? Wenn letzteres der Fall ist, könnte die Hälfte Ihres Problems genau dort liegen.

Antworten (2)

Sie müssen wirklich feststellen, ob all das Überschwingen und Klingeln, das auf dem Oszilloskop angezeigt wird, echt ist oder nur ein Artefakt, das durch die Art und Weise verursacht wird, wie Sie die Schaltung untersuchen. Ich vermute, es ist letzteres, also stellen Sie sicher, dass Sie eine solide Erdverbindung haben, Ihre Sonden richtig kompensiert sind und / oder bessere ausleihen / kaufen.

Im Allgemeinen (wenn man das Klingeln ignoriert und sich auf die zugrunde liegende Form der Wellenform konzentriert) sieht es so aus, als hätte der Edison einen schwächeren Takttreiber als der Galileo, und tatsächlich ist er bei 4 MHz so schwach, dass die Gesamtamplitude ernsthaft reduziert wird. Wenn Sie einen relativ langen oder stark ausgelasteten Bus fahren, benötigt der Edison möglicherweise externe Puffer für die Takt- und MOSI-Leitungen.

Mit einem anderen Breakout ist das Taktsignal in Ordnung - also bin ich mir ziemlich sicher, dass es nicht damit zu tun hat, wie wir es untersuchen
Entschuldigung, ich weiß nicht, was "Ausbruch" in diesem Zusammenhang bedeutet. Aber wenn Sie glauben, dass das Klingeln echt ist, dann müssen Sie es definitiv loswerden, wahrscheinlich durch die Verwendung einer Kombination von Abschlusswiderständen an einem oder beiden Enden Ihres Busses. Ein solches Klingeln sieht für die SPI-Slaves wie zusätzliche Taktflanken aus, wodurch sie in Bezug auf den Master nicht synchron sind.

SPI selbst gibt keinen Spannungspegel an (kann 1 V sein, kann 100 V sein, auch wenn dies nicht sehr häufig vorkommt). Wenn Sie möchten, dass sich Ihre Geräte gleich verhalten, benötigen Sie einen Spannungsübersetzer (diese werden auch als Pegelumsetzer oder Pegelumsetzer bezeichnet). Sie werden dies wahrscheinlich nicht in der Software ändern können.

Das "langsam ansteigende Signal", das Sie sehen, könnte von einer Kapazität auf Ihren Datenleitungen stammen, dies wäre typisch für I2C, wo nur ein schwacher Pull-up für ein hohes Signal sorgt und die Leitung nur niedrig angesteuert wird.

Ich sehe nicht, auf welcher Frequenz Sie Ihr Signal ansteuern - könnten Sie dies angeben?

Für SPI spielt es keine Rolle, ob die Uhr immer eingeschaltet ist oder nur, wenn eine Kommunikation stattfindet. Die Kommunikation ist nur gültig, wenn die CS-Leitung aktiv ist, alles andere sollte ignoriert werden.

Das Überschwingen oder der langsame Anstieg, den Sie sehen, könnte auch von Ihrer Oszilloskopsonde kommen. Stellen Sie sicher, dass Ihre Sonde zu Ihrem Zielfernrohr passt.

Ok - wirkt sich der Signalunterschied also darauf aus, ob die Kommunikation erfolgreich ist oder nicht? Der Galileo (unten) funktioniert wie gewünscht. Benötige ich Hardware, damit die Edison-Uhr ein langsam ansteigendes Signal hat, damit dies funktioniert?
Ich glaube auch, dass ich dies mit 0,125 MHz gefahren habe, nur damit ich die Form der Taktsignale auf dem Oszilloskop sehen konnte. (In Wirklichkeit werden wir es viel schneller fahren)
Ja, es wird die Kommunikation beeinträchtigen (insbesondere die unterschiedlichen Spannungspegel). Sie müssen darauf achten, dass Sie zu keinem Zeitpunkt die im Datenblatt angegebenen Spannungspegel überschreiten. Das langsam ansteigende Signal ist eigentlich schlecht, was Sie normalerweise wünschen würden, wäre (idealerweise) ein Rechteck. Abgesehen von dem Überschwingen im oberen Signal scheint es in Ordnung zu sein, aber der Spannungspegel ist höher als das, was Ihr angeschlossenes Gerät möglicherweise verarbeiten kann.
Sie müssen auf die Signalqualität achten, sobald Sie die Geschwindigkeit hochfahren. 125 kHz ist ziemlich niedrig. Sobald Sie nach oben gehen, sieht Ihr Signal anders aus. Stellen Sie sicher, dass Ihre Datenleitungen (MISO/MOSI) in dem Moment, in dem das Signal abgetastet wird (normalerweise steigende oder fallende Flanke von SCK), den gewünschten Wert angenommen haben.
Glaubst du also, dass das Überschwingen des Edisons Dinge kaputt machen könnte? Ich habe es wieder angeschlossen (dieses Mal ist Galileo oben, Edison unten) Hier sind wieder 0,125 kHz und auch [1 MHz] ()
Entschuldigung, hier ist der 1-MHz- Link ...
Wir beabsichtigen, den SPI mit 4 MHz (oder vielleicht sogar noch höher) zu betreiben - könnte es die Verzerrung am Anfang und am Ende der Impulse sein, die dazu führt, dass er nicht funktioniert?
Bei 4 MHz sieht es so aus, als würde das "Überschwingen" das Taktsignal so stark verzerren, dass es auf einem höheren Logikpegel zu liegen scheint: 4 MHz
Nach dem Betrachten dieser Signale: Irgendetwas stimmt definitiv nicht. Ich würde vermuten, dass du etwas falsch angeschlossen hast. Könntest du die entsprechenden Schaltpläne posten. Bei 4MHz sollte das Signal recht sauber sein. Was Sie sehen, sind alle Arten von Klingeln und Verzerrungen. Haben Sie versucht, alle an Ihr SPI angeschlossenen Geräte zu deaktivieren, um festzustellen, ob möglicherweise ein Gerät den Edison / Galileo stört? Ist die fragliche SPI eine Softwareimplementierung oder wird sie in Hardware durchgeführt (ich erinnere mich, dass ich etwas darüber gelesen habe, dass ich in der Vergangenheit nur eine SW-Implementierung hatte)