Surgió una necesidad inesperada en mi diseño, que es controlar 2 dispositivos SPI esclavos simultáneamente. Al principio, por supuesto, planeaba usar el SPI Bus como de costumbre y controlar ambos dispositivos usando los pines / CS para que todo pareciera estar bien.
Al revisar la hoja de datos del dispositivo A hoy, noté que espera todos los datos de una sola vez, lo que significa que no puedo realizar el procedimiento que originalmente había planeado:
1) Seleccione el dispositivo B 2) Leer los datos de B 3) Deseleccionar dispositivo B 4) Seleccione el dispositivo A 5) Escribe los datos de B 6) Deseleccionar dispositivo A 7) Repita hasta que todos los datos de B vayan a A (alrededor de 1.1 Mbit)
El dispositivo A asume que cuando su / CS aumenta, es el final de la secuencia de datos. Por supuesto, no puedo leer todo desde B en una ejecución y almacenarlos en MCU RAM, ya que los datos son mucho más grandes.
Naturalmente, lo siguiente que me vino a la mente es utilizar 2 SPI maestros separados al mismo tiempo: seleccione ambos chips, lea el byte de B y aliméntelo inmediatamente a A.
Entonces, mis preguntas son:
a) ¿Es posible usar un ATmega32u4? Tiene un papel fundamental en el diseño general y el cambio a otro MCU sería un paso atrás.
b) Leí que el USART puede actuar como un segundo maestro SPI. ¿Es eso viable y confiable? ¿Qué tan difícil es implementar?
c) Si, desafortunadamente, no es posible y tengo que cambiar MCU, ¿cuál recomendaría? Tenga en cuenta que la capacidad USB de ATmega32U4 es esencial.
d) ¿Es probable que el nuevo proceso (leído de B, feed to A) cause algún comportamiento inesperado? No parece en mi punto de vista, lo pregunto por si acaso soy un ingeniero nuevo.
¡Cualquier otra idea o dirección es bienvenida! Gracias de antemano.
ACTUALIZACIÓN En caso de que desempeñe un papel importante, el Dispositivo A es un FPGA, mientras que B es una memoria flash. La MCU tiene una doble función: descargue el flujo de bits desde la PC a través de USB y guárdelo en la ROM flash / use el flujo de bits almacenado para configurar el FPGA al reiniciarlo / encenderlo. Tanto el FPGA como el flash usan SPI. De acuerdo con la hoja de datos de la FPGA (familia ice40, Lattice, " Programación y configuración iCE40 "p.26), la imagen debe programarse sin interrupción.