|
This is a brief introduction to the CAN protocol. We do not claim completeness;
if you want to know everything you should
obtain
the Bosch specification from our Download Area.
A note about the specifications: the spec that Bosch wrote is very clear and readable, but it's not
the ISO11898 spec. That spec isn't available on the net; instead you have
to buy it from ISO.
Overview of the CAN Protocol Tour
The CAN bus
The CAN bus is a broadcast type of bus. This means that all nodes can
"hear" all transmissions. There is no way to send a message
to just a specific node; all nodes will invariably pick up all traffic.
The CAN hardware, however, provides local filtering so that each node
may react only on the interesting messages.
The bus uses Non-Return To Zero (NRZ) with bit-stuffing. The modules
are connected to the bus in a wired-and fashion: if just one
node is driving the bus to a logical 0, then the whole bus is in that
state regardless of the number of nodes transmitting a logical 1.
The CAN standard defines four different message
types. The messages uses a clever scheme of bit-wise
arbitration to control access to the bus, and each message is tagged
with a priority.
The CAN standard also defines an elaborate scheme for error handling
and confinement which is described in more detail here.
Bit timing and clock synchronization is discussed here.
Here's a bit timing calculator you can use
to calculate the CAN bus parameters and register settings.
CAN may implemented using different physical
layers, some of which are described here, and there are also a fair
number of connector types in use. Here's a
number of oscilloscope pictures for those interested in the details of
a message.
|