Diseño de diseño de PCB de cristal en tablero Re spin

Estoy tratando de rediseñar el diseño con un cristal de 8 MHz (XT1) para el microcontrolador atmega328p. Dado que este microcontrolador usa un oscilador interno, la comunicación UART no funciona de manera confiable en el diseño actual. Así que decidí usar un cristal externo para la producción.

Dado que esta placa funciona bien con todas las demás funcionalidades excepto UART, necesitamos volver a girar la placa con cambios mínimos. El rojo representa la capa superior de PCB y el azul es la capa inferior de PCB (es un diseño de 2 capas). Debido a la restricciones de ubicación en el lado inferior de la PCB, coloqué el cristal y su capacitancia de carga en el lado superior mientras que el microcontrolador se encuentra en el lado inferior.

He estado leyendo varias recomendaciones específicamente para el diseño de diseño de cristales. Estoy seguro de que el diseño no cumple con la mayoría de ellas (por ejemplo, Evitar vías). Estoy preocupado por la funcionalidad de la PCB, especialmente por los problemas de EMC. Realmente no hay señales de alta frecuencia en esta placa, excepto 8 MHz ingrese la descripción de la imagen aquí. ¿Alguien puede dar algunas sugerencias sobre cómo se puede mejorar el PCB?

Recuerde que cuando tiene una onda cuadrada de 8 MHz, sus componentes de frecuencia están muchos armónicos por encima, especialmente cuando son cuadrados bastante agudos.
8 MHz? Todo estará bien, esas son solo pistas eléctricas que corren debajo, ¿verdad?
@Brian Drummiond 5: Sí. Es un oscilador de cristal de 8 MHz y las pistas que se ejecutan debajo son 3v3 y trazas GND
Algunas huellas parecen estar peligrosamente cerca de las vías.
a mi tambien me parece bien..
He tenido muy buena suerte con estos: resonadores Murata con tapas integrales . Son agradables y pequeños y ciertamente lo suficientemente precisos para sus propósitos.

Respuestas (4)

Cosas que cambiaría:

  • no utilice pistas en ángulo recto;
  • considere el uso de un generador en lugar de un oscilador de la frecuencia respectiva;
  • no coloque los componentes demasiado cerca de las dimensiones (en su caso veo un agujero);
  • coloque el plano GND cerca y detrás del cristal;
  • El cableado entre las almohadillas de condensadores SMD en mi humilde opinión puede no ser una buena idea.

En algún momento hay que hacer un esfuerzo extra y hacer las cosas bien desde el principio. Creo que es este caso.

Gracias por el enlace. Entonces digamos que no tener ángulos rectos es mi preferencia personal; probablemente sea más fácil de leer en el tablero y probablemente las pistas de 45 grados sean más cortas que las de ángulo recto. Además, ¡ probablemente me gusta minimizar los polígonos de relleno de suelo en ángulo recto!

Primero, tengo que advertirte sobre la frecuencia del reloj. No conozco la velocidad en baudios que desea, pero 8 MHz no son aceptables para UART de alta velocidad (por ejemplo, 115200 bps). ¿ Has revisado la hoja de datos ? El registro UBBR n determina la velocidad de comunicación con la siguiente fórmula (p.227):

tu B B R = F O S C dieciséis B a tu d 1

UBBR debe ser un número entero entre 0 y 4095, Baud es un múltiplo entero de, por ejemplo, 2400. Por lo tanto, es fácil calcular que la frecuencia del oscilador debe tener una frecuencia de F O S C = k 1.8432 METRO H z (k es un número entero). Ejemplo: para 115,2 kbaudios, UBBR se calcula en 3,34, por lo que seleccionar UBBR = 3 produce una tasa de baudios de 125 kbaudios. Y la tasa de error se puede calcular de la siguiente manera: mi = | 1 ( C a yo C tu yo a t mi d B a tu d ) / ( d mi s i r mi d B a tu d ) | = | 1 125 k / 115.2 k | = 8.5 % lo cual es terriblemente inaceptable. Con un cristal de 8 MHz y suponiendo el máximo permitido mi = 2 % , la velocidad de transmisión máxima permitida será de 38,4 kbaudios. Por lo tanto, cuanto más lenta sea la velocidad en baudios, menor será la tasa de error. En consecuencia, en lugar de 8 MHz, le recomiendo que utilice 7,3728 MHz (1,8432 x 4). Además: ¿ Qué tan críticas son las frecuencias UART?

