Como recién llegado a la programación PIC, busco algunas ideas sobre cómo implementar SPI entre un MCU maestro y esclavo de la manera más eficiente.
El propósito de este sistema es proporcionar una manera extremadamente flexible de 'mapear' hasta 32 pines de salida individuales de la MCU esclava a cualquiera de los 32 pines de entrada de la MCU maestra, usando una 'matriz' configurable por software .
Para aclarar un poco más las cosas, agregué un dibujo a continuación:
AlgunaotraMCU(quenoseencuentraeneldibujo)administralaconfiguracióndelmapeodepuertosytransfiereestainformaciónalaMCUesclavacomouna"matriz de puertos" a través de I2C.
En el ejemplo de dibujo, el puerto de salida esclavo B, bit 0 (B.0) debe asignarse al pin de entrada maestro A, bit 0 (A.0) Además, la salida B.3 debe asignarse a la entrada A.1, y la salida C.6 debe asignarse a la entrada B.6
Entonces, cuando el pin maestro A.1 se eleva, el pin esclavo B.3 también debería subir. Desde el punto de vista de la aplicación, eso debería ser más firme.
Pero, ¿cuál sería la forma más eficiente de leer 32 bits desde 4 puertos en el maestro y tenerlos representados en el esclavo como un entero de 32 bits para que la aplicación proporcione la asignación a sus puertos de salida?
El reloj SPI debe ser al menos 2MHZ para ser funcionalmente aceptable. ¿Es DMA una solución aquí? ¿Puede dicha solución de transporte estar basada en interrupciones / eventos para evitar que la CPU realice el sondeo? Los MCU de destino son PIC32MX795.
Definitivamente, podría usar algunos consejos para hacer que esta comunicación continúe.
Gracias de antemano!