¿Mantiene activo el maestro SPI / TWI?

0

Estoy diseñando una aplicación de registro de datos que utiliza un microcontrolador AVR de 8 bits. Utiliza las interfaces TWI y SPI con el microcontrolador como maestro. Hay un dispositivo SPI, una tarjeta microSD y un dispositivo TWI, el acelerómetro MMA8452 . El acelerómetro se va a muestrear a 400~800 Hz , y planeo almacenar cantidades relativamente grandes de datos para que haya escrituras semipresentadas en la tarjeta microSD a medida que se llene la memoria de la unidad.

Mi pregunta es cuál es el flujo de trabajo recomendado para habilitar / deshabilitar las interfaces. ¿Puedo mantener baja la SS para la interfaz SPI en toda mi aplicación o solo debo mantenerla activa cuando me conecto con la tarjeta microSD?

Además, ¿puedo mantener las interfaces maestras de TWI / SPI habilitadas, o debo habilitarlas solo cuando se requiere la interfaz?

ej. código (para TWI, similar para SPI):

// enable/disable during each operation
twi_master_enable(&TWIC);
// ... TWI-related operations
twi_master_disable(&TWIC);

O, es esto mejor:

// initialization/wake-up code
twi_master_enable(&TWIC);

// .. somewhere else in the code, perform TWI operations

// power-down/sleep code
twi_master_disable(&TWIC);
    
pregunta helloworld922

1 respuesta

3

Debes mantenerlos habilitados.

Las tarjetas SD requieren que la línea / SS se alterne en ciertos momentos, por ejemplo. restablezca la transferencia SPI a un estado conocido, reduzca una transacción más larga, etc. Por lo tanto, no puede dejarla siempre activada, debe controlarse correctamente.

Tendrá problemas con el rendimiento SD. Es difícil encontrar especificaciones exactas para todos los fabricantes, pero la mayoría de las tarjetas SD pueden "salir a almorzar" hasta 250 ms mientras se realizan ciclos de escritura internos (que pueden incluir grandes borrados o la reasignación de sectores para equilibrar la carga). Descubrirá que, si bien las escrituras en la tarjeta regresarán inicialmente en unas pocas decenas o cientos de microsegundos, de vez en cuando (tal vez cada 30 segundos aproximadamente, depende en gran medida de la tarjeta) la tarjeta tomará de algunas decenas a cientos de Milisegundos para completar la escritura. Esto significa que necesitará la capacidad de almacenar cientos de muestras de acelerómetros, por lo que deberá tener cuidado de asegurarse de tener suficiente SRAM libre en su AVR para eso. O, agregue almacenamiento de búfer externo. He tenido un gran éxito con chips de FRAM , debido a la velocidad a la que puede leer y escribe bytes individuales.

    
respondido por el Jim Paris

Lea otras preguntas en las etiquetas