temporización de bits de bus CAN con cristal de 16 MHz

5

Estoy tratando de recibir mensajes CAN desde un radar, cuya especificación define los siguientes datos para la sincronización de bits:

CAN baudrate = 250 kBaud
Tseg1 = 8
Tseg2 = 7
Tsjw  = 4
Synchronization on one edge only.

Estoy usando un cristal de 16 MHz en el clásico MCP2515 (controlador CAN) + MCP2551 (CAN Transceptor) setup , que uso entre el bus CAN y un Arduino Uno , pero creo que tengo algunos problemas al configurar la configuración de sincronización de bits en el MCP2515.

Esto se debe a que el uso de una frecuencia de reloj de 16 MHz limita la cantidad de tiempo por bit a 16, estoy usando MBtime herramienta para verificar la sincronización de bits.

     1 time quanta synchronization segment
   + 1 time quanta propagation delay
   + 8 time quanta phase segment 1
   + 7 time quanta phase segment 2
 ----------------------------
  = 17 time quanta

Que es uno más que el requerido (16). Siendo el segmento de sincronización siempre es uno, y el segmento de propagación al menos uno, ¿cómo es posible hacer que funcione con los parámetros requeridos?

Mis ideas están usando otro cristal, tal vez 18 o 20 MHz. (En realidad lo intenté con 20 MHz y un retardo de propagación de cuatro cuantos, y no funcionó).

Sin embargo, al usar un convertidor de CAN-a-USB en mi PC, recibí con éxito los cuadros CAN que esperaba del radar. Establecí los mismos ajustes (Tseg1, Tseg2, SJW y velocidad de transmisión). Y este convertidor utiliza un cristal de 16 MHz ...

¿Hay algo que me falta? ¿Debo cambiar la frecuencia del oscilador a otro valor?

    
pregunta Daniel

1 respuesta

2

La otra parte no puede decirle la cantidad de tiempo que debe usar para varias partes de la broca. Solo puede indicarle la velocidad de bits que debe cumplir.

Elija un conjunto de cuantos de tiempo cerca de lo que usan, pero eso aún se obtiene a la velocidad de bits especificada, y todo estará bien. Considera la cantidad de "especificaciones" de su tiempo como simplemente que te dicen cómo funciona su implementación, no lo que tienes que hacer.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas