A20-CAN – new OSHW board designed with KiCAD adds CAN networking to A20-OLinuXino and A20-SOM


Want to sniff your car’s CAN bus or to drive Industrial machines with CAN networking bus?

Allwinner A20 SOCs have CAN but almost no one use it. If I remember correctly it was not even included in the Allwinner documentation just two pins had CAN on their names, so many people doubt if there is or not CAN.

Fortunately some people investigated further and add proper CAN support for A20 Linux, so we decided to make small driver board which to allow A20-OLinuXino and A20-SOM to have CAN. What does this means? Now you can use A20-OLinuXino to talk to other devices with CAN like industrial equipment, automotive CAN bus etc etc.

Current Linux image we have is without CAN support, but we put instructions on our WiKi how to build one with Linux-Sunxi 3.4 Kernel and with Mainline kernel: https://www.olimex.com/wiki/A20-CAN

What you see above on the picture is our first prototype of A20-CAN it works well although we use 5V CAN driver and A20 is 3.3V device. We successfully connected AM3352-SOM-EVB to A20-OLinuXino-LIME with A20-CAN driver and exchanged some messages at the highest speed 1Mbit and it works fine.

All CAD files, Gerbers, BOM are in this Github account: https://github.com/OLIMEX/A20-CAN . The board is done with KiCAD.

The PCBs are now in production and in 2 weeks A20-CAN will be orderable on our web page . While the PCBs are made we will work to add the CAN in our official images, so you do not have to bother with Kernels configurations and re-compiling.

4 Comments (+add yours?)

  1. Kees Zagers
    May 24, 2016 @ 20:38:39

    Nice to have the CAN connection for the A20 products.
    On the schematics I saw that you let the user decide to choose either the available 3.3 Volt PS or an external 5 Volt. This is OK. Probably 3.3 Volt will not be a problem for receiving CAN messages, however for transmitting the quality will be poor, because the dominant CAN Hi level should be 3.5 Volt and with 3.3 Volt PS you will probably only get 3.1 or 3.2 Volt.
    It would have been nice to have an optional DC/DC converter to create the 5 Volt PS and also an optional opto isolation for the CAN Tx and CAN Rx lines. Most of the industrial CAN applications have such isolation for the host systems. Just a suggestion for the future.


  2. Mikeloto
    May 26, 2016 @ 14:45:10

    The CAN-H CAN-L pair it’s 2.5V level, not 3.5, also we prefer the SN65HVD2XX TI series for transceivers because the important thing is the impedance on the bus and the TI transceivers works quite well on that , we created buses with more than 50 elements with the TI transceivers without any issue with the MCP series we have issues with impedance on the bus.

    Anyway nice to see another CANBus device and support out of the AM35xx SoC family. The SocketCAN utils, and implementation on Linux was a great deal of Volkswagen to Linux community…..


  3. Kees Zagers
    May 27, 2016 @ 14:47:07

    Don’t get me wrong: I know that the CAN-H CAN-L are on 2.5V level. This is the idle or recessive level. However if the level becomes dominant, CAN-L is pulled down to 1.5V and CAN-H pulled up to 3.5V. This is the 3.5V I’m talking about.

    BTW I don’t think that NXP 251 or Microchip 2551 have problems with at least 64 elements on a bus.


  4. Gerd
    Jun 01, 2016 @ 07:37:36

    Using a MCP2562 to deal with Vio (2V5-3V3) and Vdd(5V) would be be a better idea than using a MCP2551 with a voltage devider. BTW: The MCP2551 is going to be obsolete (replaced by MCP2561 or MCP2562) and not recommended for new designs …


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: