Greetings all! I'm also a fairly experienced user of CAN and have been using the MCP2515 CAN controllers (via SPI) for some time now with Arduino. I'm excited that the Teensy 3.1 brings native CAN controller functionality with some serious processing power. I've also used the ChipKit MAX 32 which have two native CAN controllers for development projects. They might be another place to look for some ideas on CAN libraries (included in MPIDE).
I started designing CAN interface boards for my own selfish reasons a couple of years ago. At the time, the smallest "off-the-shelf" solution out there for a CAN interface was Sparkfun's CAN shield. Although it worked well, in my opinion it was just too big and awkward to be used as anything more than something that could sit on the seat next to you for development purposes. I came across Paul's Teensy 2.0 board and fell in love with the native USB connection, extremely small size, and it's ease of use. Finally, something small and elegant I could hide under the dash of my car near the OBDII connector (or anywhere I wanted, frankly). I designed a MCP2515/2551 CAN shield for the Teensy 2.0, adding a voltage regulator as well so the Teensy could be powered up by the car. It's a small board with the exact same footprint as the Teensy - smaller than what I could find in the aftermarket through MikroElectronica or others.
I just got done designing (and in the test phase) of a dual MCP2515 CAN controller daughter board for the Sparkfun Pro Micro that fits in the Pro Micro's footprint. I had to go down to QFN packages to get it all to fit. I abandoned the DB-9 connector on my daughter boards out of frustration that the connector was as big as the micro itself. I know it's the "standard" connector, but it's not very small and elegant.
I think a neat daughter board for the Teensy 3.1 would be one that would provide a transceiver for the native CAN controller, as well as a secondary MCP2515 & transceiver combination to add a 2nd CAN bus. Or, go all out, and simply add another transceiver to the dual 2515 controller board below and have 3 CAN interfaces.
Most cars now have two CAN networks on the OBDII port (high speed for powertrain control, medium speed for body control functions). Being able to tap into both networks, and also being able to serve as a gateway/bridge between two networks running at different speeds is highly useful in the automotive world and would imagine there are more hobbyists like myself interested in this as well. Even neater yet would be a spot on the bottom side of the 3.1 board for a transceiver and 120 ohm termination resistor, similar to the design principle that's currently used for capacitors, crystals, etc.
So, what can you do with a Teensy with a CAN shield? I turned my pedal bicycle into an OBDII compliant CAN device that I could plug an OBDII/Bluetooth adapter into. Using an off-the-shelf Android App called Torque, with custom defined OBDII PIDs, I was able to read gear position, speed, cadence, bike speed, etc. from my bike with the analog and digital pins on the Teensy, and respond to OBDII request messages on CAN from the Bluetooth adapter. All the information could be logged on my smartphone with GPS overlay, and the phone can also be used also to overlay real-time information with video from the bike.
If there's a way I can collaborate in testing the CAN software or partner in the shield architecture or design, please let me know. I've had great success with the Teensy 2.0 products and can't wait for much more horsepower from the 3.1 board.
Here are a couple images of the CAN interface boards I've designed to date (green = Teensy 2.0 w/ 1 controller, purple = Pro Micro shield w/ 2 controllers). My goal in design has been to make them as compact and functional as possible in the smallest amount of real estate.
-Brian

