Ich schreibe von meiner Firmware aus auf eine microSD -Karte, aber es ist die Aufgabe mit der niedrigsten Priorität, sodass sie während des Lesens/Schreibens durch andere Aufgaben unterbrochen werden kann.
Angenommen, ich habe mit dieser microSD-Karte über einen UART kommuniziert. Das Problem beim Lesen wäre, dass das Hardware-RX- FIFO überlaufen würde, sodass die maximale Verzögerung, die ich anstrengen könnte, (FIFO-Größe × Bytes/Sekunde) wäre, und beim Schreiben gäbe es kein Problem, weil das andere Ende nur warten würde, bis ich Senden Sie das nächste Zeichen.
Wie funktioniert das jetzt, wo ich SPI verwende? Ist die Situation die gleiche, dass es für Schreibvorgänge keine Rolle spielt und für Lesevorgänge von der SPI-FIFO-Größe abhängt?
Die überwiegende Mehrheit der SPI-Geräte ist mit jeder Datenrate unterhalb des angegebenen Maximums vollkommen zufrieden. Man könnte einen Teil einer Transaktion durchführen, an einem beliebigen Punkt eine Pause einlegen, ein paar Jahre später wiederkommen und sie abschließen. Vorausgesetzt, dass es keine Störungen auf der Uhr, der Auswahl oder den Stromleitungen gab, würde die Transaktion normal abgeschlossen werden.
Es gibt drei Hauptvorbehalte, die Sie beachten sollten:
Während bestimmte Kommunikationsarten die Verwendung bestimmter Timings erfordern, gibt es selten einen Grund für SPI-Geräte, diese zu erfordern. Dennoch muss man sich bewusst sein, dass es solche Geräte gibt.
Beim Überprüfen einer Kopie der Spezifikation (die ich aus Urheberrechts- / NDA-Gründen nicht zitieren kann) wird die SPI-Rate ab 0 Hz angegeben, was bedeutet, dass der statische Betrieb in Ordnung ist. Unter SPI erhalten Sie nur Daten zurück, während das Gerät getaktet wird. Wenn Sie also ein Hardware-SPI verwenden, erhalten Sie nur etwas, nachdem Daten (auch wenn 0 / egal) gesendet wurden. In dieser Hinsicht unterscheidet es sich also von einem UART, bei dem Sie jederzeit unaufgefordert Daten zurückerhalten können.
DrFriedParts