Tengo una interfaz de bus CAN que usa un cristal de 16 MHz y quiero configurar mi propia interfaz para hablar/simular paquetes CAN con la primera. Tengo cristales de 20 MHz para mi propia interfaz, pero cada vez que conecto esos dos juntos, configuro el mío a 500 kbaudios, el otro descubre solo 50 kbaudios... por lo tanto, esta pregunta.
Vale la pena mencionar que la interfaz ya configurada funciona perfectamente con el CAN del vehículo y se verifica que funciona como se esperaba.
¿Importa (en CAN) si el otro dispositivo usa un cristal diferente?
Para aquellos que se preguntan, esta es una configuración de Arduino, aunque generalmente tengo curiosidad acerca de esto en una configuración electrónica.
¿Importa (en CAN) si otro dispositivo usa un cristal diferente?
No claro que no. Simplemente establezca la tasa de baudios correctamente para cada nodo. Verifique con un osciloscopio.
La especificación CAN recomienda el uso de osciladores de cuarzo para velocidades de transmisión superiores a 125 kHz. Como regla general, debe elegir un valor de cristal que le proporcione una desviación máxima del 1 % de la velocidad de transmisión óptima.
Tendrá que determinar qué valores de cristal son adecuados leyendo cómo funciona el preescalador de reloj para el controlador CAN específico. Esto debería ser mucho más fácil cuando tiene un controlador externo como en su caso, en lugar de tener uno incorporado (que es mucho más común). Simplemente proporcione un reloj dedicado a él.
También tenga en cuenta que los preescaladores de reloj para CAN pueden ser bastante complicados, ya que tendrá que considerar cuántos de tiempo usar por bit y dónde termina el punto de sincronización. Esta suele ser la parte más difícil de hacer bien cuando se escribe un controlador CAN.
Kurt E. Clothier
Deko