Building a CAN API for Arduino DUE

Dear Palliser,

I am extremely, extremely enthusiastic about your building a CAN-bus interface. I do have two suggestions that you might want to keep in mind while you are doing this:

(1) The most common use of CAN by Arduino-community members has been for reading on-board automotive systems, so the header files for libraries I've seen define those messages. OBDC is only one use for CAN, and to my mind the least interesting use for those who want to do something new. I think that it would be very useful for many, and certainly for me, if your interface provided a "friendly" implementation of CANopen. (My particular interest in this is that recent Roboteq motor controllers are CAN capable and aside from raw CAN and a mini CAN subset, they implement CANopen (though only with 11 bit ids).

(2) The Due has two CAN controllers in its processor, but it still needs external transceivers. The ATmega Arduinos need both external controllers and transceivers, but aside from the need to use SPI the CAN protocol is the same. Perhaps your interface could be written so that it would work for both. For example, I've just started working on a simple Arduino NANO CAN shield that mounts only a MCP 2515 and 2551 to use in several embedded CAN nodes. Your interface will surely be much, much better than anything I will come up by hardcoding the frames I need into a modified version of an existing library.

Grazie,
Lenni