# Session 3 2024-03

bus can -> bus syst. série
réduire nb cables 

# BUS CAN
conçu par BOSCH, fin des années 80
- temps maximal normalisé
- syst. d'erreur simple et efficace

-> contrôleurs CAN petits, peu couteux, entièrement intégrés, utilisable à débit important en tps réel et env difficile avec haut niveau de fiabilité
-> origine automobile, étandu à tous les domaines

syst critique (High speed) ou low speed
CAN -> prot. réseau intégré dans la norme ISO/OSI

## Protocole CAN
(rappel : arbitrage non destructif, si collision réémission de la deuxième trame plus tard)
=> catégorie des réseaux de terrain

-> hiérarchie des msg, garantie du temps de latence, souplesse de config
->reception de multiples sources avec synchro temporelle
-> fonctionnement multimaitre, detect° d'erreurs
->retransm. automatique des msg altérés
-> distinction d'err. : d'ordre temporaire ou de non fonctionnalité permanent au niveau d'un noeud
-> déconnexion des noeuds défectueux

### Caractéristiques
bus série = paire différentielle avec CAN_H(igh) et CAN_L(ow), connecté sur des résist. 120ohms ou capa 30pF résistant aux perturbat°
-> attention Can_H(igh) !=  can high speed
résist. 120 ohm au bout pour éviter que le message reparte dans le can après avoir circulé
si EMI (interference electromagn.)=> modif des msg dans H et L, calcul de la diff. de différentiel, et les deux seront modifiés de la même manière
ex
| CAN-H|5|3  |3|*4.5*|3|
|------|-| - |-| ----|-|
| CAN-L|1|1.5|2|*2.5*|1|
| UDiff|4|1.5|1|*2*  |2|
-> la différence reste constante contrairement à tension mesurée dans le fil

ex : bit = 0 si Udiff < 3, 1 sinon

low-speed = vit de propag sur le bus = 125Kbits (permet cable plus long)
high-speed = 1 Mbits

### Principe de fctment
-> type wired-and : un bit dominant (0)(CANH > CANL) écrase un bit récessif (1)(CANH <= CANL)
+> les identif. des noeuds avec la valeur la plus faible sont prioritaires

synchro d'horloge : bourrage de bit inversé (bit stuffing)
le débit réel des infos ne tient pas compte de ces bits stuffing

si ajouter un bit de stuffing fait passer la séq. d'après à 5 bits conséc. => on ajoute encore un nouveau bit de stuffing => possibilité de propagation

types de trames :
- de données
- de requête (remote frame)
- de gestion d'erreur
- de surcharge (ex si un calc n'arrive pas à lire assez vite)
- espace entre frames

trame, fin = 7 bits à 1 + séparateur trames = 3 bits à 1
CAN sur les couches appli (prot spécifié par l'utilisateur) liaison et physique (prot CAN pour les deux couches)

#### Couche physique 
couche MAC entre données et couche physique, elle donne la priorité et définit l'arbitrage
fournit les moyens matériels nécéssaires à l'activation, maintien, désactvation des connex physiques
-> gère repr. des bits  et définit les niveaux electriques optiques etc des signaux
le type de transceiver définit le type de transmission (low speed ou high speed)

transceiver transforme trame en voltage pour can high ou low (et receptionne avec processus inverse)

2 couches basses, 3 parties : Implémentation, Standards et CAN (iso pas à connaitre)
can controller complète le msg (ajout identifiant, concat dataframe, etc)

µcontrolleur => crée msg

résist. de terminaisons évitent les répétitions en bout de ligne (rebond du signal)

##### Topologie du réseau
réseau sous forme de bus => tt est connecté
réseau avec passerelle -> un can fait office de pont entre deux réseaux

CAN low speed -> can fault tolerance : accepte des erreurs sur le réseau, et de les résoudre ou déconnecter les noeuds

faisceau de bits codé en NRZ
Bit stuffing sur remote frame et dataframe, s'applique jusqu'au CRC
synchro de 2 façon :
hard : sur le bit de start
Re-synchro sur chaque front récessif et dominant