¿Cómo puedo amortiguar SPI?

5

Tengo una placa con un dispositivo que genera datos a través de SPI (como dispositivo esclavo) y un microcontrolador. El dispositivo señala que los datos están disponibles (24 bits) al establecer un determinado pin bajo, aproximadamente 8000 veces por segundo. Si los datos no se leen antes de que estén disponibles los siguientes datos, se pierden. Desafortunadamente, el microcontrolador a veces puede estar ocupado con otra tarea, durante 1-2 milisegundos.

Me gustaría alguna forma de leer los datos del dispositivo cuando esté disponible en un FIFO o un búfer de algún tipo. El microcontrolador puede recuperar esos datos más tarde cuando no esté ocupado. También quiero poder hacer SPI de lectura / escritura directamente en el dispositivo cuando el búfer está vacío. ¿Cuál es la mejor manera de configurarlo?

    
pregunta Alex I

1 respuesta

10

Me temo que la respuesta será un microcontrolador u otro dispositivo programable. Mi razonamiento es el siguiente:

  1. El sensor es un dispositivo esclavo, no un maestro.

  2. Los dispositivos esclavos necesitan un reloj externo para sincronizar los datos.

  3. Pero solo 24 pulsos de reloj.

  4. Los dispositivos lógicos simples generalmente no están configurados para hacer su propio reloj.

  5. Por lo tanto, la solución más simple será un microcontrolador con dos periféricos SPI y suficiente memoria para amortiguar su latencia máxima de interrupción. Elija un micro con un reloj interno y la tensión de alimentación adecuada para su circuito. Quizás MSP430F5151 .

Ahora, si su sensor era un maestro SPI, entonces podría ser inteligente con pines multiplexados y simplemente usar un Microchip serial SRAM , configurando la escritura con el microcontrolador y luego dejando que el sensor continúe escribiendo en la RAM. Véase, por ejemplo, el analizador lógico Logic Shrimp para el uso creativo de las piezas de RAM en serie.

Cálculo del consumo de energía con microcontrolador.

Por solicitud popular, estimemos el sorteo actual para el MSP430 que he vinculado anteriormente.

MSP430 logra baja potencia con un DCO de reloj de alta velocidad conmutable, que solo tendrá que funcionar durante la transferencia de datos.

Vamos a elegir el reloj SPI de 8 MHz. Por lo tanto, la transferencia de 24 bits tomará 24 / (8 MHz) o 3 microsegundos. De la hoja de datos, el DCO toma 1.6 mA máximo y 6.5 microsegundos máximo para comenzar a 8 MHz. Así que toda la transferencia tarda unos 10 microsegundos. Cada transferencia toma 1.6 mA * 10 microsegundos, o 16 nC. 8000 transferencias / seg es una corriente media de 128 microamp. Pero duplique esto, porque tenemos que leer también. (Esto es un poco pesimista, ya que el reloj no necesita ejecutarse durante una transacción esclava SPI). Así que digamos una corriente promedio de 256 microamperios.

    
respondido por el markrages

Lea otras preguntas en las etiquetas