Diseñé un sistema con RaspberryPi y STM32F407, comunicándose entre sí a través de interfaces SPI.
Durante los últimos 3 meses, las pruebas fueron correctas, pero ayer se quemaron una RaspberryPi y 2 de los puertos SPI de STM32F407. no sé por qué Todo estaba funcionando, me fui a dormir, todo estaba quemado por la mañana.
Aquí está el boceto de implementación:
Los PCB tienen 15 cm de largo. Las líneas SPI son paralelas. No se utilizan líneas de selección de chips. No se utiliza resistencia de terminación. La frecuencia SPI es de 200 kHz. Las fuentes de alimentación son un cargador USB de 5V 1A para RaspberryPi, circuitos LM2576 de 3,3 V (implementados por mí mismo) que convierten 24 V a 3,3 V para MCU.
Conecté en caliente mis módulos alrededor de 10 veces sin ningún problema (¿por qué la conexión en caliente sería un problema con SPI?), aunque según el artículo de Wikipedia, SPI no es conectable en caliente.
Tiene un bus SPI muy largo que se ejecuta en varios PCB. Esto no solo no se recomienda para SPI, sino que se diseñó originalmente para comunicaciones de chip a chip en una sola PCB, sino que lo tiene conectado directamente a sus CPU sin ningún tipo de búfer eléctrico.
Cualquier transitorio inducido (que podría incluir ESD durante la conexión en caliente) en cualquiera de las líneas de bus podría conducir fácilmente a cualquiera de sus CPU al "bloqueo CMOS", en el que se activa un SCR parásito que esencialmente corta Vdd a tierra. El daño físico por el aumento de temperatura resultante puede ser permanente.
SPI es particularmente fácil de almacenar en búfer, ya que cada una de las líneas es unidireccional. Debe incluir dichos búferes en la próxima revisión de cada uno de sus PCB.
david tweed
ceremonia