De todos modos, mis sugerencias sobre el diseño de PCB:

  • Usa enormes aviones GND.
  • Mantenga las pistas lo más cortas posible.
  • Coloque los componentes lo más cerca posible.
  • Agregue una almohadilla GND para la carcasa exterior del cristal. Poner a tierra la carcasa puede mejorar el rendimiento.
  • Mantenga las pistas/planos positivos y GND lo más cerca posible.
Debe mostrarnos qué tan cerca puede llegar a la velocidad en baudios de un cristal de 8 MHz y decirnos si es lo suficientemente bueno o no según los requisitos de UART. La ingeniería es a menudo un ejercicio de "suficientemente bueno"
Aquí hay una excelente calculadora UART específica de AVR: wormfood.net/avrbaudcalc.php
@Rohat: Mi tasa de baudios deseada es 9600-19800 bps. Dado que mi fuente de alimentación está limitada a +3.3V, el microcontrolador atmega328p no permite usar más de 8MHz.

Esta no es una respuesta a su pregunta, pero me gustaría plantear un punto demasiado importante para una serie de comentarios.

No conozco la familia ATMega, pero lo animo a que dedique un momento a buscar una opción compatible con pines que tenga un mejor oscilador interno. La opción puede existir o no, pero la vida se vuelve un poco más fácil si existe.

Por supuesto, si existe tal opción, si es una opción viable o no depende de su situación. Si su plan es comercial, debe sopesar los costos de remodelación del hardware frente al aumento del costo del procesador. Si necesita algo rápido, donde ya ha validado el resto de una placa existente y solo está haciendo unas pocas, probablemente funcione muy bien.

Todos tienen un oscilador RC interno, pero pueden sintonizarse dentro del 1 % con un registro ( OSCCAL).
@IgnacioVazquez-Abrams: entonces hay una respuesta. 1% es suficiente, ¿no? ¿El procedimiento de calibración es oneroso o realmente lo realiza la fábrica?
La fábrica lo hace al 10%. Para llegar al 1%, debe hacerlo en tiempo de ejecución utilizando un reloj conocido para comparar (como el cristal de 32,768 kHz conectado al temporizador 2 que se ejecuta en modo asíncrono).
@IgnacioVazquez-Abrams: Gracias por su sugerencia. Probamos 20 tableros y casi la mitad de los tableros no funciona como se esperaba ya que la precisión de su reloj interno varía con un amplio rango. También intentamos calibrar el reloj interno dentro del 1% de tolerancia usando el registro OSCCAL y eso resuelve el problema. ¿Es posible calibrar todas las placas con el mismo software? Entiendo que el valor OSCCAL no es el mismo para todos los microcontroladores atmega328p
@ANONYMOUS: si tiene la suerte de tener los pines PB6 y PB7 libres, coloque un reloj de cristal sobre ellos, maneje el temporizador 2 en modo asíncrono y utilícelo para calibrar el reloj de su sistema cada 10 segundos más o menos.
@ScottSeidman: ya probé la opción compatible con pin, pero no tuve éxito. La única opción es agregar cristal para diseños futuros con un cambio mínimo de PCB. Intento incorporar todos los comentarios válidos. Pero mi única preocupación es usar vías para la señal del reloj como el microcontrolador y los cristales están en el lado diferente de la placa. ¿Afecta el rendimiento de la señal del reloj?

Hay algunas cosas de las que me preocuparía aquí. Primero, las trazas no deben ser cuadradas. Desea eliminar las esquinas de esta PCB. El ángulo de 45 grados funciona bien. Otra cosa a considerar sería mantener los rastros alejados del oscilador, ya que puede acoplarse a otros rastros no relacionados. En este caso, esos rastros están en una capa diferente, por lo que se ve bien. Y mantenga las trazas de su oscilador lo más cerca posible entre sí.