Kapitola 4
Stručný popis sběrnice CAN

Sběrnice CAN je dvouvodičová sériová sběrnice na fyzické vrstvě podobná s dobře známou RS-485. Budiče jsou s tzv. otevřeným kolektorem, takže logická 0 „přetlačí“ logickou 1. Dále platí pravidlo, že stanice, která zjistí, že vysílá logickou 1 a na sběrnici je logická 0 musí okamžitě přestat vysílat a celou zprávu se pokusí vyslat znova po ukončení vysílání aktuální zprávy.

Vzhledem ke konečné rychlosti světla (šíření signálu v kabelu) a k požadavku kontroly kolize na každém bitu dostáváme omezení na celkovou délku kabelu. Pro zamezení odrazu signálu na konci vedení musí být kabel na obou koncích zakončen odporem rovnajícím se impedanci vedení (obvykle kolem 120ohm ). Vzhledem k maximálnímu proudu budičů je omezen počet zařízení na jednom kabelu na 32. Detailní informace o kabelech a konektorech jsou uvedeny ve specifikaci CAN (soubor 303_1v01070001.pdf).

Celá zpráva/packet posílaný po sběrnici CAN obsahuje číslo zprávy (tzv. Message ID někdy též označované COB-ID) a vlastní data, kterých může být 0 až 8 byte. Zpráva obsahuje ještě několik dalších bitů, které nejsou pro další výklad podstatné. Z výše uvedeného vyplývá, že zprávy s nižším Message ID mají vyšší prioritu. Pokud dále zajistíme, že každé Message ID vysílá nejvýše jedna stanice, nemůže dojít ke ztrátě dat z důvodu kolize na sběrnici.

Stanice dále může vyslat paket žádající o vyslání určité Message ID (to se ovšem v CanDrv nevyužívá).

Původní standard CAN1.0 zavádí 11-bitové Message ID, pozdější revize CAN2.0 dovoluje 11 i 29-bitové Message ID. 29-bitové Message ID lze použít jen pokud jej podporují všechny zařízení na sběrnici/kabelu.

Sběrnice CAN má architekturu producent-konzument, tj, každý packet/zprávu přijímají všechny stanice. Stanice však může mít zapnutý filtr (ovladač CanDrv to nevyužívá) a některé zprávy pak nepřijímá (resp. nepředává nadřízeným vrstvám). Na sběrnici existuje mechanismus potvrzování, takže vysílající stanice pozná, že zprávu nikdo nepřijal.