Depuración de un sniffer de bus CAN basado en LPC23XX

2

Estoy intentando que funcione un detector de bus CAN, basado en LPC2368 . Sigo recibiendo una interrupción de error de bus, de tipo "error de formulario". Sospecho de mi configuración de tiempo. Verifiqué que la parte emisora está transmitiendo a 125 kbit / s (8 bits de duración de bit). Aquí está mi configuración para un reloj de CPU de 72 MHz y una velocidad de bus de 125 kbit / s:

#define PULSE_BEFORE_SAMPLE 8
#define PULSE_AFTER_SAMPLE 3
#define PULSE_PER_BIT (PULSE_BEFORE_SAMPLE + PULSE_AFTER_SAMPLE + 1) 
#define TSEG1 (PULSE_BEFORE_SAMPLE - 1)
#define TSEG2 (PULSE_AFTER_SAMPLE - 1)
#define SJW 3 //sync jump width
#define SAM 0 //sampling 0=single sample 1=triple sample

#define CAN_PRESCALER 7 //((CPU_CLK_HZ / PCLK_DIVIDER / CAN1_BAUDRATE / PULSE_PER_BIT) - 1 )
...
PCLKSEL0 |= PCLK_CAN1 << 26; //clock source = CCLK/6
...
CAN1BTR = (CAN_PRESCALER | (SJW << 14) | (TSEG1 << 16) | (TSEG2 << 20) | (SAM << 23));

¿Estoy cometiendo un error obvio aquí? El controlador se ejecuta en modo de solo escucha, todos los demás bits de modo se establecen en 0.

    
pregunta Atilla Filiz

2 respuestas

2

El problema fue acerca de seleccionar los pines incorrectos. El caso está cerrado.

    
respondido por el Atilla Filiz
4

He trabajado con el controlador CAN de Microchip con la interfaz de bus SPI , MCP2515 . Una de las partes más difíciles de configurar CAN es asegurarse de que todos los registros de velocidad en baudios estén configurados correctamente para todos los dispositivos en el bus. No estoy seguro si tiene acceso a los registros en el dispositivo de envío, pero el hecho de poder leer los valores de registro de la velocidad de transmisión exacta del remitente puede darle una idea de qué registro ha configurado incorrectamente. También saber el tipo de error si el remitente lo detecta puede ayudarlo a resolver su problema de bus CAN.

Microchip tiene una nota de aplicación, AN754 , que proporciona una guía para configurar el bus CAN sincronización. No es específico de Microchip. Hay algunos parámetros de temporización básicos que debe configurar correctamente para que la comunicación del bus CAN funcione. Ellos son:

  • Tq = Time Quanta
  • Tiempo nominal de bits
  • Ancho del segmento de sincronización
  • Ancho del segmento de propagación
  • Ancho del segmento 1 de la fase
  • Ancho del segmento 2 de la fase

Asegúrese de que todos estos valores coincidan en su remitente y receptor.

    
respondido por el mjh2007

Lea otras preguntas en las etiquetas