Vous êtes sur la page 1sur 33

COURS LES SYSTEMES EMBARQUES CHAPITRE 2

A. Le Bus I2C :

1. Historique

Le bus I2C ( Inter Integrated Circuit Bus ) est développé par Philips pour les
applications de domotique et d'électronique domestique au début des années 80,
notamment pour permettre de relier facilement à un microprocesseur les différents
circuits d'un téléviseur moderne. Il existe d'innombrables périphériques exploitant ce
bus, il est même implantable par logiciel dans n'importe lequel des microcontrôleurs.

2. Caractéristiques

Le bus I2C permet de faire communiquer entre eux des composants


électroniques grâce à seulement trois fils :

 un signal de donnée ( SDA ),


 un signal d'horloge ( SCL ),
 un signal de référence électrique ( Masse ).

Ceci permet de réaliser des équipements ayants des fonctionnalités très


puissantes et conservant un circuit imprimé très simple, par rapport un schéma
classique ( 8bits de données, 16 bits d'adresse + les bits de contrôle ).

Les données sont transmises en série à 100Kbits/s en mode standard et jusqu'à


400Kbits/s en mode rapide. Ce qui ouvre la porte de cette technologie à toutes les
applications où la vitesse n'est pas primordiale.

De nombreux fabricants ayant adopté le système, la variété des circuits


disponibles disposant d'un port I2C est énorme : Ports d'E/S bidirectionnels,
Convertisseurs A/N et N/A, mémoires ( RAM, EPREM, EEPROM, etc... ), Circuits
Audio ( Egaliseur, Contrôle de volume, ... )

Le nombre de composants qu'il est ainsi possible de relier est essentiellement


limité par la charge capacitive des lignes SDA et SCL : 400 pF .

3. Principe

Afin de d'éviter les conflits électriques les Entrées/Sorties SDA et SCL sont de
type "Collecteur Ouvert". Cela permet ainsi la présence de plusieurs maîtres sur le
bus.

Structure d'E/S d'un module I2C :

page 8
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

4) protocole I2C

Le protocole I2C définit la succession des états logiques possibles sur SDA et
SCL, et la façon dont doivent réagir les circuits en cas de conflits.

4.1 La prise de contrôle du bus

Pour prendre le contrôle du bus, il faut que celui-ci soit au repos ( SDA et SCL à
'1' ). Pour transmettre des données sur le bus, il faut donc surveiller deux conditions
particulières :

 La condition de départ. ( SDA passe à '0' alors que SCL reste à '1' )
 La condition d'arrêt. ( SDA passe à '1' alors que SCL reste à '1' )

Lorsqu'un circuit, après avoir vérifié que le bus est libre, prend le contrôle de celui-ci,
il en devient le maître. C'est lui qui génère le signal d'horloge.

4.2 La transmission d’un octet

 Après avoir imposé la condition de départ, le maître applique sur SDA le bit de
poids fort D7.
 Il valide ensuite la donnée en appliquant pendant un instant un niveau '1' sur
la ligne SCL.
 Lorsque SCL revient à '0', il recommence l'opération jusqu'à ce que l'octet
complet soit transmis.
 Il envoie alors un bit ACK à '1' tout en scrutant l'état réel de SDA.

page 9
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

 L'esclave doit alors imposer un niveau '0' pour signaler au maître que la
transmission s'est effectuée correctement.
 Les sorties de chacun étant à collecteurs ouverts, le maître voie le '0' et peut
alors passer à la suite.

Dans cet exemple :

 SCL : Horloge imposée par le maître.


 SDAM : Niveaux de SDA imposés par le maître.
 SDAE : Niveaux de SDA imposés par l'esclave.
 SDAR : Niveaux de SDA réels résultants.

4.3 La transmission d’une adresse

Le nombre de composants qu'il est possible de connecter sur un bus I2C étant
largement supérieur à deux, il est nécessaire de définir pour chacun une adresse
unique.

L'adresse d'un circuit, codée sur sept bits, est définie d'une part par son type
et d'autre part par l'état appliqué à un certain nombre de ces broches. Cette adresse
est transmise sous la forme d'un octet au format particulier.

On remarque ici que les bits D7 à D1 représentent les adresse A6 à A0, et


que le bit D0 et remplacé par le bit de R/W qui permet au maître de signaler s'il veut
lire ou écrire une donnée.

Le bit d'acquittement ACK fonctionne comme pour une donnée, ceci permet
au maître de vérifier si l'esclave est disponible.

Note 1: Cas particulier des mémoires :

L'espace adressable d'un circuit de mémoire étant sensiblement plus grand que
la plupart des autres types de circuits, l'adresse d'une information y est codée sur
deux octets ou plus. Le premier représente toujours l'adresse du circuit, et les
suivants l'adresse interne de la mémoire.

page 10
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Note 2: Les adresses réservées.

Les adresses 00000XXX et 111111XX sont réservés à des modes de


fonctionnement particuliers.

4.4 Ecriture d’une donnée

L'écriture d'une donnée par le maître ne pose pas de problème particulier :

Note : Cas particulier d'utilisation d'ACK :

L'écriture d'un octet dans certains composants (Mémoires, microcontrôleur, ...) peut
prendre un certain temps. Il est donc possible que le maître soit obligé d'attendre
l'acquittement ACK avant de passer à la suite.

4.5. Lecture d’une donnée

