Crystal-PCB-Layout-Design auf Re-Spin-Board

Ich versuche, das Layout mit einem 8-MHz-Kristall (XT1) für einen atmega328p-Mikrocontroller neu zu gestalten. Da dieser Mikrocontroller einen internen Oszillator verwendet, funktioniert die UART-Kommunikation beim aktuellen Design nicht zuverlässig. Daher habe ich mich für einen externen Kristall für die Produktion entschieden.

Da dieses Board mit allen anderen Funktionalitäten außer UART gut funktioniert, müssen wir das Board mit minimalen Änderungen erneut drehen Aufgrund der Platzierungsbeschränkungen auf der Unterseite der Leiterplatte habe ich den Kristall und seine Lastkapazität auf der Oberseite platziert, während der Mikrocontroller auf der Unterseite sitzt.

Ich habe mehrere Empfehlungen speziell für das Design von Kristallen gelesen. Ich bin sicher, dass das Design die meisten nicht erfüllt (z. B. Durchkontaktierungen vermeiden). Ich mache mir Sorgen um die Funktionalität der Platine, insbesondere wegen EMV-Problemen. Auf dieser Platine gibt es wirklich keine Hochfrequenzsignale außer 8 MHz Geben Sie hier die Bildbeschreibung ein. Kann jemand einige Vorschläge machen, wie die Leiterplatte verbessert werden kann?

Denken Sie daran, dass bei einer 8-MHz-Rechteckwelle ihre Frequenzkomponenten viele Harmonische darüber liegen, insbesondere wenn es sich um ziemlich scharfe Quadrate handelt.
8 MHz? Das geht schon, das sind doch nur Stromschienen darunter, oder?
@ Brian Drummiond 5: Ja. Es ist ein 8-MHz-Quarzoszillator und die darunter laufenden Spuren sind 3v3- und GND-Spuren
Einige Leiterbahnen scheinen Vias gefährlich nahe zu sein.
Scheint mir auch ok zu sein..
Ich hatte sehr viel Glück mit diesen: Murata-Resonatoren mit integrierten Kappen . Sie sind schön klein und sicherlich genau genug für Ihre Zwecke.

Antworten (4)

Dinge, die ich ändern würde:

  • Verwenden Sie keine rechtwinkligen Schienen;
  • erwägen Sie die Verwendung eines Generators anstelle eines Oszillators der entsprechenden Frequenz;
  • platzieren Sie die Komponenten nicht zu nahe an den Abmessungen (in Ihrem Fall sehe ich ein Loch);
  • Legen Sie die GND-Ebene in die Nähe und hinter den Kristall;
  • Die Verdrahtung zwischen SMD-Kondensatorpads ist IMHO möglicherweise keine gute Idee.

Manchmal muss man sich etwas mehr Mühe geben und die Dinge von Anfang an richtig machen. Ich denke, es ist dieser Fall.

Vielen Dank für den Link. Nehmen wir dann an, keine rechten Winkel zu haben, ist meine persönliche Präferenz - wahrscheinlich ist es einfacher, auf der Tafel zu lesen, und wahrscheinlich sind 45-Grad-Spuren kürzer als rechtwinklige. Außerdem minimiere ich wahrscheinlich rechtwinklige bodenfüllende Polygone!

Zunächst muss ich Sie vor der Taktfrequenz warnen. Ich kenne Ihre gewünschte Baudrate nicht, aber 8 MHz sind für einen richtigen UART mit hoher Geschwindigkeit (z. B. 115200 bps) nicht akzeptabel. Hast du das Datenblatt gecheckt ? Das Register UBBR n bestimmt die Kommunikationsgeschwindigkeit mit der folgenden Formel (S. 227):

U B B R = F Ö S C 16 B A u D 1

UBBR muss eine Ganzzahl zwischen 0-4095 sein, Baud ist ein ganzzahliges Vielfaches von beispielsweise 2400. Es ist also einfach zu berechnen, dass die Oszillatorfrequenz eine Frequenz von haben sollte F Ö S C = k 1,8432 M H z (k ist eine ganze Zahl). Beispiel: Für 115,2 kBaud wird UBBR mit 3,34 berechnet, sodass die Auswahl von UBBR = 3 eine Baudrate von 125 kBaud ergibt. Und die Fehlerquote lässt sich wie folgt berechnen: e = | 1 ( C A l C u l A T e D B A u D ) / ( D e S ich R e D B A u D ) | = | 1 125 k / 115.2 k | = 8.5 % was furchtbar inakzeptabel ist. Mit einem 8-MHz-Quarz und unter der Annahme des maximal zulässigen e = 2 % , beträgt die maximal zulässige Baudrate 38,4 kBaud. Je langsamer also die Baudrate, desto geringer die Fehlerrate. Daher empfehle ich Ihnen, statt 8 MHz 7,3728 MHz (1,8432 x 4) zu verwenden. Außerdem: Wie kritisch sind UART-Frequenzen?

