Tengo una serie de arreglos que se almacenarán en un FLASH IC externo.
Información importante sobre cómo se leen los datos:
- Los datos de cada matriz se leen en orden de índice ascendente. Así que podría leer el índice 0, 1, 10, 12 ... pero nunca 0, 1, 12 , 10.
- Las matrices son diferentes en longitud.
- Después de leer la matriz hasta su final, comienza de nuevo.
Durante el funcionamiento normal, se leerán unos 353,600 bytes por segundo desde el FLASH al MCU. Con SPI Clk @ 4MHz esto tomaría 88.4msec, lo que deja tiempo para que la MCU haga otras cosas.
De hecho, hay un byte de comando + 3 bytes de dirección encima de cada transferencia. Esta sobrecarga hace que la transferencia no sea realista.
La mayoría de estos dispositivos SPI FLASH, como el W25X40CLSVIG TR que estoy a punto de usar, tienen una función de hardware llamada retención. Uno puede detener la transferencia y reanudarla sin tener que reenviar los comandos & dirección.
Si asumimos que hay 10 arreglos, uno podría organizar los datos en el FLASH de la siguiente manera:
array0[0] ,array1[0]..., array9[0], array0[1], array1[1]...
Esto resolvería algunos de los problemas porque tendré una sobrecarga mucho menor, pero después del primer paso de la matriz más corta, volveré a enfrentar el mismo problema.
¿Alguien tiene alguna sugerencia sobre cómo implementar una solución que pueda hacer posible la transferencia?