La lecture d'une donnée par le maître se caractérise par l'utilisation spéciale qui
faite du bit ACK. Après la lecture d'un octet, le maître positionne ACK à '0' s'il veut
lire la donnée suivante (cas d'une mémoire par exemple) ou à '1' le cas échéant. Il
envoie alors la condition d'arrêt.

5. La gestion des conflits


5.1. Mise en situation

La structure même du bus I2C a été conçue pour pouvoir y accueillir plusieurs
maîtres. Se pose alors le problème commun à tous les réseaux utilisant un canal de
communication unique : la prise de parole.

page 11
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

En effet, chaque maître pouvant prendre possession du bus dès que celui-ci est
libre, il existe la possibilité de que deux maîtres prennent la parole en même temps.
Si cela ne pose pas de problème sur le plan électrique grâce à l'utilisation de
collecteurs ouverts, il faut pouvoir détecter cet état de fait pour éviter la corruption
des données transmises. Comme nous l'avons vu précédemment, pour prendre le
contrôle du bus, un maître potentiel doit d'abord vérifier que celui-ci soit libre, et
qu'une condition d'arrêt ait bien été envoyée depuis au moins 4,7µs. Mais il reste la
possibilité que plusieurs maîtres prennent le contrôle du bus simultanément.

Chaque circuit vérifie en permanence l'état des lignes SDA et SCL, y compris
lorsqu'ils sont eux même en train d'envoyer des données. On distingue alors
plusieurs cas :

- Les différents maîtres envoient les mêmes données au même moment :

Les données ne sont pas corrompues, la transmission s'effectue


normalement, comme si un seul maître avait parlé. Ce cas est rare.

- Un maître impose un '0' sur le bus :

Il relira forcément '0' et continuera à transmettre. Il ne peut pas alors détecter un


éventuel conflit.

- Un maître cherche à appliquer un '1' sur le bus :

Si il ne relit pas un niveau '1', c'est qu'un autre maître a pris la parole en même
temps. Le premier perd alors immédiatement le contrôle du bus, pour ne pas
perturber la transmission du second. Il continue néanmoins à lire les données au cas
celles-ci lui auraient été destinées.

5.3. Exemple

Soit le chronogramme suivant :

Dans cet exemple :

 SCLR : Horloge résultante.


 SDA1 : Niveaux de SDA imposés par le maître n°1.
 SDA2 : Niveaux de SDA imposés par le maître n°2.
 SDAR : Niveaux de SDA réels résultants lus par les deux maîtres.

page 12
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Analyse :

Le premier octet est transmis normalement car les deux maîtres imposent les
mêmes données. (Cas n°1). Le bit ACK est mis à '0' par l'esclave.

Lors du deuxième octet, le maître n°2 cherche à imposer un '1' (SDA2) , mais
relit un '0' (SDAR), il perd alors le contrôle du bus et devient esclave (Cas n°3) . Il
reprendra le contrôle du bus, lorsque celui-ci sera de nouveau libre.

Le maître n°1 ne voit pas le conflit et continue à transmettre normalement. (Cas n°2)

Au total, l'esclave à reçu les données du maître n°1 sans erreurs et le conflit
est passé inaperçu.

Les nouvelles caractéristiques

Afin de compenser quelques lacunes des premières spécifications du bus I2C


(qui datent de 1982), quelques nouvelles améliorations ont été apportées à partir de
1993:

Le mode rapide : Le bus à désormais la capacité de transmettre des données


jusqu'à une vitesse de 400 Kbit/s.

Des entrées à triggers de Schmitt : Afin de limiter la sensibilité au bruit.

La mise en haute impédance d'un circuit non alimenté : Ceci évite de bloquer le
bus si un périphérique n'est pas alimenté.

Extension à 10 bits de l'adressage des circuits répartis sur 2 octets de la manière


suivante :

Remarque :

En 1998, le mode haut débit porte la vitesse maximum du bus I2C à 3.4 Mb/s.
Les marges de bruit ont aussi été modifiées pour permettre de relier des circuits
faible consommation (alimentation 2V )

6. Les adresses réservées

Les adresses 0000 0xxx ne sont pas utilisées pour l'adressage de composants. Elles
ont été réservées par Philips pour effectuer certaines fonctions spéciales.

6.1. Adresses d’appel général

Adresse : 0000 1000 .

page 13
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Après l'émission d'un appel général, les circuits ayant la capacité de traiter ce genre
d'appel émettent un acquittement.

Le deuxième octet permet de définir le contenu de l'appel :

0000 0110 : RESET. Remet tout les registres de circuits connectés dans leur état
initial (Mise sous tension). Les circuits qui le permettent rechargent leur adresse
d'esclave.

0000 0010 : Les circuits qui le permettent rechargent leur adresse d'esclave.

0000 0100 : Les circuits définissant leur adresse de façon matérielle réinitialisent leur
adresse d'esclave.

0000 0000 : Interdit

xxxx xxx1 : Cette commande joue le rôle d'interruption. xxxx xxx peut être l'adresse
du circuit qui a généré l'interruption.

6.2. Octet de START

Adresse : 0000 0001 .

Cet octet est utilisé pour synchroniser les périphériques lents avec les
périphériques rapides.

6.3. Début d’adresse CBUS


Adresse : 0000 001x .

L'émission de cet octet permet de rendre sourd tout les circuits I2C présents
sur le bus. A partir de ce moment, on peut transmettre ce que l'on désire sur le bus,
en utilisant par exemple un autre protocole. Le bus repasse en mode normal lors de
la réception d'une condition d'arrêt.

6.4. Autres

Adresses : 0000 0110 à 0000 1111 .

Ces octets ne sont pas définit et sont ignoré par les circuits I2C. Ils peuvent
être utilisés pour débugger un réseau multi master.

page 14
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

7 exemple :

program Eeprom_Test;
var EE_adr, EE_data, k : byte;
jj : word;
begin
I2C_Init(100000); // Initialize full master mode
TRISD := 0; // PORTD is output
PORTD := $FF; // Initialize PORTD
I2C_Start; // Issue I2C start signal
I2C_Wr($A2); // Send byte via I2C(command to 24cO2)
EE_adr := 2;
I2C_Wr(EE_adr); // Send byte(address for EEPROM)
EE_data := $AA;
I2C_Wr(EE_data); // Send data(data that will be written)
I2C_Stop; // Issue I2C stop signal
for jj := 0 to 65500 do nop; // Pause while EEPROM writes data
I2C_Start; // Issue I2C start signal
I2C_Wr($A2); // Send byte via I2C
EE_adr := 2;
I2C_Wr(EE_adr); // Send byte(address for EEPROM)
I2C_Repeated_Start; // Issue I2C signal repeated start
I2C_Wr($A3); // Send byte (request data from EEPROM)
k := I2C_Rd(1); // Read the data
I2C_Stop; // Issue I2C stop signal
PORTD := k; // Show data on PORTD

while true do nop; // Endless loop

end.

page 15
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

B. Le Bus CAN :

1) Introduction :
Depuis les années 1960 la longueur de câble utilisée dans l’automobile ne
cesse de croître pour dépasser 2000 m en 1995. Le nombre des connexions atteint
1800 à cette même date. La fiabilité et la sécurité sont menacées.
Les normes en matière de pollution et de consommation d’énergie obligent
les constructeurs à multiplier les capteurs et actionneurs intelligents dans leurs
véhicules accélérant ce processus de multiplication des câbles et connexion depuis
une vingtaine d’années.
Le besoin de sécurité accrue (ABS, ESP, AIR-BAG…) et la demande de
confort (mémorisation des réglages de conduite, climatisation régulée par passager,
système de navigation…) ne font que renforcer cette tendance.
La société BOSCH développe dès le début des années 1980 une solution
de multiplexage des informations circulant à bord de la voiture. Le bus CAN
apparaîtra et sera normalisé dans les années qui suivent (dès 1983).
Les composants CAN se démocratisent et investissent d’autres secteurs de
l’électronique embarqué (médical, produits numériques, systèmes
électrotechnique…).

