¿Es MCP2551 un convertidor de UART a CAN?

12

Quiero hacer un rastreador de bus CAN para 250 kbit / s usando mi computadora. Después de algunas investigaciones, descubrí que MCP2551 es algún tipo de regulador de nivel de voltaje para la capa física de CAN . Teniendo eso en cuenta, me pregunto si esta configuración podría funcionar. Solo quiero grabar los mensajes intercambiados con fines de prueba automatizados, no ser parte de la comunicación:

PC < - > USB-UART (quizás CP2102, porque ya tengo uno) < - > MCP2551 < - > CAN bus

Si no es así, ¿qué tipo de señales deben ingresar a MCP2551 para hacerme parte del bus?

    
pregunta rnunes

3 respuestas

14

Puedes hacer eso, pero lo que obtendrás en tu bus CAN será UART usando los niveles de voltaje CAN. Debe proporcionar al MCP2551 mensajes de protocolo CAN si desea comunicarse con los dispositivos CAN en su bus. Lo mismo para escuchar: los mensajes CAN son tan diferentes del formato UART que el UART no sabrá qué hacer con ellos. Tendrá al menos errores de fotogramas todo el tiempo y no obtendrá el contenido del mensaje.
Esta imagen muestra la estructura de un mensaje CAN:

HaymuchosmicrocontroladoresalrededorquetienenunainterfazCAN,sanseltransceptor.EsporestosquesediseñóelMCP2551.EnelpasadohemosusadoelNXPLPC2294,quetiene4interfacesCAN.CadaunodeellosnecesitaunMCP2551paraconectarseaunbusCAN.LoscontroladoresmásrecientesdeNXPincluyenlafamilia LPC1800 , de la que todos los miembros admiten CAN.

    
respondido por el stevenvh
7

He creado una interfaz USB / CAN con FT2232H en modo MPSSE (olvidar UART), MCP2515 y MCP2551. MCP2515 es la pieza clave que te estás perdiendo aquí. Estudia bien lo que hace. Es el controlador CAN real el que realiza el encuadre, los ACK, la generación y verificación de la suma de comprobación, el filtrado de mensajes y otras cosas menos obvias que la norma requiere que haga un nodo CAN. Si desea un sniffer, el MCP2515 tiene un modo de solo escucha que garantiza que no haya transmisiones en el bus. MCP2551 es simplemente un adaptador de capa física tonto, similar a un MAX232 para RS-232 o ADM485 para RS-485.

Ahora, esta arquitectura dista mucho de ser perfecta, ya que la tecnología FTDI MPSSE prácticamente no admite interrupciones (creo que solo usa transferencias USB masivas entre bastidores), por lo que tengo que sondear el controlador con frecuencia para detectar nuevos mensajes. Esto supone una gran carga para el controlador host USB, pero no garantiza que no se pierdan mensajes (MCP2515 puede almacenar internamente hasta 2 mensajes recibidos si habilita el "modo de desbordamiento", solo uno si no lo hace). Una solución mucho mejor sería un microcontrolador adecuado con CAN integrado y periféricos USB como STM32F105 (103 no puede usar USB y CAN al mismo tiempo). Vea este proyecto para una implementación operativa de exactamente esta idea. LPC18xx como lo sugiere stevenh también funcionará, pero LPC17xx probablemente sea más barato y más fácil de encontrar.

    
respondido por el Thorn
2

Ya que quiere escuchar un bus CAN existente, ya que entiendo la pregunta, realmente no puede usar un UART. CAN y UART siganlling son totalmente diferentes.

En teoría, podría mirar la línea de recepción CAN que sale del MCP2551 y descodificar el tráfico CAN. Eso no será fácil, pero es teóricamente posible. Sin el hardware CAN especializado, tendrá que muestrear algunas veces más rápido que la velocidad de bits CAN y descodificar esa secuencia de bits en el software más adelante. Probablemente necesitará grabar a aproximadamente 1 Mbit / s para decodificar 250 kbit / s CAN.

El uso de un microcontrolador será mucho más fácil. El PIC 18F2580 y otros procesadores similares tienen un periférico CAN incorporado. El hardware realiza toda la decodificación a nivel de bits y recibe tramas CAN completas. El procesador puede enviar los marcos CAN recibidos a través de su UART a su PC.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas