Controller Area Network
Magistrala CAN () este o magistrală serială utilizată în industria de automobile, cu scopul de a asigura comunicarea între mai multe microcontrolere fără utilizarea unui calculator-gazdă. Dezvoltată inițial de către firma Bosch, în anul 1983, specificația a fost lansată oficial în anul 1986 (CAN 1.2) și standardizată sub denumirea de ISO 11898. Ulterior, mai mulți producători de semiconductoare (Intel, Philips, Infineon, Texas Instruments, Motorola) au implementat periferice pe bază de CAN. În septembrie 1991, Bosch lansează versiunea a 2-a a specificației (CAN 2.0). 

Pe lângă industria de automobile (sisteme de frânare, o gamă largă de senzori, lampi de semnalizare, controlul automat al ușilor) protocolul CAN a început să fie utilizat cu succes și în alte ramuri ale electronicii industriale (echipamente medicale, războaie de țesut).

Principial, diferențele dintre versiunea 1.2 și 2.0 a standardului, constau în domeniul de adresare a nodurilor, care a fost extins în noua versiune. Mai exact, CAN 1.2 definește doar un singur tip de mesaj (mesaj standard) având lungimea câmpul de identificare a nodului (Id) de 11 biți, pe când versiunea CAN 2.0 mai introduce, pe lângă tipul de mesaj definit anterior și un mesaj cu lungimea Id-ul de 29 de biți numit mesaj extins. În continuare, dacă nu se specifică altfel, se va face referire doar la noua versiune.

Arhitectura rețelei CAN 
Specificația de CAN definește mai multe nivele:
 nivelul fizic - descrie modul de transmitere a semnalului pe magistrală (reprezentare unui bit, nivele de transmisie a semnalelor, aspecte legate de mediul de transmisie)
 nivelul transfer - descrie tipurile de mesaje trimise/recepționate de un nod de la nivelul sau superior (obiect); tot în grija acestui nivel țin și aspectele legate de durata unui bit, sincronizare, formatul mesajelor, tehnici de arbitrare, confirmare, detecție de erori precum și mecanisme de restrângere a perturbațiilor  
 nivelul obiect - se ocupă cu aspecte ce țin de filtrarea și manipularea mesajelor
 nivelul aplicație

Tipurile de cadre 

Transferul de mesaje se manifestă și totodată este controlat prin patru tipuri diferite de cadre:
 Cadrul de date () - transportă date de la transmițător la receptor
 Cadru de solicitare ()- cadru de solicitare a unui cadru de date (având aceeași valoare a câmpului Id)
 Cadrul de eroare () - transmis de fiecare nod la detecția unei erori pe magistrală
 Cadru de supraîncărcare () - solicită un timp suplimentar între cadrul (de cerere sau de date) anterior și cel următor

Cadrul de date 
Cadrul de date este compus din șapte câmpuri:
 Startul cadrului ()
 Câmpul de arbitrare ()
 Câmpul de control ()
 Câmpul de date ()
 Câmpul CRC
 Câmpul de confirmare (ACK)
 Sfârșitul cadrului ()

Începutul cadrului
Acesta marchează începutul unui cadru de date sau de cerere de date și va  consta într-un singur bit "dominant" (de nivel 0 logic). Pentru a începe o transmisie, un nod trebuie să verifice dacă magistrala este în starea inactiv () iar celelalte noduri vor folosi oportunitatea de a se sincroniza (hard synchronization) pe frontul crescător al bitului de start.

Câmpul de arbitrare
În cazul cadrului standard este compus din câmpul de Identificare a nodului de 11 biți, Id  și din bitul de RTR ().

Câmpul de control
Câmpul de control este format din sase biți dintre care primii doi biți sunt rezervați (r0 și r1) iar restul de 4 biți formează Codul de Lungime a Datelor ().

Câmpul de CRC
Câmpul de CRC este format din două părți:
 Secventa de CRC - câmp de 15 biți ce reprezintă restul împărțirii șirului de biți format din câmpurile SOF, arbitrare, control și date la polinomul-generator CRC: X^15 (+) X^14 (+) X^10 (+) X^8 (+) X^7 (+) X^4 (+) X^3 (+) 1  (cod BCH) 
 Delimitatorul de CRC - format dintr-un singur bit "recesiv"

Câmpul de Confirmare (ACK)
Câmpul de confirmare (ACK) are lungimea de 2 biți și constă în slotul de ACK () și delimitatorul de ACK () de valoare "recesiv" (bit 1). 
În schimb, în ceea ce privește valoarea bitului de ACK Slot, transmițătorul va scrie o valoare "recesivă"; dacă mesajul a fost recepționat corect de către o stație, atunci receptorul va suprascrie acest bit cu o valoare "dominantă", informând astfel transmițătorul ca cel puțin un nod a recepționat corect mesajul transmis pe magistrală.

Sfârșitul cadrului
Sfârșitul cadrului (EOF) este compus din șapte biți recesivi și este specific cadrelor de Date și de Cerere de date.

Vezi și  
Interfața serială SPI

