Como dice Martin, la falta de terminadores adecuados ciertamente puede ser un problema. Sin embargo, los osciladores R-C generalmente no son lo suficientemente precisos para CAN. Por lo general, necesita menos de 1% de desajuste, lo que implicaría un .5% de precisión en cada extremo, lo que los osciladores internos de estos PIC no le darán. Pruebe con un cristal manejando cada PIC y vea si todavía tiene problemas.
Por cierto, he usado el 18F25K80 y el MCP2551 en numerosos diseños y nunca tuve un problema. Sin embargo, usé un cristal cada vez.
Añadido:
Ahora aparece otro problema, que es posible que no tenga una conexión a tierra común entre los dos nodos. Por supuesto esto es importante. Las líneas CAN conducidas por el MCP2551 son diferenciales, pero aún están conectadas directamente. Como tales, tienen un rango de modo común limitado. Ambas líneas flotan a aproximadamente 2.5 V cuando están en estado pasivo. En el estado dominante, cada línea se extrae a unos 900 mV del nivel de inactividad. El MCP2551 puede tolerar una cantidad razonable de compensación de modo común en la recepción, pero, por supuesto, necesita que las líneas estén bastante cerca de los valores nominales cuando transmiten. Tales sistemas CAN requieren una conexión a tierra. En este caso, CAN es un bus de tres hilos: CANH, CANL y tierra.
Lo que probablemente esté sucediendo es que el desplazamiento del modo común está dentro del rango del nodo receptor que se recibirá. Es por esto que obtiene el marco correctamente. Sin embargo, debido al desplazamiento en modo común, no puede colocar con éxito el bit ACK en el bus de tal manera que el transmisor lo vea. Por lo tanto, el transmisor piensa que hay un error y se reintenta.