2) Le bus CAN
Le bus CAN (Control Area Network) est un moyen de communication série qui
supporte des systèmes embarqués temps réel avec un haut niveau de fiabilité. Ses
domaines d’application s’étendent des réseaux moyens débits aux réseaux de
multiplexages faibles coûts. Il est avant tout à classer dans la catégorie des réseaux
de terrain utilisé dans l'industrie.
La structure du protocole du bus CAN possède implicitement les principales
propriétés suivantes :
 hiérarchisation des messages.

page 16
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

 garantie des temps de latence.


 souplesse de configuration.
 réception de multiples sources avec synchronisation temporelle.
 fonctionnement multimaître.
 détections et signalisations d’erreurs.
 retransmission automatique des messages altérés dès que le bus est de
nouveau au repos.
 distinction d’erreurs : d’ordre temporaire ou de non-fonctionnalité
permanente au niveau d’un nœud, déconnexion automatique des noeuds
défectueux.

3) caracteristiques physiques du bus CAN


3.1) Support de transmission
La transmission des données est effectuée sur une paire filaire différentielle. La ligne
est donc constituée de deux fils :
- CAN L (CAN LOW),
- CAN H (CAN HIGH).

Le CAN est un bus de terrain, soumis à des parasites importants. La transmission en


paire différentielle permet de s'affranchir de ces problèmes. Les montages
différentiels ont en plus un fort taux de réjection en mode commun CMRR.

De part la nature différentielle de la transmission du signal sur le bus CAN, l’immunité


électromagnétique est assurée car les deux lignes du bus sont toutes les deux
affectées de la même manière par un signal perturbateur.

Pour les niveaux physiques sur le bus, il est important de distinguer les deux types
de transmission possibles :
- transmission en bus CAN low speed,
- transmission en bus CAN high speed.

page 17
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

ISO11519-2 ISO11898
Low Speed CAN < 125Kbps High Speed CAN 125Kbps - 1Mbps

Le tableau ci-dessous résume les principales différences entre les deux types de bus
notamment sur les débits supportés.

Exemple de circuits CAN relié au bus

page 18
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

4) Protocole CAN
Le concept de communication du bus CAN est celui de la diffusion
d’information (broadcast) : chaque station connectée au réseau écoute les trames
transmises par les stations émettrices. Ensuite chaque nœud décide quoi faire du
message, s’il doit y répondre ou non, s’il doit agir ou non, etc…
Le protocole CAN autorise différents stations à accéder simultanément au
bus. C’est un procédé rapide et fiable d’arbitrage qui détermine la station qui émet en
premier.
L’accès au bus est donc aléatoire car une station peut émettre à n’importe
quel moment. Mais cet accès se fait par priorité ; cette méthode est appelée CSMA
CD/AMP (Carrier Sense Multiple Acces with Collision Detection and Arbitration
Message Priority).
Comme dans la plupart des protocoles, il est nécessaire d’utiliser un vocabulaire
adapté à la situation. Nous allons donc définir un certain nombre de termes et de
règles de fonctionnement concernant le protocole CAN.

- Noeud :
Sous-ensemble relié à un réseau de communication et capable de
communiquer sur le réseau selon un protocole de communication (ici le protocole
CAN).
- Valeurs du bus :
Le bus peut avoir l’une des deux valeurs logiques complémentaires définies,
non pas en 0 et 1 comme d’habitude, mais sous les formes dites de dominante et
récessive. Dans le cas d’une transmission simultanée de bits récessifs et dominants,
la valeur résultante du bus sera dominante (équivalence avec un OU câblé).

page 19
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

