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.
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!
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.
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.
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.
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.
Chris Stratton