Ich programmiere einen Cortex M3 Bare-Metal, um mit SPI Flash zu sprechen. Eines der Konfigurationsbits eines SPI-Steuerregisters ist FRF
(Rahmenformat). Es kann entweder auf den SPI Motorola-Modus (0) oder auf den SPI TI-Modus (1) eingestellt werden. (Siehe ARM-Referenzhandbuch Seite 695 hier .)
Das Datenblatt des SPI Flash ( hier verfügbar ) gibt keinen Hinweis darauf, welchen Modus ich verwenden soll.
Was sind die zwei verschiedenen Modi und welche sollte ich für den spezifischen Flash-Chip verwenden, den ich verwende?
{CPOL=0, CPHA=0}
Motorola oder TI?Ein kurzer Blick auf das ARM-Datenblatt legt nahe, dass der Hauptunterschied zwischen dem TI-Modus und dem Motorola-Modus mit der Verarbeitung eines Ausgangssignals namens SSPFSSOUT zusammenhängt, das viele Geräte einfach nicht benötigen. Dieses Signal soll zwischen den Bytes hoch pulsieren, um anzuzeigen, welches Bit jedes Bytes als erstes betrachtet werden soll. Im TI-Modus geht es während der Übertragung des letzten Bits eines Bytes hoch, während es im Motorola-Modus zwischen den Bytes hoch und dann niedrig geht. Der Flash-Chip möchte ein Chip-Auswahlsignal, das für die gesamte Dauer einer Transaktion niedrig gehalten wird, sodass eine Ausgabe, die zwischen Bytes hoch geht, für ihn nicht nützlich ist.
Ich würde erwarten, dass der Motorola-Modus, selbst wenn SSPFSSOUT nicht verwendet wird, das Lesen von Daten in einem Bereich erleichtert (da nach jedem Byte eine Pause auftritt), der TI-Modus jedoch möglicherweise schneller ist (da keine Zeit zum Anhalten verschwendet wird) zwischen Bytes). Es ist jedoch wichtig sicherzustellen, dass die von der Steuerung erzeugte Signalfolge den Anforderungen im Datenblatt der Peripheriegeräte entspricht.
quelle