The Controller Area Network is an automotive communication protocol standardized by ISO which specifies the lower layers of the OSI model. My task was to design a CAN controller which not only can communicate on the bus, but also delivers solutions to assist the debugging process when developing a new CAN-enabled device. There are two major features which can be very useful: Monitoring and Fault injection. Monitoring all traffic on the bus provides the user with valuable additional information about what’s happening during a message transfer, and thus letting the user verify the correct operation of the unit; and increasing the chance of finding the cause of a faulty behavior.
Due to safety requirements, the standard specifies several different error detecting mechanisms, which every node must implement. Therefore one must verify that the device complies with these regulations, and performs the error signaling process; or if the error persists, detaches itself from the bus. During the verification process it is necessary to be able to create situations which the device under test must recognize as an error condition. I had to design ways for the controller to artificially generate such conditions.
Together with an application level debugging tool and an oscilloscope, my work could be proved to be a useful aid for the developers.