Well, after some other time spent on this issue I finally got the solution. The difference between LPC11C24 and LPC17XX is that the former has an internal loop-back from CAN TXD to CAN RXD that acks messages internally, triggering the reception interrupt, the latter don't. Technical support confirmed this difference.
So my actual solution is an external hardware loop-back and a standard transceiver with silent mode capability. My peripheral is always running in normal mode; when I need Listen Only mode I switch the transceiver to silent mode and activate the external loop.
An alternative is to use a transceiver that already implements this loop-back HW internally. Usually it costs more.
Hope this helps.
Regards,
Marco
Hi everyone.
I've been working on both LPC1788 and LPC1754 (with same CAN transceiver) for CAN autbauding feature. I'm encountering your same problems.
My setup is made up of only 2 device, one transmitting (later called Master) and LPCXXXX in listen-only. Same C code (common library). They both behave the same way: in both cases I can see the RS bit set, but not the RBS and I can see the right ID and data stored in the respective registers.
What my code does (or should do) is the following:
- Start device in silent mode and first baudrate;
- Catch any bus errors via IRQ (EI and BEI flags)
- Reinit peripheral with another baudrate if bus errors occur
- Repeat these steps till no error occur
- If IRQ handler receive a correct message, toggle from silent mode to normal mode
Well, this is obtained only if I have a third device already aknowledging the messages sent by the Master device.
Did you obtain any other progress?
Please notice that with the same procedure I can successfully find the baud rate with the LPC11C24 (same configuration, only 2 devices).
Regards and thank,
Marco
Hi Marco
I will continue with your support on case 88348
regards
Vicente Gomez