Configuración de la velocidad del reloj de Arduino SPI

2

Estoy tratando de comunicarme con un Nokia 1202 LCD con mi Arduino usando SPI.

La pantalla LCD utilizando el controlador STE2007. Según la hoja de datos aquí @ página 12, encuentra que el tiempo mínimo para SCLK es 250ns = > 4MHz y ningún valor máximo listado. Entonces, lo que entiendo es que este controlador puede comunicarse utilizando SPI con SCLK siendo máximo. de 4MHz.

Dado que mi placa arduino se está ejecutando a 16MHz, y usaré la biblioteca 'spi', esto es lo que creo que debo hacer:

  1. establezca los bits SPR0 y SPR1 en el registro SPCR para configurar la velocidad del reloj spi @ 4MHz
  2. do spi.begin ()
  3. ejecuta los comandos spi normalmente

¿Esto es correcto?

Algo como ...

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);
}
    
pregunta Ankit

1 respuesta

2

Puede configurar la velocidad SPI (y muchas otras cosas) usando la biblioteca Arduino SPI sin especificar ningún valor de registro. Ya lo hiciste con MSBFIRST. Al igual que:

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

Además, SPI.begin establece todos los modos de pin para ti, por lo que no es necesario que hagas eso.

    
respondido por el Jonny B Good

Lea otras preguntas en las etiquetas