Algunas de las otras respuestas han sugerido el uso de bit banging para resolver el problema de asignar un periférico SPI a cualquier pin arbitrario. El problema con esto es la velocidad; algunos periféricos SPI pueden funcionar con una velocidad de reloj de 40 MHz o superior, y no hay forma de hacer bit bit con firmware a la velocidad.
Una alternativa es usar una arquitectura de hardware que proporcione pines periperales para ser asignados a cualquier pin arbitrario. Uno de estos microcontroladores que hace esto es la familia 8051 de Silicon Labs. Utiliza un interruptor de barra cruzada de E / S para permitir que los periféricos se asignen a casi cualquier pin de puerto, como se muestra a continuación:
Porejemplo,SCKpuedeasignarseacualquierpindeP0-0aP3-0,MISOdeP0-1aP3-1yasísucesivamente.
LafamiliaPIC24FdeMicrochiptambiénpermitequecasicualquierperiféricoseasigneacualquiernúmerodepinesdeE/Senelmicrocontrolador,usandounafunciónllamadaPeripheralPinSelect.EstádisponibleparaperiféricoscomolosmódulosUARTySPI,peronoparaaquellosquerequierenhardwareespecialcomoI2CyUSB.
LaimagenacontinuaciónmuestraundiagramadebloquesdeloscircuitosparaunpindeE/Stípico,conunmultiplexorenlapartesuperiorparaseleccionarlasalidadeunodevariosperiféricosalpindesalida,yenlaparteinferior,otromultiplexorseleccionandounodevariospinesdeentradaalaentradadeunperiférico.
LaseriePIC24Fde16bitspuedetenerhastacuatropuertosSPI,concualquieraasignadoalos39pinesextraíblesenunmicrocontroladorde100pines.