Interfață (software)
 Transmitere de date
Magistrala CAN ( ) este o magistrală serială utilizată în industria de automobile , cu scopul de a asigura comunicarea între mai multe microcontrolere fără utilizarea unui calculator-gazdă . Dezvoltată inițial de către firma Bosch , în anul specificația a fost lansată oficial în anul(CAN2 ) și standardizată sub denumirea de ISO Ulterior , mai mulți producători de semiconductoare ( Intel , Philips , Infineon , Texas Instruments , Motorola ) au implementat periferice pe bază de CAN . În septembrie Bosch lansează versiunea aa a specificației ( CAN0 ) . Pe lângă industria de automobile ( sisteme de frânare , o gamă largă de senzori , lampi de semnalizare , controlul automat al ușilor ) protocolul CAN a început să fie utilizat cu succes și în alte ramuri ale electronicii industriale ( echipamente medicale , războaie de țesut ) . Principial , diferențele dintre versiunea2 și0 a standardului , constau în domeniul de adresare a nodurilor , care a fost extins în noua versiune . Mai exact , CAN2 definește doar un singur tip de mesaj ( mesaj standard ) având lungimea câmpul de identificare a nodului ( Id ) debiți , pe când versiunea CAN0 mai introduce , pe lângă tipul de mesaj definit anterior și un mesaj cu lungimea Id - ul dede biți numit mesaj extins . În continuare , dacă nu se specifică altfel , se va face referire doar la noua versiune . Arhitectura rețelei CAN Specificația de CAN definește mai multe nivele : nivelul fizic - descrie modul de transmitere a semnalului pe magistrală ( reprezentare unui bit , nivele de transmisie a semnalelor , aspecte legate de mediul de transmisie ) nivelul transfer - descrie tipurile de mesaje trimise/recepționate de un nod de la nivelul sau superior ( obiect ) ; tot în grija acestui nivel țin și aspectele legate de durata unui bit , sincronizare , formatul mesajelor , tehnici de arbitrare , confirmare , detecție de erori precum și mecanisme de restrângere a perturbațiilor nivelul obiect - se ocupă cu aspecte ce țin de filtrarea și manipularea mesajelor nivelul aplicație Tipurile de cadre Transferul de mesaje se manifestă și totodată este controlat prin patru tipuri diferite de cadre : Cadrul de date ( ) - transportă date de la transmițător la receptor Cadru de solicitare ( ) - cadru de solicitare a unui cadru de date ( având aceeași valoare a câmpului Id ) Cadrul de eroare ( ) - transmis de fiecare nod la detecția unei erori pe magistrală Cadru de supraîncărcare ( ) - solicită un timp suplimentar între cadrul ( de cerere sau de date ) anterior și cel următor Cadrul de date Cadrul de date este compus din șapte câmpuri : Startul cadrului ( ) Câmpul de arbitrare ( ) Câmpul de control ( ) Câmpul de date ( ) Câmpul CRC Câmpul de confirmare ( ACK ) Sfârșitul cadrului ( ) Începutul cadrului Acesta marchează începutul unui cadru de date sau de cerere de date și va consta într- un singur bit " dominant " ( de nivellogic ) . Pentru a începe o transmisie , un nod trebuie să verifice dacă magistrala este în starea inactiv ( ) iar celelalte noduri vor folosi oportunitatea de a se sincroniza ( hard synchronization ) pe frontul crescător al bitului de start . Câmpul de arbitrare În cazul cadrului standard este compus din câmpul de Identificare a nodului debiți , Id și din bitul de RTR ( ) . Câmpul de control Câmpul de control este format din sase biți dintre care primii doi biți sunt rezervați ( r0 și r1 ) iar restul debiți formează Codul de Lungime a Datelor ( ) . Câmpul de CRC Câmpul de CRC este format din două părți : Secventa de CRC - câmp debiți ce reprezintă restul împărțirii șirului de biți format din câmpurile SOF , arbitrare , control și date la polinomul-generator CRC : X^15 ( + ) X^14 ( + ) X^10 ( + ) X^8 ( + ) X^7 ( + ) X^4 ( + ) X^3 ( + ) ( cod BCH ) Delimitatorul de CRC - format dintr- un singur bit " recesiv " Câmpul de Confirmare ( ACK ) Câmpul de confirmare ( ACK ) are lungimea debiți și constă în slotul de ACK ( ) și delimitatorul de ACK ( ) de valoare " recesiv " ( bit În schimb , în ceea ce privește valoarea bitului de ACK Slot , transmițătorul va scrie o valoare " recesivă " ; dacă mesajul a fost recepționat corect de către o stație , atunci receptorul va suprascrie acest bit cu o valoare " dominantă " , informând astfel transmițătorul ca cel puțin un nod a recepționat corect mesajul transmis pe magistrală . Sfârșitul cadrului Sfârșitul cadrului ( EOF ) este compus din șapte biți recesivi și este specific cadrelor de Date și de Cerere de date . Vezi și Interfața serială SPI Interfață ( software ) Transmitere de date