Arduino SPI-Taktgeschwindigkeitskonfiguration

Ich versuche, mit meinem Arduino über SPI mit einem Nokia 1202 LCD zu kommunizieren.

Das LCD mit dem STE2007 Controller. Gemäß dem Datenblatt hier auf Seite 12 finden Sie, dass die Mindestzeit für SCLK 250 ns => 4 MHz beträgt und kein Höchstwert aufgeführt ist. Ich verstehe also, dass dieser Treiber über SPI kommunizieren kann, wobei SCLK max. von 4MHz.

Da mein Arduino-Board mit 16 MHz läuft und ich die 'spi'-Bibliothek verwenden werde, sollte ich Folgendes tun:

  1. Setzen Sie die Bits SPR0 und SPR1 im SPCR-Register, um die Spi-Taktgeschwindigkeit auf 4 MHz einzustellen
  2. tun spi.begin()
  3. Führen Sie Spi-Befehle wie gewohnt aus

Ist das richtig ?

Etwas wie ...

void setup()
{
  pinMode(SPI_SS, OUTPUT);
  pinMode(SPI_DC_SEL, OUTPUT);
  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  //set spi register to set SCLK @ 4Mhz
  //SPI2X = SPR1 = SPR0 = 0 
  SPCR &= ~(1<<SPR1);
  SPCR &= ~(1<<SPR0);
  SPSR &= ~(1<<SPIX2);
}
Warum versuchen Sie das nicht und sehen, ob es funktioniert, versuchen Sie zB, ein Register vom LCD zu lesen, und kommen Sie hierher zurück, wenn/wenn Sie ein Problem haben.

Antworten (1)

Sie können die SPI-Geschwindigkeit (und viele andere Dinge!) mit der Arduino-SPI-Bibliothek einstellen, ohne Registerwerte anzugeben. Sie haben es bereits mit MSBFIRST getan. So:

  SPI.setDataMode(SPI_MODE3);
  SPI.setBitOrder(MSBFIRST);
  SPI.setClockDivider(SPI_CLOCK_DIV4); // 16/4 MHz
  SPI.begin(); 

Stellt auch SPI.beginalle Pin-Modi für Sie ein, sodass Sie dies nicht tun müssen.

Danke! hätte die Dokumentation der Arduino-SPI-Bibliothek überprüfen sollen, bevor Sie die Frage stellen.