Wie auch immer, meine Vorschläge zum PCB-Design:

  • Verwenden Sie riesige GND-Flugzeuge.
  • Halten Sie die Spuren so kurz wie möglich.
  • Platzieren Sie die Komponenten so nah wie möglich.
  • Fügen Sie ein GND-Pad für das Außengehäuse von Crystal hinzu. Das Erden des Gehäuses kann die Leistung verbessern.
  • Halten Sie positive und GND-Schienen / -Ebenen so nah wie möglich.
Sie sollten uns zeigen, wie nah Sie an die Baudrate kommen können, wenn Sie einen 8-MHz-Quarz geben, und uns sagen, ob es basierend auf den UART-Anforderungen gut genug ist oder nicht. Engineering ist oft eine Übung in "gut genug"
Hier ist ein ausgezeichneter AVR-spezifischer UART-Rechner: wormfood.net/avrbaudcalc.php
@Rohat: Meine gewünschte Baudrate beträgt 9600-19800 bps. Da meine Stromversorgung auf +3,3 V begrenzt ist, erlaubt der atmega328p-Mikrocontroller nicht, mehr als 8 MHz zu verwenden.

Dies ist keine Antwort auf Ihre Frage, aber ich möchte einen Punkt ansprechen, der für eine Reihe von Kommentaren etwas zu gewichtig ist.

Ich kenne die ATMega-Familie nicht, aber ich möchte Sie ermutigen, einen Moment damit zu verbringen, nachzusehen, ob es eine Pin-kompatible Option gibt, die einen besseren internen Oszillator hat. Die Option kann bestehen oder nicht, aber das Leben wird ein bisschen einfacher, wenn es so ist.

Wenn es eine solche Option gibt, hängt es natürlich von Ihrer Situation ab, ob es sich um eine praktikable Option handelt oder nicht. Wenn Ihr Plan kommerziell ist, müssen Sie die Kosten für die Neuentwicklung der Hardware gegen die gestiegenen Kosten des Prozessors abwägen. Wenn Sie schnell etwas brauchen, wo Sie bereits den Rest eines vorhandenen Boards validiert haben und nur wenige erstellen, funktioniert es wahrscheinlich sehr gut.

Sie alle haben einen internen RC-Oszillator, sind aber mit einem Register ( OSCCAL) auf 1 % genau abstimmbar.
@IgnacioVazquez-Abrams - dann gibt es eine Antwort. 1% ist gut genug, oder? Ist die Kalibrierung aufwändig oder wird sie tatsächlich vom Werk durchgeführt?
Die Fabrik macht es zu 10%. Um es auf 1% zu bringen, müssen Sie dies zur Laufzeit mit einer bekannten Uhr zum Vergleichen tun (z. B. dem 32,768-kHz-Quarz, der mit Timer 2 verbunden ist und im asynchronen Modus läuft).
@IgnacioVazquez-Abrams: Danke für deinen Vorschlag. Wir haben 20 Boards getestet und fast die Hälfte der Boards funktioniert nicht wie erwartet, da ihre Genauigkeit der internen Uhr in einem weiten Bereich variiert. Außerdem haben wir versucht, die interne Uhr innerhalb einer Toleranz von 1 % mithilfe des OSCCAL-Registers zu kalibrieren und das löst das Problem. Ist es möglich, alle Karten mit derselben Software zu kalibrieren? Ich verstehe, dass der OSCCAL-Wert nicht für alle atmega328p-Mikrocontroller gleich ist
@ANONYMOUS: Wenn Sie das Glück haben, die PB6- und PB7-Pins frei zu haben, dann schnallen Sie einen Uhrkristall darüber, fahren Sie Timer 2 im asynchronen Modus und verwenden Sie diesen, um Ihre Systemuhr alle 10 Sekunden oder so zu kalibrieren.
@ScottSeidman: Ich habe es bereits mit der Pin-kompatiblen Option versucht, aber keinen Erfolg gefunden. Die einzige Option besteht darin, Kristall für zukünftige Designs mit minimaler PCB-Änderung hinzuzufügen. Ich versuche, alle gültigen Kommentare zu integrieren. Aber meine einzige Sorge ist die Verwendung von Durchkontaktierungen für das Taktsignal als Der Mikrocontroller und die Kristalle befinden sich auf der anderen Seite der Platine. Beeinflusst dies die Leistung des Taktsignals.

Es gibt ein paar Dinge, über die ich mir hier Sorgen machen würde. Erstens sollten die Spuren nicht quadriert werden. Sie möchten alle Ecken auf dieser Platine eliminieren. 45 Grad Winkel funktionieren gut. Eine andere zu berücksichtigende Sache wäre, Spuren vom Oszillator fernzuhalten, da er mit anderen nicht verwandten Spuren gekoppelt werden kann. In diesem Fall befinden sich diese Spuren auf einer anderen Ebene, sodass es gut aussieht. Und halten Sie Ihre Oszillatorspuren so nah wie möglich beieinander.