Bus Driver

I use dominant – recessive strategy for physical layer so that I can utilize CAN transceivers in market.


The first version of bus driver was for proof of concept, so it was built as simple as possible by using Arduino units as follows.  One Arduino unit acts as a communication node.


Each unit connects to the data bus at digital pins 7 and 8.  Pin 7 is used for listener (input) and pint 8 is used for driver (output).  All OSI layers above physical is implemented by software.  The maximum achieved bit rate with this version was 10kbps.


The second version of bus driver is for accelerating the bit rate.  CAN transceiver is used for the physical layer.  Data link and transport layers are still implemented by software but a dedicated processor is assigned for the task.


The driver exchanges data with the master module (is Arduino in this case) via SPI/USI.