diff --git a/bus/03_can.md b/bus/03_can.md new file mode 100644 index 0000000..240fb2d --- /dev/null +++ b/bus/03_can.md @@ -0,0 +1,89 @@ +# 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 \ No newline at end of file