- Message :
Chaque information est véhiculée sur le bus à l’aide d’un message (trame de
bits) de format défini mais de longueur variable (et limitée). Dès que le bus est libre
(bus idle), n’importe quel noeud relié au réseau peut émettre un nouveau message.
- Routage des informations :
Des noeuds peuvent être ajoutés au réseau sans qu’il n’y ait rien à modifier
tant au niveau logiciel que matériel. Chaque message possède un identificateur
(identifier) qui n’indique pas la destination du message mais la signification des
données du message. Ainsi tous les noeuds reçoivent le message, et chacun est
capable de savoir grâce au système de filtrage de message si ce dernier lui est
destiné ou non. Chaque noeud peut également détecter des erreurs sur un message
qui ne lui est pas destiné et en informer les autres noeuds.
- Trame de données, trame de requête :
Une trame de données (data frame) est une trame qui transporte, comme son
nom l’indique, des données. Une trame de requête est émise par un noeud désirant
recevoir une trame de données (l’identificateur est le même pour les deux trames
dans ce cas).
- Débit bit :
Le débit bit peut varier entre différents systèmes, mais il doit être fixe et
uniforme au sein d’un même système.
- Priorités :
Les identificateurs de chaque message permettent de définir quel message
est prioritaire sur tel autre.
- Demande d’une trame de données :
Un noeud peut demander à un autre nœud d’envoyer une trame de données,
et pour cela il envoie lui-même une trame de requête. La trame de données
correspondant à la trame de requête initiale possède le même identificateur.
- Fonctionnement multimaître :
Lorsque le bus est libre, chaque noeud peut décider d’envoyer un message.
Seul le message de plus haute priorité prend possession du bus.
- Arbitrage :
Le problème de l’arbitrage résulte du fonctionnement multimaître. Si deux
noeuds ou plus tentent d’émettre un message sur un bus libre il faut régler les
conflits d’accès. On effectue alors un arbitrage bit à bit (non destructif) tout au long
du contenu de l’identificateur. Ce mécanisme garantit qu’il n’y aura ni perte de temps,
ni perte d’informations. Dans le cas de deux identificateurs identiques, la trame de
données gagne le bus. Lorsqu’un bit récessif est envoyé et qu’un bit dominant est
observé sur le bus, l’unité considérée perd l’arbitrage, doit se taire et ne plus envoyer
aucun bit. L'arbitrage est qualifié de CSMA/CA (Carrier Sense Multiple Access -
Collision Avoidance).
- Sécurité de transmission :
Dans le but d’obtenir la plus grande sécurité lors de transferts sur le bus, des
dispositifs de signalisation, de détection d’erreurs, et d’autotests ont été implémentés
sur chaque noeud d’un réseau CAN. On dispose ainsi d’un monitoring bus
(vérification du bit émis sur le bus), d’un CRC (Cyclic Redundancy Check), d’une
procédure de contrôle de l’architecture du message, d’une méthode de Bit-Stuffing.
On détecte alors toutes les erreurs globales, toutes les erreurs locales au niveau des
émetteurs, jusqu’à 5 erreurs aléatoires réparties dans un message. La probabilité
totale résiduelle de messages entachés d’erreurs est inférieure à 4.7*10-11.

page 20
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

- Signalement des erreurs et temps de recouvrement des erreurs :


Tous les messages entachés d’erreur(s) sont signalés au niveau de chaque
noeud par un flag. Les messages erronés ne sont pas pris en compte, et doivent être
retransmis automatiquement.
- Erreurs de confinement :
Un noeud CAN doit être capable de faire les distinctions entre des
perturbations de courtes durées et des dysfonctionnements permanents. Les noeuds
considérés comme défectueux doivent passer en mode switched off en se
déconnectant (électriquement) du réseau.
- Points de connexion :
La liaison de communication série CAN est un bus sur lequel un nombre
important d’unités peuvent être raccordées. En pratique le nombre total d’unités sera
déterminé par les temps de retard (dus aux phénomènes de propagation) et/ou les
valeurs des charges électriques que ces unités présentent sur le bus.
- Canal de liaison simple :
Le bus consiste en un simple canal bidirectionnel qui transporte les bits. A
partir des données transportées, il est possible de récupérer des informations de
resynchronisation. La façon dont le canal est implémenté (fil standard, liaison
optique, paire différentielle…) n’est pas déterminée dans la norme officielle BOSCH.
- Acquittement :
Tous les récepteurs vérifient la validité d’un message reçu, et dans le cas d’un
message correct ils doivent acquitter en émettant un flag.
- Mode ‘Sleep’ (sommeil), Mode ‘Wake-up' (réveil) :
Afin de réduire la consommation d’énergie, chaque élément CAN peut se
mettre en Sleep mode. Dans ce mode il n’y a aucune activité interne au noeud CAN
considéré et ses drivers sont déconnectés du bus. La reprise de fonctionnement
(mode Wake-up) s’effectue lorsqu’il y a une activité sur le bus ou par décision interne
à l’élément CAN. On observe une attente due à une resynchronisation de l’oscillateur
local qui teste la présence de 11 bits consécutifs sur le bus (l’activité interne au
nœud CAN a cependant repris). Par suite les drivers se reconnectent au bus. Afin
d’obtenir les meilleures performances en débit sur un réseau de type CAN, il est
nécessaire d’utiliser des oscillateurs à quartz.

page 21
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

5) Caractéristiques du Bus CAN


5.1) Le codage NRZ : bits dominants et récessifs :
La succession de bits transitant sur le bus est codé avec la méthode du
NRZ (Non Return To Zero).
Pendant la durée totale du bit, le niveau de tension de la ligne est maintenu,
c’est à dire que pendant toute la durée durant laquelle un bit est généré, sa valeur
reste constante qu’elle soit dominante ou récessive.

5.2) Le bit stuffing


Une des caractéristiques du codage NRZ est que le niveau du bit est maintenu
pendant toute sa durée. Cela pose des problèmes de fiabilité si un grand nombre de
bits identiques se succèdent. La technique du Bit Stuffing impose au transmetteur
d’ajouter automatiquement un bit de valeur opposée lorsqu’il détecte 5 bits
consécutifs dans les valeurs à transmettre.

5.3) Le bit timing


On définit la plus petite base de temps reconnue sur un bus CAN comme étant le
Time Quantum. Cette base de temps est une fraction de l’horloge de l’oscillateur du
bus. Un bit dure entre 8 et 25 quantum

page 22
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Exemple de bit timing : lecture d’un bit


