Estoy intentando establecer una interfaz con un dispositivo GPS que está diseñado para conectarse con un vehículo a través del bus CAN. Estoy usando un MCP2515 , conducido a través de SPI por un panel de proyectos Parallax Propeller. He logrado capturar mensajes desde el bus CAN cuando estoy conectado a un vehículo, pero cuando intento enviar mensajes desde el MCP2515 a otro dispositivo, el MCP2515 establece el bit TXERR (permanece configurado indefinidamente) y no parece que envíe el mensaje. mensaje.
El cableado básico que he configurado es que estoy usando un protector de bus CAN SparkFun que tiene el MCP2515 y el MCP2551 transceiver. CAN-H y CAN-L están conectados directamente desde el transceptor a los pines apropiados en el puerto OBD-II (pin 6 de CAN-H y pin 14 de CAN-L). Todo tiene energía y una conexión a tierra común (la placa del bus CAN, la placa de la hélice Parallax y los pines 4 y 5 del puerto OBD-II y la fuente de alimentación tienen todos los terminales conectados). Intenté colocar una resistencia de 110 ohmios (lo más cerca que estaba de los 120 recomendados) entre CAN-H y CAN-L, pero eso no cambia el comportamiento.
El fenómeno exacto es que estoy intentando transmitir y luego comprobar el registro TXBnCTRL después, continuamente, y el bit de transmisión aún está establecido, pero TXERR (bit 4) ahora también está establecido, pero nada más (el valor de el registro es exactamente 0x18 - bit 4: TXERR y bit 3: "solicitud de transmisión").
La hoja de datos simplemente dice "Si el mensaje comenzó a transmitirse pero encontró una condición de error, los bits TXERR (TXBnCTRL < 4 >) y MERRF (CANINTF < 7 >) se establecerán ". Solo veo el conjunto de bits TXERR.
Solo estoy comprobando si alguien se ha topado con este escenario y sabe lo que me podría estar perdiendo aquí.
El tema de terminar las líneas con resistencias se trata, entre otros lugares, aquí y here . A mi entender, los diagramas aquí muestran un gran par de cables, con dos o más dispositivos conectados a puntos separados en algún lugar en el medio, con resistencias de 120 ohmios en cada extremo. Pero ese no es realmente el escenario que tengo. Básicamente tengo un dispositivo en cada extremo, y he intentado colocar los resistores básicamente donde sea posible. Estoy corriendo a 500 kHz. Esa documentación de TI dice que la longitud máxima es de 100 metros, por lo que no es la longitud del cable. He incluido una imagen a continuación: la cosa roja cerca del medio es el escudo del bus CAN, que tiene cables que terminan atravesando esa placa (que he probado con y sin resistencias, no hay diferencia) y luego al azul Cat 5 el cable, luego el separador ODB negro que he separado y lo bloqueado al final es el otro dispositivo (que recibe energía y se ilumina, etc.).
Revisé y volví a revisar todos los pines y conexiones con un multímetro, y como dije, si conecto esto en mi auto, recibo mensajes. Parece que debería funcionar. ¿Estoy en las drogas?