So schreiben Sie kontinuierliche 4-Byte-Daten ohne SCK-Verzögerung über SPI mit Pic18f45k20

In pic18f45k20 muss ich 4-Byte-Daten auf einmal ohne Setup-SCK-Verzögerung über SPI schreiben. Gibt es eine Möglichkeit, die SCK-Verzögerung aufzuheben, während 4 Bytes zusammen gesendet werden? (wie Assembly) Ich verwende MPLAB-XC8 und Hitech c. In 10 MHz SPI habe ich eine SCK-Verzögerung von 460 ns zwischen zwei Bytes. Ich möchte diese Verzögerung jedoch aufheben, um 4-Byte-Daten auf einmal zu schreiben.

Wenn Sie manuell zwei Pins bitbangen, können Sie etwas Zeit sparen, wenn Sie das Hardware-Peripheriegerät verwenden, denke ich, dass eine gewisse Totzeit zwischen Übertragungen unvermeidlich ist.

Antworten (1)

Zitieren Sie aus dem 18F4550-Datenblatt, das in Bezug auf SPI gleich sein sollte:

Bei Empfangsoperationen erzeugen SSPSR und SSPBUF zusammen einen doppelt gepufferten Empfänger. Wenn SSPSR ein vollständiges Byte empfängt, wird es an SSPBUF übertragen und der SSPIF-Interrupt wird gesetzt.

Während der Übertragung wird der SSPBUF nicht doppelt gepuffert. Ein Schreiben in SSPBUF wird sowohl in SSPBUF als auch in SSPSR schreiben.

SSPBUFist ein 1-Byte-Puffer und SSPSRist ein Schieberegister, das tatsächlich mit den IO-Pins verbunden ist.

Das bedeutet, dass der Master praktisch keinen Puffer zum Senden von Daten hat. Nach dem Senden eines Bytes muss ein neues Byte in die geschrieben SSPBUFund ein neuer Sendevorgang angestoßen werden. Dies nimmt immer Zeit in Anspruch, die sich als Verzögerung zwischen Byteübertragungen bemerkbar macht.

Wenn die Reduzierung der SPI-Geschwindigkeit, bis die Verzögerung vernachlässigbar ist, nicht in Ordnung ist, müssen Sie die SPI-Übertragung in Software implementieren. Dies ist langsamer als die schnelleren SPI-Hardwaremodi!

Beachten Sie die unterschiedlichen Taktzyklen, die die Anweisungen benötigen. Sie benötigen mehrere NOPSekunden, um ein gut definiertes SPI-Signal mit einem Taktverhältnis von 50 % zu erhalten. Ich habe das vor einigen Jahren gemacht und kann es Ende dieser Woche zeigen, da ich gerade im Urlaub bin.

Die Mikrochip-Bibliotheken bieten auch Software-SPI an. Aber ich bezweifle, dass sie Multi-Byte-Übertragungen nahtlos durchführen können.