Ich habe eine benutzerdefinierte vierschichtige Leiterplatte (Signal, Masse, Leistung, Signal) mit einem STM32F4 (72 MHz), der über SPI mit einem Si4684-Empfänger und einem Si4711-FM-Sender verbunden ist.
Es scheint, dass mein Design einige Probleme mit der Signalintegrität hat. Ich kann mit dem Si4711 kommunizieren, aber ich kann nur kurze Befehle mit dem Si4684 kommunizieren. Die Kommunikation mit Si4684 schlägt fehl (einige Bits sind falsch), wenn das Firmware-Image vom STM32 auf den Chip übertragen wird (Large Data Transfer).
Wenn ich meinen Logikanalysator an den MISO-Pin des Si4711 anschließe, dreht sich dieser um. Mit dem Si4711 ist keine Kommunikation möglich, aber die Kommunikation mit Si4684 funktioniert einwandfrei. Wenn ich den Logikanalysator an den MISO-Pin des Si4711 anschließe und den Befehl POWER_UP an den Si4711 sende, scheint der Chip keine Antwort zu erhalten. Das Sondieren am Si4711 MOSI-Pin zeigt deutlich, dass der Befehl korrekt empfangen wird.
Das Verhalten ist das gleiche, wenn ich den Takt mit 300 kHz oder 8 MHz betreibe. Leider habe ich kein Oszilloskop zur Verfügung, aber ich denke, das könnte ein Problem mit der Anstiegsgeschwindigkeit sein, da es unabhängig von der Uhr ist.
Was könnte der Grund dafür sein, dass ich den Logikanalysator an den MISO-Pin anschließen muss, damit der Si4684 funktioniert, und warum funktioniert der Si4711 dadurch nicht mehr?
Was ich bisher versucht habe: - Serienterminierung (50 Ohm, 100 Ohm) auf der CLK-Leitung - Anpassen der GPIO-Geschwindigkeit der SPI-Pins am STM32 (LOW, MEDIUM, HIGH). Ich glaube, dies legt die Anstiegsgeschwindigkeit des Stifts fest. - Verbinden des Logikanalysators mit den anderen SPI-Pins. - Doppelt überprüft, ob ich den richtigen SPI-Modus (0,0) eingestellt habe
Ich verstehe, dass ich ein neues Design erstellen muss, aber ich hätte gerne einen Beitrag dazu, warum dies geschieht.
Nachfolgend finden Sie das Layout und einen teilweisen Schaltplan. SCK-, MOSI- und MISO-Signale sind hervorgehoben.
UPDATE: Ich habe den Si4711 stattdessen auf I²C verschoben, und jetzt gibt es keine Probleme mehr.
Ich arbeitete an einem Sensorkopf (4-Kanal-IR-Kamera, CMOS-Mux unter dem mit IndiumPhosphid laminierten Sensor), der absolut nicht mit dem Steuersignal emittierenden FPGA zusammenarbeiten würde, bis ich alle digitalen Schnittstellendrähte (ca. 12 davon) durchtrennt und eingefügt hatte 1-kOhm-Widerstände, um die Flanken der Zeitsignale stark zu verlangsamen und so ein Unterschwingen (auf -5 Volt) und ein Überschwingen (auf +10 V) an der 0 V/5 V-Schnittstelle zu vermeiden.
Bei der Diagnose habe ich vor dem Einsetzen der Rs der 1-Kohm-Serie mit einem Echtzeit-TEK7904 (500-MHz-Oszilloskop, keine Abtastung durchgeführt) und einem P6201 (900-MHz-Sonde bei 1 pF, wenn der X10-Kopf aufgeschoben war) nachgesehen. Ich sah diese schrecklichen Überschwinger mit 500-Pikosekunden-Flanken 4" über 1 PCB, weitere 4" über die 2. PCB und dann durch einen 1"-Anschluss und nach unten in das Flüssigstickstoff-Dewar.
Wir haben also 4 + 4 Zoll in die Leiterplatte eingebettet, mit einer effektiven Länge von 8 Zoll (skaliert durch sqrt (Er)), sodass 4 + 4 zu 8 + 8 wird, wobei der Rückweg 16 + 16 Zoll ergibt, plus Stecker und Dewar.
Ihr SPI besteht nur aus 3 Drähten. Untersuchen Sie, wo genau die Reflexionen/Überschwinger am besten gedämpft werden.
kwa
JohnDonut
kwa
Foxrider83
Pericynthion
Chris Stratton
JohnDonut
JohnDonut
JohnDonut
bitsmack
JohnDonut
bitsmack
JohnDonut