¿Cómo debo seleccionar mi frecuencia de cristal?


8

He visto preguntas como esta que hablan sobre la selección de un cristal para UART y he visto preguntas como esta que mencionan 32.768 kHz para RTC. Pero, ¿cómo decido el cristal adecuado para mi aplicación?

En este momento no estoy seguro de qué baudios UART usaré, pero será uno de los estándar. Sería bueno poder obtener un tiempo semi exacto en milisegundos, pero no es un requisito. Intuitivamente, creo que ir con el cristal más rápido que puede usar mi micro me dará la mayor flexibilidad, pero ¿hay algo que me falta? ¿Existe una frecuencia de "propósito general" que la gente usa?


con mucho cuidado ... :)
vicatcu

Respuestas:


11

Honestamente, podría pasar horas describiendo las diferentes frecuencias y por qué usarlas, ¡pero alguien ya lo ha hecho!

http://en.wikipedia.org/wiki/Crystal_oscillator_frequencies

Esta tabla tiene una columna UART para indicarle qué frecuencias UART divide bien.

También le indica cuándo una frecuencia es un cristal estándar para un sistema de comunicación específico.


¿No sería bueno si hubiera alguna buena frecuencia de cristal que todos usaran?
Kellenjb

1
No sería bueno si cada parte del mundo tuviera las mismas tomas de corriente en los edificios, la vida continuará, a menos que mezcle las tomas de corriente.
Kortuk

2

Intuitivamente, yo gustaría utilizar el cristal más lentos que funciona para mi aplicación. Obtendrá menos deriva del reloj y las trazas de circuitos generalmente se comportan mejor a frecuencias más bajas.

Por otro lado, si desea hacer cosas cada pocos milisegundos, puede hacer algo similar a lo siguiente:

Fosc = 25MHz. 
T=1/Fosc = 40ns; 
1ms/40ns = 25000 cycles/ms;
0xFFFF-25000=0x9E57;

on overflow TMR1:  //assuming TMR1 is 16 bit and counts every clock cycle
doEveryMillisecond;
incrementMillisecondTimer;
TMR1 = 0x9E57;

No estoy seguro de qué micro está utilizando, pero MPLAB tiene utilidades para medir el tiempo que tardan los eventos, por lo que puede usar eso para ajustar el valor de restablecimiento de TMR1 para lidiar con cualquier sobrecarga y / o un reloj inexacto. Los cristales pueden variar lo suficiente como para que esto no sea factible en un entorno de producción ... no estoy seguro.


Como una extensión de esto, si uno no sabe qué XTAL usar en su widget, no seleccione ninguno. Simplemente deje el lugar de la PCB despoblado y espere hasta que necesite la estabilidad (la calibración del oscilador RC interno no es lo suficientemente buena a la velocidad de transmisión deseada, por ejemplo) o la velocidad. ¡No arregles lo que no está roto!
tyblu

De acuerdo: si su MCU tiene un oscilador interno, intente usarlo primero. Asegúrese de configurar las palabras / fusibles de configuración correctamente. Además, debe considerar usar un zócalo en su PCB para no tener que lidiar con cristales de soldadura / desoldadura ... la ventaja es que puede intercambiarlos fácilmente.
Isaac

1
@isaac, un cristal es una de las mayores fuentes de EMI en una placa, debe estar lo más cerca posible del plano de tierra, no pasar a través de conectores y tener trazas de blindaje a su alrededor.
Kortuk

@isaac, también, si tiene una deriva del reloj de 10 ppm, no importará la velocidad de cristal que tenga. Todos se dividirán al mismo error potencial, ya que un reloj de mayor velocidad debe tener una división mayor. Un cristal más lento significa una resolución peor en otras cosas.
Kortuk

@isaac Nunca he tenido problemas con los cristales de 40MHz antes. Solo los pego lo más cerca posible del micro. y la respuesta de @kortuk es la misma razón por la que no pensé que la deriva del reloj fuera un problema. Supuse que velocidades de reloj más altas me permitirían acercarme a 1 ms exactamente.
Kellenjb
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.