Controlador CAN + PIC32

0

He intentado diseñar una placa funcional que combina el hardware del escudo del bus Arduino UNO CAN del elecrow con una placa de microcontrolador que funciona como un arduino, excepto con un hardware diferente. Este diseño se puede programar, con los controladores de software adecuados para el IDE de Arduino, pero se omite en todas las cosas de CAN.

Esta imagen muestra las conexiones entre el PIC32 y el controlador CAN MCP2515.

Ignoretodoenlaimagen,exceptolasconexionesqueexistenentreelcontroladorCANyelPIC32.Hesondeadoalgunasdelaslíneasserialesentrelosdoschipsyencontréquenohayseñaldereloj.Comotal,nohayformadequeelmóduloSPIpuedafuncionar,excepto¿cómoseejecutaelcódigoarduino?

voidsetup(){Serial.begin(115200);while(CAN_OK!=CAN.begin(CAN_500KBPS)){Serial.println("CAN BUS Shield init fail");
      Serial.println("Init CAN BUS Shield again");
      delay(100);
    }

Serial.println("CAN BUS Shield init ok!");

}

Lo anterior es solo un fragmento del código utilizado para inicializar el bus CAN en el IDE de Arduino. Cuando el bit CS se configura en un valor diferente a 10, el programa simplemente recorrerá el bucle while en el que se queja de que el bus CAN no se pudo inicializar. En el caso alternativo, simplemente saltará todos los comandos CAN como si no estuvieran en el código y todo lo demás en el programa funciona bien.

Como se mencionó, descubrí que no había comunicación en serie entre este chip y el controlador. De hecho, el programa enciende los globos conectados a los circuitos de los interruptores FET cuando detecta tierra en los puertos analógicos. Cuando esto ocurre, hay un repentino aumento aleatorio en la línea del reloj, pero ¿cómo puede ser esto posible a menos que se rompa el chip? Le dije a alguien antes que si el módulo SPI estaba dañado, el chip no funcionaría. Tenga en cuenta que el comando "CAN bus init OK!" no aparece en el monitor serie cuando la PCB está conectada a través de USB.

Mi siguiente línea de razonamiento fue que quizás necesitaba cambiar la velocidad en baudios para que coincidiera con la del módulo SPI del PIC32. No importa lo que cambie, el bus CAN no se inicializa. Otro ingeniero observó el diseño y notó que al conectar el MCP2515 a 5V, el voltaje de cruce en los puertos tendría un VIH demasiado alto para que funcionara el chip. Este pin se desconectó y se conectó a 3v3, lo que debería solucionar parte de los problemas que tenía, pero este problema de comunicación en serie sigue sin resolverse.

Si alguien tiene alguna sugerencia o experiencia útil en esta área y podría arrojar algo de luz, lo apreciaría enormemente.

Gracias, Simon

    
pregunta burton01

0 respuestas

Lea otras preguntas en las etiquetas