I am interfacing two LPC2129 microcontrollers using the CAN bus. Sending the message from the transmitter at once, but at the receiver side the receive interrupt is executing continuously.
I am getting an ACK error at the beginning as it is a lower priority interrupt over the receive interrupt, but later on the receive interrupt will occur continuously and data will also be received properly even though I am sending only once from transmitter.
A few more details are:
baud rate: 125 kbit/s
Transceiver: MCP2551
Acceptance filter: enabled (not using *FULL CAN Mode*)
How do I eliminate this ACK error?
You need to eliminate the ACK error "at the source".
If the receiver is getting receive interrupts, then it must think it has ACKed the frame (you shouldn't get a receive interrupt for an erroneous CAN frame).
Therefore the TX side must be "not seeing" the ACK bit - it then keeps retrying the frame, hence your continuous receive interrupts.
I would suggest looking at the bus on an oscilloscope to see what is going on - you'll probably see that the ACK bit is not correctly getting out of the receiver node and into the transmitter node. Then figure out why that should be (dodgy soldering maybe?)