
CAN (controlled area network) bus is communication protocol bus standard widely used in Automotive industry. It uses only two wires for communication and is very robust and noise immune. This is why it also is used in industrial robotics and other areas where reliable communication for small amounts of data is needed.
A10 and A20 SoCs are known to have CAN bus controller inside but few years ago when we started the A10/A20 OLinuXino design nobody knew what is this CAN driver neither how to use it.
This is why when I read message on Twitter –

I reply: “indeed, but on purpose, as no one has used this CAN or know how to use it, this would be just waste of components ”
Obviously things changed for the last couple of years as we have been feed with info about A20 CAN driver!
There is mainline CAN driver for A10/A20:Â https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/net/can/sun4i_can.c?id=refs/tags/v4.4-rc8
CAN is documented http://linux-sunxi.org/images/f/f5/Sun7i-CANbus.pdf in fact it’s same as NXP SJA1000.
Sunxi-Can-Driver is on Github:Â https://github.com/btolfa/sunxi-can-driver
Linux-Sunxi mainlining efforts:Â http://linux-sunxi.org/Linux_mainlining_effort#Merged_into_4.4
Can4Linux is available also.
We quickly setup test with CAN transciever from AM3352-SOM-EVB and A20-OLinuXino-MICRO and build kernel with CAN support. Everything works!
Now we work on small board with CAN transciever on it which will enable CAN to be used on A20-OLinuXino-MICRO, A20-SOM-EVB, A10/20-OLinuXino-LIME and A20-OLinuXino-LIME2.
Fortunately when we made the board we kept same GPIO pin numbering on all boards so the CAN signals are on same places on all these boards and this makes the extension CAN board easy to route.
This will allow all our A10/A20 OLinuXinos to be used in CAN applications.
Recent Comments