CAN no es un reemplazo directo para un puerto serie. Lee la especificación.
Los datos a través de una conexión en serie (puerto COM en sistemas PC, UART en microcontroladores) es un flujo de bytes bidireccional. Algunas implementaciones utilizan líneas adicionales para el control de flujo, pero generalmente no están controladas ni son accesibles para la capa de aplicación. Básicamente, no hay señalización fuera de banda disponible para las aplicaciones, excepto en implementaciones inusuales que usan algunos cables adicionales.
CAN, por otro lado, transmite paquetes . Cada paquete está limitado a 8 bytes de datos y contiene información fuera de banda a la que pueden acceder las aplicaciones. Cada paquete contiene una ID de 11 bits o 29 bits. No puede simplemente enviar bytes a través de CAN como puede hacerlo a través de un puerto serie. Esto es lo mismo, ya que tampoco puedes enviar bytes a través de Ethernet.
Como siempre, debes leer la especificación antes de hacer el diseño y luego preguntarte por qué no funciona.