Quiero que un RPi actúe como maestro SPI y pueda comunicarse con 24 esclavos SPI. La conexión SPI es full-duplex. Los esclavos SPI están a unos 50 cm del maestro (SPI se ejecuta en cables a otra placa PCB que no se considera aquí). Los 24 esclavos serán tableros Blue Pill STM32 , tengo que usar DMA en el SPI slave (CPU es muy ocupado).
Me he comunicado con éxito utilizando SPI con cables sin blindaje de 50 cm con una velocidad de transmisión suficientemente razonable para mi aplicación (9 MHz).
Estoy bastante seguro (aunque no lo he probado) que tendré problemas debido a los múltiples esclavos SPI y los cables largos, así que diseñé un esquema y me gustaría que me dijera qué puede funcionar y qué no. También es probable que haya espacio para simplificaciones.
Diseño
- Planeo usar 3 registros de cambio de
74HC595
en cadena para generar 24 salidas que determinarán a qué esclavo SPI se conectará el RPi. - Planeo usar
CD54HC125
quad tri-state buffers para aislar a los otros esclavos SPI cuando están conectados a uno, estos serían controlados por las salidas de los registros de desplazamiento.
Raspberry Pi
SER
,SRCLK
yRCLK
manejanlosregistrosdeturnosSPI_CS
,SPI_MISO
,SPI_MOSI
ySPI_SCLK
controlanlacomunicaciónSPI(RPieselmaestro)
registrosdeturnos
SER
,SRCLK
yRCLK
controladosporelRPi- Margaritaencadenada
- Cadasalida
SPI_x
conduciráunbúferdetresestados
BúferesSPIdetresestados
- Hay24bloquessimilarescomoeste,soloel
SPI_x
cambia - Cadaconector
01x04
machoconduceaunesclavoSPI - Lahabilitacióndesalidaestácontroladaporunadelassalidasdelregistrodedesplazamiento(aquí
SPI_0
) SPI_MISO
estáinvertidoporqueesunpindesalidadelesclavo
¡EsteesmiprimerdiseñodeKiCAD,larevisiónyloscomentariosseríanmuyapreciadosantesdequecomprecomponenteseintenteprobarenunaplacadepruebas!DespuésdeesoplaneodiseñarelPCByfabricarlo.
Editar(juliode2018):pruebadelmundoreal
AcabodeprobarlacomunicaciónentreunaRaspberryPi(master)y6tablillasdepastillasazules(STM32),dúplexcompleto.
Sin ningún dispositivo adicional y, a pesar del mal cableado, la comunicación funciona a 10 MHz de manera confiable; 99.6% sobre 12 000 mensajes (verificados con una suma de Flechter)
Si esto se amplía hasta 24 dispositivos o no, sigue siendo una pregunta :)