Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.
CAN and I2C are 2 completely different buses used for similar purpose. I2C is a lot simpler and is mostly used in chip to chip data transfer mostly on a board level (not always) where 1 device is generally a microcontroller and the other(s) is a peripheral (again not always). CAN is mostly used to transfer data between 2 or more controllers on different boards within an enclosure like an automobile.
CAN was developed by Bosch for noisy automotive environment.
CAN uses differential signal (CAN H, CAN L) so it can combats common noise to both lines.
Due to its robustness, CAN is also used in industrial application. For e.g. https://www.can-cia.org/
On top of the other mentioned differences:
CAN uses predefined baudrates, max 1 Mbit, 500k, 250k, 125k, and all nodes have to use this speed. I2C transmits a clock and can transmit at different speeds. Commonly fast I2C is 400 kbit/s. There is a newer spec for 3.4 Mbit/s but hardly anything available for it. I2C has its roots in the consumer industry, CAN as mentioned in automotive.
With I2C, you usually address one node, with CAN you broadcast and which ever node is interested in your information will recieve it.
There are a lot more differences, you might want to check the website of ESA for a nice CAN tutorial www.esacademy.com
You can get a can tranceiver from microchip, and also a lot of pic's support can. It's a two wire, half duplex, differential signal, normally down a twisted pair. It is a protocol that is built on layers, like tcp/ip. At the transport level, it sends packets of data of up to 8 bytes, with an identifier, packet length, and data. These are broadcast, all nodes receive them. The nodes use the identifier to decide what to do with the message. The identifier is like the address. It also has sophisticated error detection, correction and collision avoidance. This is all done in hardware. (Thank f--k)! The protocols that are built on this can get very complex. Such as reprogramming and updating software in situe, troubleshooting and tweeking engine maagement, heads up displays, you name it! It is used extensively in the motor industry. All cars talk can!