Uso de la SPI extendida con la Due

Uso de la biblioteca SPI extendida con la Due


Estas APIs no se deben utilizar en nuevos proyectos. Utilice SPISettings con SPI.beginTransaction () para configurar los parámetros de SPI.
En la placa Arduino Duo, el SAM3X tiene capacidades avanzadas de SPI. Es posible utilizar estos métodos extendidos o los basados en AVR.

La API extendida puede utilizar los pines 4, 10, y 52 para el CS.

Uso


Debe especificar cada pin que desea utilizar como CS para los dispositivos SPI.

Es posible que la Due maneje automáticamente la selección de chip entre múltiples dispositivos que comparten el bus SPI. Cada dispositivo puede tener también diferentes atributos tales como la velocidad y DataMode.

Si se usan varios dispositivos con diferentes pines CS, tendrá que declarar los pines en el setup (). En el siguiente ejemplo, hay dos dispositivos que comparten los pines SPI MISO, MOSI y SCK. Un dispositivo de CS se conecta al pin 4, el otro al pin10.

void setup ()   
// inicializa el bus para un dispositivo en el pin 4
  
SPI begin 
  // inicializa el bus para un dispositivo en el pin 10
 
SPI. begin 10 
}
Una vez que un pin ha sido declarado como un pin CS, es posible cambiar sus comportamientos predeterminados también. Por ejemplo, si los dispositivos funcionan a diferentes velocidades de reloj, la setup () puede tener este aspecto:

void setup ( ) { 
  // inicializa el bus para el dispositivo en el pin 4
  SPI. begin 
  // Establece divisor de reloj en el pin 4 a 21
  . SPI setClockDivider 21 
  // inicializa el bus para el dispositivo en el pin 10
  . SPI begin 10 
  // Establece divisor de reloj en el pin 10 a la 84
  SPI. setClockDivider 10 84 
}
Una sola transferencia de bytes a un dispositivo en el pin 4 podría tener este aspecto:

void loop ( ) { 
  byte response = SPI. transfer 0xFF 
}

En lo anterior, "0xFF" envía al dispositivo SPI en el pin 4 y los datos procedentes de MISO se guarda dentro de la variable response. La selección de chip es manejada automáticamente por el controlador SPI, el comando de transferencia implica lo siguiente:


  • Seleccionar dispositivo mediante el ajuste del pin 4 a nivel LOW
  • Enviar 0xFF a través del bus SPI y devolver el byte recibido
  • Anular la selección de dispositivo mediante la configuración del pin 4 a nivel HIGH


  • Es posible enviar más de un byte en una transacción contando la del comando de transferencia para no anular la selección del dispositivo SPI después de la transferencia:

    void setup(){
    // transferencia 0x0F al dispositivo en el pin 10,para mantener el chip seleccionado
    SPI.transfer(10, 0xF0, SPI_CONTINUE);
    // 0x00 transferencia al dispositivo en el pin 10, para mantener el chip seleccionado
    SPI.transfer(10, 0×00, SPI_CONTINUE);
    // 0x00 transferencia al dispositivo en el pin 10, almacenamiento de bytes recibidos en Respuesta1, para mantener el chip seleccionado
    byte response1 = SPI.transfer(10, 0×00, SPI_CONTINUE);
    // 0x00 transferencia al dispositivo en el pin 10, almacenamiento de bytes recibidos en Respuesta2, anula la selección del chip 

    byte response2 = SPI.transfer(10, 0×00);


    El parámetro SPI_CONTINUE asegura que la selección de chip se mantenga activa entre las distintas transferencias. En el último SPI_CONTINUE la transferencia no se especifica, ya que es el último byte transferido.

    Ver la página de referencia para las funciones SPI setClockDivider (), setDataMode transfer (), y setBitOrder () para ver la sintaxis correcta cuando se utilizan los métodos extendidos.

    Nota: una vez que se llama a SPI.begin (), el pin declarado no estará disponible como pin  de propósito general de E / S. 
      

    No hay comentarios:

    Publicar un comentario