ISO11898 : High Speed CAN 250 Kbps
- 1 bit correspond à 32 coup
d’horloge
- La lecture du bit devra être faite au
20éme coup d’horloge

5.4) Longueur du bus et débit


La longueur du bus dépend des
paramètres suivants :
 Le délai de propagation sur les lignes physiques du bus.
 La différence du quantum de temps défini précédemment, du aux différences
de cadencement des oscillations des nœuds.
 L’amplitude du signal qui varie en fonction de la résistance du câble et de
l’impédance d’entrée des nœuds.
Pour une longueur de bus supérieure à 200 mètres il est nécessaire d’utiliser un
optocoupleur, et pour une longueur de bus supérieure à 1 kilomètre il est nécessaire
d’utiliser des systèmes d’interconnexion tels que des répéteurs ou des ponts.
N’importe quel module connecté sur un bus CAN doit pouvoir supporter un débit d’au
moins 20 kbit/s

6) Les informations sur le bus


6.1) Trame de données (data frame)
Constitution de la trame de données de type standard CAN 2.0A, la plus utilisée.
Cette trame se décompose en sept parties principales que l'on appelle des champs :
 début de trame (1 bit) start off frame (SOF)
 champ d'arbitrage (12 bits) arbitration field
 champ de commande (6 bits) control field
 champ de données (0 à 64 bits) data field
 champ de CRC (16 bits) CRC sequence
 champ d'acquittement (2 bits) ACKnowledgement field
 fin de trame (7 bits) end of frame (EOF)
puis, une 8emme zone dite d'espace interframe (intertrame) qui fait partie intégrante
de la trame.

page 23
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

6.2) Les champs de la trame de données

6.3) La méthode d’arbitrage


Le champ pendant lequel s'effectue l'arbitrage est constitué des bits de l'identifier
ainsi que du bit immédiatement suivant dit RTR (Remote Transmission Request).

Exemple d’arbitrage

page 24
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

6.4) Rôle des bits dans le champ d’arbitrage:


Le bit SOF (début de trame de données)
C’ est dominant il signale à toutes les stations le début d'un échange. Cet
échange ne peut démarrer que si le bus était précédemment au repos.
Toutes les stations doivent se synchroniser sur le front avant la transition du bit de
départ.
Identificateur :
La longueur de l'identificateur est de 11 bits, les bits sont transmis dans l'ordre
de ID_10 à ID_0 (le moins significatif est ID_0). Par ailleurs les 7 bits les plus
significatifs (de ID_10 à ID_4) ne doivent pas être tous récessifs.
ID = 1111111XXXX (X valeur indéterminée), c'est-à-dire un nombre maximal
d'identificateurs de : (211 - 24) = 2048 - 16 = 2032 combinaisons.
Le bit RTR :
Lors d'une dataframe, le bit de remote transmission request (RTR) doit être
dominant.

6.5) Champ de commande


Il est constitué de 6 bits.

Il y a deux Bits de réserves : Les deux premiers bits (émis dominants en trame
2.0A) sont en réserve d'usages ultérieurs et permettent d'assurer des compatibilités
futures ascendantes (notamment celles de la trame dite étendue CAN 2.0B). Les
contrôleurs CAN doivent être aptes à traiter toutes combinaisons de tous les bits du
champ de commande.
4 bits DLC : Les 4 derniers bits du champ de commande (champ DLC - Data
Length Code) indiquent le nombre d'octets qui seront contenus dans le champ de
données.

page 25
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

6.6) Champ de données


Le champ de données est l'endroit où se trouvent les données utiles
transmises. Il peut être composé de 0 octet minimum à 8 octets maximum transmis
avec le MSB (Most Significant Bit) en tête.
Remarque : De 0 à 8 inclus, cela fait neuf valeurs donc 4 bits du DLC pour définir le
nombre de données contenues

6.7) Le champ de CRC :


Il est composé de la séquence de CRC sur 15 bits suivi du CRC Delimiter (1
bit récessif).
La séquence de CRC (Cyclic Redundancy Code) permet de vérifier l'intégrité
des données transmises. Les bits utilisés dans le calcul du CRC sont ceux du SOF,
du champs d'Arbitration, du champ de Control et du champ Data Field.
Le CRC est un polynôme calculé de la même manière par l’émetteur et par le
récepteur de la trame : le message est vu par l’algorithme comme un polynôme qui
est divisé par X15+X14+X10+X8+X7+X4+X3+1 et le reste de cette division est la
séquence CRC transmise avec le message.

6.8) Le champ ACK


Il est composé de 2 bits, l'ACK Slot et le ACK Delimiter (1 bit récessif).
 un nœud en train de transmettre envoie un bit récessif pour le ACK Slot.
 un nœud ayant reçu correctement un message en informe le transmetteur en
envoyant un bit dominant pendant le ACK Slot : il acquitte le message.

page 26
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

6.9) Fin de trame de donnée


La trame de donnée se termine par un drapeau formé par une séquence de 7
bits récessifs, ce qui, dépasse de deux bits la largeur de la norme de bit stuffing.
Ce champ a une structure fixe et les logiques de codage (à l'émission) et de
décodage (aux réceptions) de bit stuffing sont désactivées pendant la séquence du
champ de fin de trame.

6.10) Trame de requête (remote frame)


Chacun émet sans savoir si l'information envoyée à servi à l'un des
participants.
Il se peut aussi qu'un nœud ait besoin d'information d'un certain type dont il ne
dispose pas pour assurer la mission qui lui est dévolue. Dans ce cas, une station
nécessitant des données peut initialiser la demande d'une transmission des données
considérées par un autre nœud en envoyant une remote frame.
Cette trame ne se compose que de six parties au lieu des sept précédentes :
 - le début de trame,
 - le champ d'arbitrage,
 - le champ de commande,
 - le champ de CRC
 - le champ d'acquittement,
 - la fin de trame,
puis une 7e zone dite d'espace interframe.

