With this traction in the market, many MCU suppliers have integrated a CAN Controller as an integrated peripheral to address these markets. Although at a high level, CAN might seem similar in function to I2C or SPI, allowing communication Ultrasonic sensor between 2 nodes, CAN’s communication is fundamentally different at the controller level, with the services listed below:
– CAN communication is message based, not address based.
– A CAN node can send or request a message on the bus.
– Complex error handling.
– Up to 5 corrupted bits in a row can be detected with CRC-15 protection.
Being message based versus address based, a node on the CAN bus could own multiple message for transmission; i.e. A Brake module might have a message containing vehicle speed information, a message containing sensor information, such as wheel speed sensors, and a message containing the diagnostics information, the latter having the highest transmit priority. At first look at message priority and message ID decoding in a node, one might think that CAN would create a high load on the CPU, preventing additional more complex functions from being integrated.
– Basic CAN Controller: Very basic filtering implemented in the CAN Controller hardware, with reduced message handling, leading to a high CPU load. In a basic CAN controller, the CPU would receive multiple interrupts from the CAN controller in order to receive, acknowledge, and parse a message, and from the application side, decide whether or not a response should be transmitted based on the ID of the received message. Basic CAN controllers should only be used in low baud rate, and low message count communications, allowing the CPU to handle additional non-communication tasks.
– Full CAN Controller: provides an extensive implementation of message filtering, as well as message parsing in the hardware, thus releasing the CPU from the task of having to respond to every received message.