Ejemplo de comunicación por SPI

De Wikitronica
Saltar a: navegación, buscar
Este artículo está incompleto. Necesita trabajo adicional. Revisar la discusión.


La comunicación por SPI para el microcontrolador MC9S08QE128 se encuentra descrita en el artículo SPI:_Interfaz_de_Serial_Periferico_para_el_microcontrolador_QE_-_MC9S08QE128. En este caso se quiere realizar la comunicación con un giróscopo digital L3G4200D. Este sensor provee información sobre los 3 ejes de movimiento y adicionalmente un sensor de temperatura. La comunicación puede ser a través de I2C o de de SPI tal como se va a describir a continuación.

Pines del L3G4200D


PIN Descripción
VIN Esta es la principal fuente de energía que va de 2.5V a 5.5 V
GND Conexion a Tierra 0V
VDD Salida del Regulador 3.3 V
SCL/SPC
SDA/SDI
SDO
CS
DRDY/INT2
INT1





Para la comunicación por SPI el sensor L3G4200D requiere que se configure el reloj SPI a 10Mhz con polaridad de reloj en estado alto cuando se encuentra inactivo (CPOL = 1) y con la fase de reloj con flanco de bajada sincronizado con el inicio del primer bit (CPHA = 1), ver la configuración de los registros del microcontrolador MC9S08QE128 para la comunicación por SPI.



COLOCAR AQUÍ IMAGEN DE LOS TIEMPOS DE RELOJ PARA ESTE SENSOR




La selección del sensor para iniciar la transmisión se consigue colocando el pin CS del dispositivo en estado digital bajo (0v), es necesario regresarlo al estado alto (3v) una vez que se ha terminado la transmisión.

El sensor cuenta con una cola FIFO de 32 posiciones (cada una de 16 bits) para cada uno de los 3 canales del giróscopo. Esto quiere decir que cada canal puede guardar un histórico de los 32 datos mas recientes. Esto puede ayudar al micro a ahorrar potencia ya que no tiene que hacer encuesta continua al sensor para obtener los datos. En el momento que el microcontrolador lo requiera puede solicitar los datos desde la cola FIFO. Esta cola FIFO se puede deshabilitar colocando el sensor en modo BYPASS. NOTA DESCRIBIR CON DETALLE: El SPI del micro manda/recibe bloques de 8bits, mientras que el SPI del sensor manda/recibe bloques de 16bits. Por lo tanto, para cada transmisión es necesario enviar desde el micro dos bytes consecutivos y leer dos bytes consecutivos.

Configuración inicial del Microcontrolador

Configuración inicial del SPI


  1. Configuración de la Fase del reloj SPI (CPHA = 1)
  2. Configuración de la polaridad del reloj SPI (CPOL = 1)
  3. Configuración de la frecuencia del reloj SPI
    1. Configurar el pre-escalador a 10MHZ
  4. Habilitar interrupciones del SPI en Recepción
  5. Escribir en el Registro SPI1D la dirección de WHOAMI
  6. Esperar bandera de buffer de transmision empty.
  7. Mando cualquier cosas al SPID
  8. Espero la bandera de Receiver buffer Full
  9. Leo el SPI1D y comparo si es igual a lo que dice WHOAMI

Contributors

Misato, Racuna