Format de la trame de requête

Contrairement au cas précédent, dans le cas d'une remote frame, le bit RTR
est récessif. C'est donc ce bit qui différencie une data frame d'une remote frame.

Exemple :
Comparaison de 2 trames avec le même identificateur, l’une de données
l’autre de requête : la trame de donnée est prioritaire sur la trame de requête.

page 27
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

6.11) Trame de surcharge (overload frame)


Cette trame indique qu'une station est surchargée pendant un certain laps de
temps.
Il y a deux sortes de conditions de surcharge qui mènent toutes deux à la
transmission d'un overload flag :
 les conditions internes d'un récepteur qui nécessitent un certain temps (un
retard) pour accepter la prochaine data frame ou remote frame.
 la détection d'un bit dominant durant la phase intermission. Dans ce cas le
démarrage de l'overload frame a lieu juste après la détection du bit dominant.

Afin de ne pas bloquer le bus indéfiniment seules deux overload frame


consécutives peuvent être générées pour retarder les data ou remote frame
suivantes.
Cette trame ne comprend que deux champs :
 Le champ des flags de surcharge,
 Le délimiteur de champ.

Comme l'indique la figure, elle peut se produire à la fin d'un end of frame ou
d'un error delimiter ou encore d'un autre overload delimiter en lieu et place du début
de l'interframe.

6.12) Période d'intertrame (interframe)


Les data frame et remote frame sont séparées des trames précédentes (de
quelques types qu'elles soient : data, remote, error, overload frame) par un champ de
bits appelé interframe space.
Au contraire, les overload frame et error frame ne sont pas précédées par une
interframe space et les multiples overload frame ne sont pas séparées par un
interframe space (revoir toutes les figures déjà présentées et observer en détail ces
phases de fonctionnement du bus).
L'interframe space se compose de deux ou trois champs selon les cas. Ce sont :
 le champ de bits intermission
 le champ de bits de bus idle (bus libre),
 d'un champ de bits de suspend transmission, pour les stations en error
passive qui ont envoyé un message d’erreur.

Voici un exemple de 2 zones d’inter trame l’une sans trame d’erreur l’autre à la suite
d’une trame d’erreur (inter trame « erreur »)

page 28
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

6.13) La trame d’erreur


Pour différentes raisons, comme l’existence de fortes perturbations ou de
pertes importantes lors de la transmission, le protocole CAN dispose d’un système
de gestion des erreurs locales.
Le principe du bit stuffing vu précédemment permet de localiser une erreur et
un nœud qui détecte ce type d’erreur transmettra aux autres nœuds un message dit
« Error Flag » contenant six bits de même polarité.
Après avoir transmis le message Error Flag, le nœud essaiera à nouveau de
transmettre le message, et si aucun message de priorité supérieure ne prend la main
sur le réseau ce nouveau message est transmis 23 bits au plus après.
Les bits formant l’Error Flag sont dominants et écrasent donc les données
contenues dans la Data Frame. Ils provoquent la retransmission de cette dernière.
Dans le cas d’erreurs successives, il y aura superposition d’Error Flags.
La trame d’erreur
Les 8 bits de l’Error Délimiter donnent l’autorisation aux nœuds du réseau de
reprendre leurs communications.
Des recherches ont montré que le taux d’erreurs non détectées par le protocole
CAN est très faible : 1 erreur non détectée pour 1000 années de fonctionnement

page 29
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

B. La liaison RS485 :

1) Introduction :
La norme RS485 définie par l’EIA, Electronic Industries Association, a été
publiée en Avril 1983. Ce standard précise les caractéristiques électriques des
émetteurs et des récepteurs pour une utilisation dans les systèmes multipoints en
mode symétrique.
La transmission se fait sur une ligne électrique, pratiquement une paire torsadée, par
des variations de tension en mode différentiel.

2) Le Bus RS485 :
Un des principaux problèmes des liaisons séries est l'absence d'immunité pour
le bruit sur les lignes de signal. L'émetteur et le récepteur comparent les tensions par
rapport à une masse commune en ligne (exemple RS232). Un changement dans le
niveau du potentiel de terre peut avoir des effets désastreux. Le bruit limite à la fois
la distance maximale et la vitesse de communication. Avec l’RS485 il n'y a pas une
masse commune comme signal de référence. La transmission est différentielle Le
récepteur compare la différence de tension entre les deux lignes, au lieu d’un niveau
de tension absolue sur une ligne de signal.

Le support de transmission est ici différentiel. Deux fils correspondant à des niveaux
complémentaires sont donc utiles pour chaque signal ce qui limite l'influence des
bruits extérieurs et des masses. Des circuits trois états permettent des liaisons
multipoints.

Principales caractéristiques électriques de la norme RS485

page 30
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Caractéristiques Min. Max.


Tension du générateur en circuit ouvert - ±6 V
(VAB)
Courant de sortie en court-circuit (I0) - 150 mA
Résistance interne du générateur 50 Ω 100 Ω
Résistance de charge (RL) 100 Ω -
Capacité parallèle (CL) - 2500 pF
Vitesse - 10 Mbit/s
Longueur de câble - 1km

Niveaux significatifs de Tension :

3) Le protocole :
Un protocole consiste en la définition de trames d’échange. Plusieurs protocoles
en été définies. Le protocole le plus connu est le protocole Modbus (marque déposée
par MODICON) et Profibus (Siemens) qui sont deux protocoles standards de
dialogue basé sur une structure hiérarchisée entre un maître et plusieurs esclaves.
Mikroelectronika propose aussi un protocole non standard pour communiquer des
microcontrôleurs de type PIC, DsPIC, AVR et Intel. Néanmoins l’utilisateur est libre de
définir son propre protocole, nous allons voir à la fin de ce chapitre un exemple de
réseau RS485 entre plusieurs microcontrôleurs de la famille PIC de Microchip.

