Ich habe ein Projekt basierend auf einem Bild 18f4550. Gibt es beim Schreiben in ein 595-Schieberegister einen deutlichen Vorteil bei der Verwendung von spi gegenüber regulären Io-Pins? Ich habe gehört, dass SPI schneller ist, bin mir aber nicht sicher, wie. Verwendet es eine andere, schnellere Uhr als der Rest des Chips oder ist es einfach effizienter? Ich kann ein Byte durch normale Io-Pins in einer ziemlich kleinen Anzahl von Anweisungen herausschlagen. Verbraucht spi weniger Rechenleistung? Ich werde während ziemlich intensiver Berechnungen ziemlich oft herausschalten, deshalb möchte ich so viele Zyklen wie möglich, die meinem Prozess gewidmet sind und nicht herausschalten.
Mein Hauptgrund dafür, dass ich spi nicht verwenden möchte, ist, dass mein aktuelles Layout den Zugriff auf die erforderlichen Pins etwas erschweren würde, da ich bereits einige davon für andere Dinge verwende und die Dinge mischen müsste. Ich wollte herausfinden, welche Vorteile es gibt, bevor ich anfange, Dinge zu zerreißen und zu bewegen.
Antworten:
Angenommen, Sie vergleichen ein SPI-Peripheriegerät oder eine synchrone serielle "Engine" im Mikro mit der Erzeugung derselben Sequenz über "Bit-Banging", dann ist dies tendenziell etwas schneller, aber was noch wichtiger ist, der Prozessor kann ein ganzes Byte an übergeben das Peripheriegerät zu senden und dann andere Dinge zu tun, während es gesendet wird. Im Fall von Bit-Banging neigt der Prozessor dazu, während der Übertragung überlastet zu sein (obwohl das Mikro in der Regel der Master ist und die meisten Peripheriegeräte vollständig statisch sind, können Sie wahrscheinlich eine Pause im mittleren Byte tolerieren, um einen Interrupt zu bedienen oder sogar abzufragen Dinge - Interface-getaktete serielle ADC- und Sample-Intervall-Tasks sind bemerkenswerte Beispiele für Ausnahmen.
Auf leistungsfähigeren MCUs kann es sogar möglich sein, einen DMA-Controller so zu programmieren, dass er eine Mehrbyte-Übertragung vom Speicher durch die SPI-Engine ohne weitere Aufmerksamkeit des Prozessors ausführt, insbesondere wenn nur Daten in einer Richtung wichtig sind.
Viele Mikrocontroller-Projekte sind jedoch stark auf ihre Aufgabe optimiert. Wenn Sie die Zyklen schonen und die Geschwindigkeitsreduzierung tolerieren können, ist es keine ungewöhnliche Wahl, Ihre Software zu komplizieren, um die GPIOs verwenden zu können, die das physische Layout sauberer machen.
quelle
Vorteile beim Bitbangen:
Nachteile des Bit-Banging:
Vorteile von SPI:
Nachteile von SPI:
Für mich sind die Vorteile von Bit-Banging im Vergleich zu den Vorteilen von SPI gering. Die Nachteile des Bit-Banging sind viel größer als die der SPI. Die drei Hauptgründe, die ich für die Wahl von Bit-Banging sehen kann, sind:
quelle
Auf dem PIC dauert eine herkömmliche Implementierung im Bit-Bang-SPI-Stil etwa fünf Zyklen pro Bit. Mit ein wenig Arbeit an 18Fxx-Teilen kann man das auf ungefähr vier reduzieren (auf Kosten von ungefähr drei Zyklen pro Byte zusätzlichen Overheads). Diese Zeit kommt zu der Zeit hinzu, die zum Abrufen von Daten erforderlich ist (normalerweise drei Zyklen pro Byte). Stellen Sie sich also ungefähr 40-43 Zyklen pro Byte vor. Bei Verwendung des Hardware-SPI verbessert sich die Geschwindigkeit auf zwei Zyklen pro Bit plus ein paar zusätzliche Zyklen pro Byte (einige andere können Back-to-Back-Übertragungen verarbeiten, die PICs, die ich gesehen habe, jedoch nicht), und während der SPI ein Byte sendet Der Prozessor kann den nächsten abrufen, was eine Gesamtzeit von ungefähr 18 Zyklen / Byte ermöglicht - eine Geschwindigkeitsverstärkung von ungefähr 2,5x.
quelle
Für Bit Banging (BB) haben Sie vergessen zu erwähnen:
quelle