# 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