page 31
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

 Le maître envoie une demande et attend une réponse.


 Deux esclaves ne peuvent dialoguer ensemble.
 Le dialogue maître – esclave peut être schématisé sous une forme successive
de liaisons point à point.
 Mode de communication : half-duplex. (2 fils ou 4 fils)
 le maître parle à l'ensemble des esclaves, sans attente de réponse (diffusion
générale).
Il ne peut y avoir sur la ligne qu'un seul équipement en train d'émettre. Aucun
esclave ne peut envoyer un message sans une demande préalable du maître. Le
dialogue direct entre les esclaves est impossible.
3.1. Structure des messages :
Le maître envoie un message constitué de la façon suivante:

 La détection de fin de message est réalisée sur un silence de durée


supérieure ou égale à la durée de transmission de 3 octets.
 L'esclave répond par un message du même type que le message question.

Le protocole Modbus est très utilisé pour les communications des automates
programmables industriels et des variateurs de vitesse des moteurs électriques.
3.2 Adressage
Les abonnés du bus sont identifiés par des adresses attribuées par l’utilisateur.
L’adresse de chaque abonné est indépendante de son emplacement physique.
Les adresses vont de 1 à 64 pour le protocole Modbus et de 1 à 255 en général et ne
doivent pas obligatoirement être attribuées de manière séquentielle.
Deux abonnés ne peuvent avoir la même adresse.
3.4 Echange maître vers 1 esclave
Le maître interroge un esclave de numéro unique sur le réseau et attend de la part
de cet esclave une réponse.

page 32
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

3.5 Echange Maître vers tous les esclaves


Le maître diffuse un message à tous les esclaves présents sur le réseau, ceux-ci
exécutent l’ordre du message sans émettre une réponse.

3.6 Format général d’une trame


Deux types de codage peuvent être utilisés pour communiquer sur un réseau
Modbus.
Tous les équipements présents sur le réseau doivent être configurés selon le même
type.
- Mode RTU (Unité terminale distante):
La trame ne comporte ni octet d’en-tête de message, ni octets de fin de message.
Sa définition est la suivante :

CRC16 : paramètre de contrôle polynomial (cyclical redundancy check).


La détection de fin de trame est réalisée sur un silence supérieur ou égal à 3 octets.
- Mode ASCII :
Chaque champ composant une trame est codé avec 2 caractères ASCII (2 fois 8 bits).

LRC : C’est la somme en hexadécimal modulo 256 du contenu de la trame hors


délimiteurs, complémentée à 2 et transmise en ASCII.

3.7 Trame d’échange question/réponse


La question :
Elle contient un code fonction indiquant à l’esclave adressé quel type d’action est
demandé.
Les données contiennent des informations complémentaires dont l’esclave a besoin
pour exécuter cette fonction.

page 33
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Le champ octets de contrôle permet à l’esclave de s’assurer de l’intégralité du


contenu de la question.

La réponse
Si une erreur apparaît, le code fonction est modifié pour indiquer que la réponse est
une réponse d’erreur.
Les données contiennent alors un code (code d’exception) permettant de connaître
le type d’erreur.
Le champ de contrôle permet au maître de confirmer que le message est valide.

4. Bus de terrain Profibus

Profibus (Process Field Bus) est le nom d'un type de bus de terrain inventé par
Siemens et devenu peu à peu une norme de communication dans le monde de
l'industrie. Il s'appuie sur une liaison RS485

Le bus PROFIBUS-DP (Decentralised Peripheral) (périphérie décentralisée) est


utilisé pour la commande de capteurs, d'actionneurs ou d'automates programmables
par une commande centrale.

PROFIBUS-FMS (Fieldbus Message Specification) est utilisé aussi pour la connexion


d'une « intelligence distribuée », c'est-à-dire la mise en communication de plusieurs
automates les uns avec les autres avec des débits qui peuvent atteindre 12 Mbit/s

Le bus PROFIBUS-PA (Process Automation) est utilisé, dans le cadre de l'ingénierie


de procédé, pour contrôler des équipements de mesure par l'intermédiaire d'un
système de contrôle de procédé. (Alimentation et signal sur un même câble, jusqu’à
31.25 Kbits/s.)

La majorité des automates Siemens disposent d'une interface Profibus-DP pour le


dialogue avec le PC de programmation, supportant aussi le protocole MPI. Certains
modèles proposent même une 2e interface Profibus-DP. Mise à part sa fonction
servant à lier le PC de programmation à la CPU, le Profibus-DP peut servir de liaison
entre un maître (par exemple la CPU) et ses esclaves (Micromaster, IHM...).

On reconnaît facilement un réseau Profibus-DP à la couleur de son câble : violet. En


l'ouvrant, on distingue 2 fils : un vert et un rouge, nommé "A" et "B". En général, les
connecteurs Profibus sont des connecteurs DB9 plus ou moins standards. Le fil "A"
est relié à la pin n°3 du connecteur DB9, tandis que le fil "B" est relié à la pin n°8.

Câble
Paire torsadée blindée, soigneusement isolée par une feuille conductrice et une
tresse. Avec 2 conducteurs nommés A et B.
• Fil vert : A, transporte le signal RxD/TxD-N
• Fil rouge : B, transporte le signal RxD/TxD+N

Terminaison de ligne

page 34
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

– Résistances de terminaison équivalentes à l’impédance du câble pour polariser la


ligne en l’absence de signal. En général, intégrées dans le connecteur et activables
par un
Interrupteur

Débit et distance de Profibus


La distance maximale et le débit sont liés, le bus accepte jusqu’à 32 équipements
sans répéteur et 126 équipements avec répéteur. L’utilisation d’un répéteur
régénérant le signal permet de cascader les segments. Il ne doit pas y avoir plus de
9 répéteurs entre un équipement et le maître.

• Ordre des bits : LSB d’abord.

– Lors de la transmission de données composées de plusieurs octets (Word 16 bits,


DWord 32 bits). Les octets de poids fort sont transmis d’abord.

