One of the main problems in synchronous digital system design is synchronization of different clocks in the system. Obviously, this problem is always present in CAN bus related equipment. The problem is more acute in CAN compared to other high speed serial protocols like I2C and SPI. Speed of communication is pre-negotiated but synchronization is provided by the data frame. No separate clock line is provided. We have implemented a CAN transceiver that can automatically detect the speed and synchronization from the data frame. We have approached the problem in two distinct steps. First step is to identify the baud rate. In the following step, which is applied to every frame independently, the sampling time is adjusted with respected to the frame clock. The method also adjusts the sampling rate to reduce the number of samples required to sense the input signal. We also use a novel bit-central-sampling scheme to increase the reliability of data reading.
Keywords
CAN (Controller Area Network), Frame synchronization, I2C (Inter Integrated Circuits), SPI (Serial Peripheral Interface)