Tengo una placa con un dispositivo que emite datos a través de SPI (como dispositivo esclavo) y un microcontrolador. El dispositivo indica que los datos están disponibles (24 bits) configurando un determinado pin bajo, alrededor de 8000 veces por segundo. Si los datos no se leen antes de que esté disponible el siguiente dato, se pierden. Desafortunadamente, el microcontrolador a veces puede estar ocupado con otra tarea, tanto como 1-2 milisegundos.
Me gustaría alguna forma de leer los datos del dispositivo siempre que 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 leer/escribir SPI directamente en el dispositivo cuando el búfer está vacío. ¿Cuál es la mejor manera de configurar eso?
Me temo que la respuesta será un microcontrolador u otro dispositivo programable. Mi razonamiento es el siguiente:
El sensor es un dispositivo esclavo, no un maestro.
Los dispositivos esclavos necesitan un reloj externo para registrar los datos.
Pero solo 24 pulsos de reloj.
Los dispositivos lógicos simples generalmente no están configurados para hacer su propio reloj.
Por lo tanto, la solución más simple será un microcontrolador con dos periféricos SPI y suficiente memoria para almacenar en búfer su máxima latencia de interrupción. Elija un micro con un reloj interno y voltaje de suministro adecuado para su circuito. Quizás MSP430F5151 .
Ahora, si su sensor fuera un maestro SPI, entonces podría ser inteligente con pines multiplexados y simplemente usar una SRAM serial de Microchip , configurar la escritura con el microcontrolador y luego dejar que el sensor continúe escribiendo en la RAM. Consulte, por ejemplo, el analizador lógico Logic Shrimp para el uso creativo de piezas de RAM en serie.
Por pedido popular, calculemos el consumo actual del MSP430 que vinculé arriba.
MSP430 logra bajo consumo de energía con un reloj DCO de alta velocidad conmutable, que solo tendrá que funcionar durante la transferencia de datos.
Elijamos un reloj SPI de 8 MHz. Por lo tanto, la transferencia de 24 bits tardará 24/(8 MHz) o 3 microsegundos. De la hoja de datos, el DCO toma un máximo de 1,6 mA y un máximo de 6,5 microsegundos para comenzar a 8 MHz. Entonces, la transferencia completa toma alrededor de 10 microsegundos. Cada transferencia requiere 1,6 mA * 10 microsegundos o 16 nC. 8000 transferencias / seg es una corriente promedio de 128 microamperios. Pero duplique esto, porque también tenemos que leer en voz alta. (Esto es un poco pesimista, ya que el reloj no necesita funcionar durante una transacción de esclavo SPI). Digamos una corriente promedio de 256 microamperios.
Nick Alexeev
alex yo
marcajes
scott seidman
davidcary