Structure commune des télégrammes

page 35
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Exemple :

Norme
Les divers types de télégrammes, identifiés par leur SD et les fonctions possibles
pour chaque type, identifiées par FC.
• Exemple
– Ecriture des sorties : SD = 68h, FC = 6h, pas de SSAP ni DSAP et DU : contient
les valeurs des sorties.
Adressage
• Plage d’adresses de 0 à 127
– 0 : en général utilisée par les outils de diagnostic.
– 1 à 125 : adresses librement utilisables pour les maîtres et esclaves.
– 126 : réservée pour les équipements dont l’adresse est définie par le bus.
– 127 : adresse de diffusion (message reçu par tous les esclaves)
• Fonctionnement maître esclave
– Le maître envoie une requête à un esclave.
– L’esclave renvoie une réponse en retour.
– Ainsi, pas de risque de collision.
– Polling successif des différents esclaves
– Fonctionnement cyclique
– Le temps de cycle dépend du nombre d’esclaves et de la taille des données
échangées

page 36
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Fonctionnement multi maître


Les différents maîtres accèdent à tour de rôle au bus et Ils s’échangent un « jeton ».
Le propriétaire de ce jeton a le droit d’utiliser le bus. Lorsqu’il a fini son cycle, il
envoie un télégramme au maître suivant. Les règles suivantes s’appliquent
– Un seul maître peut écrire vers un esclave.
– Tous les maîtres peuvent lire tous les esclaves.

5. Application de la liaison RS485 pour les microcontrôleurs :


MikroPascal fournit un ensemble de routines et bibliothèques pour la liaison RS485
en architecture Master/Slave.
Format de la trame :
La trame est composée de 4 champs qui sont : octet de synchronisation, CRC, octet
d’adresse, et les données
- data [0..2] est le message
- data [3] est le nombre d’octet dans le message, 1–3
- data [4] est mis à 255 lorsque le message est reçu
- data [5] est mis à 255 lorsque il y a une erreur
- data [6] est l’adresse de l’esclave
Chaque esclave possède sa propre adresse et reçoit seulement les paquets qui lui
sont adressées. L’esclave ne peut jamais établir une communication. Il est de la
responsabilité du programmeur de s'assurer qu’un seul dispositif transmet via bus
485 à la fois.
Les routines RS485 requirent un module USART sur le PORTC du microcontrôleur
utilisé.
L’adresse 50 est l'adresse de diffusion commune à tous les esclaves (les paquets
contenant l'adresse 50 sera reçu par tous les esclaves). Les seules exceptions sont
les esclaves avec des adresses 150 et 169.
Note: il faut que Usart_Init () soit appelée avant l'initialisation RS485.
Voici un exemple de communication RS485 entre deux microcontrôleurs
PIC16F876A

page 37
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

page 38
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

Programme du maitre :

////////////////////////////////////////////////////////////////////////////////////
//******************* http://www.technologuepro.com/ ***************************//
// ISET Nabeul Le 07/12/2010 --------+------- //
// Carte de test de la liaison RS485 programme maitre //
// By ABIDI Hatem //
////////////////////////////////////////////////////////////////////////////////////
program RSBUMASTER;
var dat : array[3] of byte; // Message buffer
begin
Lcd_Config(PORTB,6,5,4,3,PORTB,0,1,2); // Initialize LCD
Usart_init(9600); // Initialize USART module
RS485Master_Init(PORTC, 2); // Initialize MCU as Master
dat[0] := 'A'; // Message 'AII'
dat[1] := 'I';
dat[2] := 'I';
Lcd_out(1,1,'Press START');
while true do
begin
if PORTC.0 = 1 then
begin
Lcd_out(1,1,'Message sent:');
Lcd_out(2,1,'AII');
RS485Master_Send(dat, 3, 170); // send message
delay_ms(1000);
end;
end;
end.

Programme de l’esclave :

////////////////////////////////////////////////////////////////////////////////////
//******************* http://www.technologuepro.com/ ***************************//
// ISET Nabeul Le 07/12/2010 --------+------- //
// Carte de test de la liaison RS485 programme esclave //
// By ABIDI Hatem //
////////////////////////////////////////////////////////////////////////////////////
Program RSBUSLAVE;
var dat : array[8] of byte; // Message buffer
i, j : byte;
procedure interrupt;
begin
RS485Slave_Receive(dat);
ClearBit(PIE2, TXIE);
end;

page 39
COURS LES SYSTEMES EMBARQUES CHAPITRE 2

begin
Lcd_Config(PORTB,6,5,4,3,PORTB,0,1,2);
Usart_init(9600); // Initialize USART module
RS485Slave_Init(PORTC, 2, 170); // Initialize MCU as Slave, address 160
SetBit(PIE1, RCIE); // Enable interrupt on byte received
SetBit(INTCON, PEIE); // via USART (RS485)
ClearBit(PIE2, TXIE);
SetBit(INTCON, GIE);
PORTB := 0;
dat[4] := 0; // Clear "message received" flag
dat[5] := 0; // Clear error flag
Lcd_out(1,1,'Standby');
while true do
begin
// If there is an error,
if dat[5] = TRUE then Lcd_out(1,1,'error');
// If message received:
if dat[4] = TRUE then
begin
Lcd_out(1,1,'Message receved:');
dat[4] := 0; // Clear message received flag
j := dat[3]; // Number of data bytes received
for i := 1 to j do
BEGIN
lcd_chr(2,i,dat[i - 1]);
END;
end;
end;
end.

Note :

L’exemple suivant est téléchargeable à l’adresse suivante :


http://www.technologuepro.com/cours-systemes-embarques/exemple-
RS485.zip
Mot de passe : ABIDI
Schéma : Proteus 7 (ISIS) ou plus
Programme : Mikropascal 8

page 40

Vous aimerez peut-être aussi