So erhalten Sie ein 8-MHz-Rechtecksignal aus einem pic18f45

Ich verwende einen Pic18F45K40, um einen ST7590-Powerline-Netzwerkchip zu steuern, der ein 8-MHz-Taktsignal benötigt, um zu funktionieren. Ich habe das Datenblatt gelesen und es sieht so aus, als ob ein 16-MHz-Signal vom 64-MHz-Mikrochip erzeugt werden kann.

Ich habe das Referenztakt-Ausgangsmodul wie folgt eingerichtet:

#pragma config CLKOUTEN = ON

Und

#define oCLK_INIT()      CLKRCLKbits.CLK=1; \
                         CLKRCONbits.EN=0;  \
                         CLKRCONbits.DC=2;  \
                         CLKRCONbits.DIV=3; \
                         SCANTRIGbits.TSEL=1;
                         //OSCCON1bits.NOSC=6;
#define oCLK_EN_ON()       CLKRCONbits.EN=1;

und verwendete PPS, um RB4 durch Einstellung zu fixieren

  RB4PPS=0b10100;        /* B4=CLKR 8MHz      */ \

Ich bekomme zwar ein 8-MHz-Signal heraus, aber es sieht so aus:

Geben Sie hier die Bildbeschreibung ein

Dies ist eher sinusförmig als quadratisch und könnte der Grund sein, warum ich nicht über UART mit dem ST7590-Chip sprechen kann. Kann jemand erklären, was passiert?

EDIT: Ergebnis der Änderung der Anstiegsgeschwindigkeit.

Geben Sie hier die Bildbeschreibung ein

Meinst du PIC18 F 45 K 40?
Könnte es sein, dass sich das Signal verschlechtert, wenn es an den Oszilloskopeingängen ankommt? ZB durch Kapazität und/oder Induktivität in den Leitungen?
Ja, es ist PIC18F45K40. Es ist ein 8-MHz-Signal, ich glaube nicht, dass die Länge des Oszilloskopkabels das Signal so verändern würde.
Ich sehe, Sie haben Fortschritte gemacht, aber wie groß ist die Bandbreite Ihres Oszilloskops? Wenn Sie möchten, dass es eine Rechteckwelle genau darstellt, müssen die ungeraden Harmonischen (3 x 8 MHz, 5 x 8 MHz, 7 x 8 MHz usw.) innerhalb der Bandbreite des Oszilloskops liegen. Beispielsweise würde ein 20-MHz-Oszilloskop (oder eine Oszilloskopsonde) eine 8-MHz-Rechteckwelle anzeigen, die wie eine Sinuswelle aussieht, und Sie würden wirklich 80 MHz oder mehr wollen, wenn Sie die Signalintegrität einer Rechteckwelle bei 8 MHz untersuchen möchten.

Antworten (2)

Zwei Möglichkeiten - Streukapazität oder Anstiegsgeschwindigkeitssteuerung.

Wenn Sie an Steckbrettern arbeiten, würde ich denken, dass es sich um eine unerwünschte Kapazität zwischen den Stiftleisten handelt, aber aufgrund des Gehäuses des STmicro-Geräts glaube ich, dass Sie mit richtigen Leiterplatten arbeiten.

Das führt zu der anderen Möglichkeit - der PIC begrenzt die Anstiegsgeschwindigkeiten auf dem Port. Dies geschieht, um die EMV durch schnelles Schalten zu reduzieren, sodass die Anstiegsgeschwindigkeiten der Transistoren verlangsamt werden, um einen schönen Gradienten zu erzeugen. Funktioniert hervorragend unter 1 MHz, aber bei 8 MHz müssen Sie vorsichtig sein.

Siehe Seite 244 für Anweisungen zum Löschen der SLRCONx-Register, um die Begrenzung der Anstiegsgeschwindigkeit zu verhindern oder zu verringern.

15.2.5 Slew Rate Control
The SLRCONx register controls the slew rate option for each port pin. Slew rate for each port pin can be
controlled independently. When an SLRCONx bit is set, the corresponding port pin drive is slew rate
limited. When an SLRCONx bit is cleared, The corresponding port pin drive slews at the maximum rate
possible.
Oh wow, das hat gewirkt.
Hatte es die beabsichtigte Wirkung? Das vollständige Löschen des Registers kann ein unerwünschtes Klingeln des Signals hervorrufen, daher möchten Sie möglicherweise nur die Anstiegsgeschwindigkeit beschleunigen.
Ich habe die Antwort auf die Frage hinzugefügt. Vielen Dank, ich werde in Kürze die nächsten Tests durchführen.
Angenommen, Sie haben das Register vollständig gelöscht, würde ich dies jetzt erwarten, wenn ich eine Streukapazität sehe, dh die rampenförmige ansteigende Flanke, die scharfe abfallende Flanke mit einer Rampe am unteren Rand.
Ich stimme seiner aktuellen Form zu und da Xin auf dem ST7590 ein analoger Pin ist, liest er das entsprechende High und Low. Ich habe nur den mit dem SLRCONB verbundenen Pin gereinigt. der Rest des Registers bleibt also aktiv. Ich kann immer noch keine Antwort vom ST7590 bekommen, aber es liegt an einem anderen Grund und nicht an der Uhr. Danke schön. Ich werde in Kürze eine weitere Frage posten.

Ein ideales Rechtecksignal existiert nicht. Sie haben immer eine bestimmte Anstiegs- und Abfallzeit in Ihrem Signal. Je höher Ihre Frequenz ist, desto größer wird die relative Anstiegs- und Abfallzeit im Vergleich zu Ihrer gesamten Ein- bzw. Ausschaltzeit. Worunter Sie leiden, sind einerseits die parasitären Eigenschaften Ihres Pfades und die interne Beschaltung des Pins inklusive ESD-Schutz und Kapazität gegen Masse.

Ein externer Oszillator erzeugt auch kein sauberes Rechtecksignal, sondern eines, das wie Ihr Scope-Druck aussieht, aber das ist kein Problem, da Sie normalerweise eine Flankenerkennungsfunktion an Ihren Clock-Eingängen haben.