0% ont trouvé ce document utile (0 vote)
46 vues24 pages

Bus de Communication

Cours

Transféré par

assaad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
46 vues24 pages

Bus de Communication

Cours

Transféré par

assaad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Cours

Bus de Communication

Sylvain Montagny

[Link]@[Link]

04 79 75 86 86
1 LE BUS ONE-WIRE ................................................................................................................................ 3
1.1 INTRODUCTION ...................................................................................................................................... 3
1.2 ETUDE DU PROTOCOLE ............................................................................................................................ 3
1.3 MISE EN ŒUVRE SUR MICROCONTROLEUR ................................................................................................... 4
1.4 APPLICATION AVEC UN CAPTEUR DE TEMPERATURE DS1820 .......................................................................... 5
2 LE BUS SPI ............................................................................................................................................ 7
2.1 INTRODUCTION ...................................................................................................................................... 7
2.2 ETUDE DU PROTOCOLE ............................................................................................................................ 8
2.3 MISE EN ŒUVRE SUR MICROCONTROLEUR ................................................................................................... 9
3 LE BUS I2C .......................................................................................................................................... 11
3.1 INTRODUCTION .................................................................................................................................... 11
3.2 ETUDE DU PROTOCOLE .......................................................................................................................... 11
3.3 MISE EN ŒUVRE SUR MICROCONTROLEUR ................................................................................................. 12
3.4 APPLICATION AVEC UNE HORLOGE TEMPS REEL PCF8583 ........................................................................... 12
4 LE BUS CAN ........................................................................................................................................ 14
4.1 INTRODUCTION .................................................................................................................................... 14
4.2 ETUDE DU PROTOCOLE .......................................................................................................................... 14
4.3 MISE EN ŒUVRE SUR MICROCONTROLEUR ................................................................................................. 18
4.4 LE CONTROLEUR CAN DU STM32........................................................................................................... 19
4.5 CODAGE D’UNE APPLICATION CAN .......................................................................................................... 21
4.6 APPLICATION AVEC UN INCLINOMETRE DE CHEZ IFM ELECTRONIC .................................................................. 24

| 1
Introduction
Ce cours est à disposition des étudiants du master ESET de l'université Savoie Mont Blanc [
[Link] ]. Il est mis en ligne gratuitement, sans contrepartie et libre
d'utilisation. Certaines parties des exercices sont cachées. Vous pouvez me solliciter si en tant
qu'enseignant vous souhaitez visualiser la version complète.

Voici la liste non exhaustive d'autres ressources disponibles :

Low Power on STM32 [English]: [Link]


LoRa-LoRaWAN et IOT : [Link]
Processeurs de traitement du signal : [Link]
Systèmes d'exploitation temps réel : [Link]
Bus de communication : [Link]
Programmation C pour les systèmes embarqués : [Link]

| 2
1 Le bus One-Wire
Device : Capteur de température DS1820

1.1 Introduction
1.1.1 Caractéristiques du One-Wire

Nom du constructeur à l'origine du bus Dallas Semiconductor


Nombre de fils pour la transmission 1
Débit max 16 kpbs
Synchrone ou Asynchrone Asynchrone
Transmission Maitre – Esclave ( Oui / Non ) Oui
Nombre de maître 1
Nombre d'esclave Plusieurs
Full Duplex / Half Duplex / Simplex Half duplex
Bit transmit en premier (LSB ou MSB) LSB
Figure 1 : Caractéristiques du bus One-Wire

1.1.1 Schéma de connexion

1.2 Etude du protocole


Quatre types d'actions peuvent être initiées par le maître.

1.2.1 Le Reset
Toutes communications commencent par l'envoi de la commande "Reset". Dans son slot de
réponse, l'esclave peut confirmer sa présence comme le montre la Figure 2.

Figure 2 : Symbole de Reset

1.2.2 L'écriture et la lecture


Si le maître souhaite transmettre un '0' ou un '1', il utilise les deux premiers symboles de la Figure
3.

| 3
Si le maître souhaite lire un bit en provenance de l'esclave, il transmet le symbole "Read" de la Figure
3. L'esclave positionnera alors la valeur du bit dans son slot de réponse.

Figure 3 : Ecriture et lecture d'un bit depuis l'esclave

1.3 Mise en œuvre sur microcontrôleur


1.3.1 Matériel
Il faut une ligne bidirectionnelle : Open drain avec pull-up.
Sur la Figure 4, insérer un deuxième device "One Wire" et spécifier les alimentations.

Figure 4 : Deux devices One Wire

| 4
1.3.2 Logiciel

Figure 5 : Implémentation des 4 opérations du One Wire

Il faut donc être capable de générer des temporisations avec une finesse de 1µs.
Ecrire une fonction [ void delayUs( uint32_t useconds ) ] permettant de réaliser une
temporisation.
Ecrire une fonction [ uint8_t ONEWIRE_Reset ( void ) ] qui envoie le symbole de reset et qui
retourne la présence (1) ou l'absence (0) d'au moins un device One Wire.
Ecrire une fonction [ void ONEWIRE_WriteBit0( void ) ] qui envoie un '0' à l'esclave.
Ecrire une fonction [ void ONEWIRE_WriteBit1( void ) ] qui envoie un '1' à l'esclave.
Ecrire une fonction [ uint8_t ONEWIRE_ReadBit ] qui envoie un symbole de lecture et qui
retourne le bit lu (0 ou 1).
Ecrire une fonction [ void ONEWIRE_WriteByte(uint8_t myData) ] qui permet d'envoyer un
octet
Réaliser une fonction [ uint8_t ONEWIRE_ReadByte( void ) ] qui permet de lire un octet.

1.4 Application avec un capteur de température DS1820


Le format général d'une transaction entre un maître One-Wire et un DS1820 est le suivant :

(1) Reset
(2) ROM function Command
(3) MEMORY function Command
(4) Transaction / data

Dans le cas de la lecture d'une température, la suite de symboles suivant doit être transmis.

Conversion de la température :

(1) Reset
(2) SKIP_ROM [ 0xCC ]
(3) CONVERT_T [ 0x44 ]

Delay_ms(10);

(1) Reset
(2) SKIP_ROM [ 0xCC ]

| 5
(3) READ_SCRATCHPAD [ 0xBE ]
(4) Read 1 byte [ Température sur 8 bits ]

| 6
2 Le bus SPI
2.1 Introduction
2.1.1 Caractéristique du bus SPI
Nom du constructeur à l'origine du bus Motorola
Nombre de fils pour la transmission 3 + 1 par esclave
Débit Jusqu'à plusieurs dizaines de Mbps
Synchrone ou Asynchrone Synchrone
Transmission Maitre – Esclave ( Oui / Non ) Oui
Nombre de maître 1
Nombre d'esclave Illimité
Full Duplex / Half Duplex / Simplex Full Duplex
Bit transmit en premier (LSB ou MSB) MSB ou LSB (au choix)
Figure 6 : Caractéristiques du bus SPI

2.1.2 Schéma de connexion


Le bus SPI contient 4 signaux logiques :

 SCLK : Horloge (Généré par le maître)


 MOSI : Master OUT, Slave IN
 MISO : Master IN, Slave OUT
 NSS : Slave Select, actif à l’état bas, généré par le maître.

Figure 7 : Connexion SPI entre un maître et trois esclaves

| 7
2.2 Etude du protocole

Figure 8 : Cadencement des registres à décalage pour l'émission et la réception

La clock sert à séquencer la transmission :

 Décalage des registres d'émission


 Décalage des registres de réception

En pratique, Il y a 4 modes de fonctionnements possibles, qui sont une combinaison de 2


paramètres:

 La valeur de la clock au repos : 0 (CPOL = 0) ou 1 (CPOL = 1)


 L'utilisation du premier front (CPHA = 0) ou du deuxième (CPHA = 1) pour l’acquisition des
données. Le front qui n'est pas utilisé sert au décalage des registres.

Figure 9 : Format d'une trame SPI dans le cas de CPHA = 1

| 8
Figure 10 : Format d'une trame SPI dans le cas de CPHA = 0

Avantages :

 Débit plus important que pour le protocole I2C


 Aucun arbitre car aucune collision possible
 Très simple

Inconvénients :

 Monopolise plus de Pin que l’I2C


 Aucun adressage possible, il faut une ligne de sélection par esclave
 Pas d’acquittement
 S’utilise sur des plus courtes distances que le CAN ou autres transmissions différentielles.

2.3 Mise en œuvre sur microcontrôleur


2.3.1 Initialisation du bus SPI
 Activation du périphérique
 Master / Slave
 Clock (si master)
 CPHA / CPOL

2.3.2 Mode Scrutation avec les fonctions HAL


Les fonctions HAL pour STM32 disponibles sont les suivantes :

 HAL_SPI_Transmit (hspi , pData , Size , Timeout ) : Transmission du contenu de pData dans


le registre DR (Data Registre). Ce transfert est réalisée "Size" fois. La transmission du registre
DR sur MOSI est totalement gérée par le module SPI du microcontrôleur. Rien n'est relevé
sur MISO car on ne fait que transmettre.

| 9
 HAL_SPI_Receive ( hspi , pData , Size , Timeout ) : Réception dans le registre DR (Data
Registre) des valeurs lues sur MOSI. Cette réception est totalement gérée par le module SPI
du microcontrôleur. Cette réception est réalisée "Size" fois et stockée dans pData. Des
données aléatoires sont transmises sur MOSI car on ne fait que recevoir.
 HAL_SPI_TransmitReceive ( hspi , pTxData , pRxData , Size , Timeout ) : Réception et
Transmission en même temps. Mode full duplex, c'est le cas d'utilisation du SPI le plus
intéressant.

2.3.3 Mode scrutation avec la manipulation de registres


Exemple d'une fonction SPI_Transmit :
SET_BIT([Link]->CR1,SPI_CR1_SPE); // SPI Enable
SET_BIT([Link]->CR1,SPI_CR1_MSTR); // Mode Master

while (1)
{
HAL_Delay(100);
//Attente TX Buffer vide
while ( READ_BIT([Link]->SR,SPI_SR_TXE) == 0 );
//Envoi Data
WRITE_REG([Link]->DR,spiDataTransmit);
spiDataTransmit++;
}

2.3.4 Mode interruption


Les deux principaux évènements intéressants sont :

Figure 11 : Le bus SPI en mode interruptions

| 10
3 Le bus I2C
I2C : Inter Integrated Circuit

3.1 Introduction
3.1.1 Caractéristique du I2C

Nom du constructeur à l'origine du bus NXP


Nombre de fils pour la transmission 2 (SDA / SCL)
Débit Jusqu'à 5 Mbps en mode "Ultra Fast"
Synchrone ou Asynchrone Synchrone
Transmission Maitre – Esclave ( Oui / Non ) Oui
Nombre de maître Plusieurs
Nombre d'esclave Plusieurs
Full Duplex / Half Duplex / Simplex Half Duplex
Bit transmit en premier (LSB ou MSB) MSB
Figure 12 : Caractéristiques du bus I2C

3.1.1 Schéma de connexion

3.2 Etude du protocole


Question 1 : Quel est l'état de la ligne au repos ?

Question 2 : Quel est l'état de la ligne si un device émet un '1' alors qu'un autre émet un '0' ?

Question 3 : Comment un device détecte-il une collision ?

Transmission en I2C :

 Une "Condition de Start" est une transition de haut en bas sur SDA pendant que SCL est à 1.
 La donnée sur la ligne SDA doit être stable pendant toute la durée de l'état haut de SCL.
 Une "Condition de Stop" est une transition de bas en haut sur SDA pendant que SCL est à 1.

Dessiner une transmission I2C sur quelques bit en prenant en considération les éléments ci-
dessus.
Informations supplémentaires :

 Quel que soit le sens de l'échange, c'est toujours le maître qui émet la clock.
 Il n'y a pas de limite de nombre d'octet transmis.
 Un acquittement est transmis après chaque octet transmis (l'émetteur relâche la ligne et le
récepteur émet un '0')

| 11
Figure 13 : Trame I2C avec acquittement des octets

3.3 Mise en œuvre sur microcontrôleur


Les fonctions HAL pour STM32 permettent de réaliser des opérations de lecture (R/W = 1) grâce aux
fonctions Transmit(), ou des opérations d'écriture grâce aux fonctions Receive() :

 HAL_I2C_Master_Transmit ( hi2c , DevAddress , pData , Size , Timeout ) : Cette fonction


transmet la condition de Start, le Dev @ + Write bit, le contenu de pData, et enfin la
condition de Stop. La Figure 14 montre un exemple d'utilisation de cette fonction.
 HAL_I2C_Master_Receive ( hi2c , DevAddress , pData , Size , Timeout ) : Cette fonction
transmet la condition de Start, le Dev @ + Read bit, puis lit autant d'octet que souhaité (Size)
en les stockant dans pData. La Figure 15 montre un exemple d'utilisation de cette fonction.
 HAL_I2C_Mem_Read (hi2c, DevAddress, MemAddress, MemAddSize, pData, Size, Timeout)
: Cette fonction réalise la lecture d'une adresse spécifique (MemAddress) et stocke le
résultat dans pData. Il s'agit simplement d'un HAL_I2C_Master_Receive() dont la condition
de stop est remplacée par un "Repeated Start", suivie d'un HAL_I2C_Master_Receive() sans
la condition de Start. La Figure 16 montre un exemple d'utilisation de cette fonction.
Ces fonctions sont exclusivement réservées au STM32 jouant le rôle de Master, ce qui représente la
principale utilisation du bus I2C sur microcontrôleur.

 I2C HAL_I2C_Slave_Transmit(hi2c, pData, Size, Timeout)


 HAL_I2C_Slave_Receive(hi2c, pData, Size, Timeout)

3.4 Application avec une Horloge Temps Réel PCF8583


3.4.1 Transmettre des données à la RTC depuis le STM32
La transmission de données depuis le STM32 vers la RTC permet dans notre cas de réaliser des
opérations d'écriture des différents registres du composant. Le chronogramme permettant
l'écriture dans une RTC PCF8583 est donné dans la figure suivante.

| 12
Figure 14 : Le master transmet à un esclave récepteur (Mode WRITE)

Dans la fonction HAL_I2C_Master_Transmit, pData contient donc l'adresse du registre (REGISTER


ADDRESS) ainsi que la donnée (DATA) à écrire à cette adresse. Si plusieurs données sont fournies (n
bytes), elles seront écrites aux adresses suivantes (auto increment memory register address).

3.4.2 Recevoir des données depuis l'esclave


La réception de données depuis la RTC vers le STM32 permet dans notre cas de réaliser des
opérations de lecture des différents registres du composant. Le chronogramme permettant la
lecture d'une RTC PCF8583 est donné dans la figure suivante.

Figure 15 : Le master transmet un octet, puis passe en mode récepteur (Mode READ)

Dans la fonction HAL_I2C_Master_Receive, pData stockera les données (DATA) lues.

3.4.3 Lecture de données à une adresse spécifique


Comment fait-on pour spécifier l'adresse du registre (REGISTER ADDRESS sur la Figure 14) à laquelle
on souhaite lire ? L'adresse utilisée est celle que nous aurons spécifié lors d'une écriture sans
donnée. Le séquencement complet est donc présenté à la figure suivante :

Figure 16 : Lecture du Master après avoir transmis l'adresse du registre

La fonction HAL_I2C_Mem_Read, réalise exactement le séquencement décrit à la Figure 16.

| 13
4 Le BUS CAN
4.1 Introduction
4.1.1 Caractéristique du CAN

Nom du constructeur à l'origine du bus Bosch


Nombre de fils pour la transmission 2 (CANH / CANL)
Débit Jusqu'à 1 Mbps
Synchrone ou Asynchrone Asynchrone
Transmission Maitre – Esclave ( Oui / Non ) Oui et Non
Nombre de nœud maximum 30
Full Duplex / Half Duplex / Simplex Half Duplex
Bit transmit en premier (LSB ou MSB) MSB
Figure 17 : Caractéristiques du bus CAN

4.1.2 Schéma de connexion

4.2 Etude du protocole


4.2.1 Signaux transmis sur le bus.
On prend le cas de l'utilisation du transceiver CAN de la Figure 18.

Figure 18 : Caractéristique électrique de CANH et CANL


Sur le schéma suivant, donner la représentation des signaux CANH et CANL pour un bit
récessif et un bit dominant.

| 14
3.5 V

2.5 V

1.5 V

récéssif dominant récéssif


0V

Figure 19 : Signaux CANH et CANL circulant sur le bus CAN

Le symbole "dominant" est attribué au bit '0' et le symbole récessif est attribué au symbole '1'. Si
deux devices émettent en même temps sur la ligne, c'est celui qui émet un '0' (symbole dominant)
qui gagne. L'autre arrête sa transmission.

4.2.2 Trame transmise sur le bus


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. Pourquoi ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

1 2 3 4 5 6 7 S 8 9 10 11 12 13 14 15 16 17 18 19 S 20 21 22 23 24

Figure 20 : Trame avant et après l'application du bit de stuffing

4.2.3 Les timings du bus CAN


Le bus CAN est défini par le temps d’un bit (TBIT ou Nominal Bit Time) qui nous permettra de
connaître le débit binaire (DBIT = 1 / TBIT).

Durée d'un bit

Figure 21 : Durée d'un bit

La durée d'un bit est constituée de 4 parties. Le temps de chacune des parties est définie par une
unité de temps appelée "Time Quantum"

| 15
Durée d'un bit

Sync_Seg Prop_Seg Phase_Seg1 Phase_Seg2

1 TQ 1 TQ - 8TQ 1 TQ - 8TQ 2TQ - 8TQ

Sampling Point

Figure 22 : Le 4 parties d'un temps bit

 Le segment de synchronisation : Il est utilisé pour valider le fait que les nœuds sont
synchronisés. En effet, une transition (début d’un bit) doit s’effectuer dans ce segment.

Bit émis par un nœud sur la ligne

Sync Prop Phase1 Phase2

Nœud synchronisé : Le front est dans le segment de synchronisation

Sync Prop Phase1 Phase2

Nœud en retard : le "Sampling Point" est décalé

Sync Prop Phase1 Phase2

Nœud en avance : le "Sampling Point" est décalé

Figure 23 : Synchronisation des nœuds

Un device base sa synchronisation sur le premier bit de trame (Bit de Start).

 Le segment de propagation : Il est utilisé pour compenser les phénomènes de temps de


propagation sur le bus.

Figure 24 : L'intérêt du "Propagation Segment"

| 16
Pour que la collision soit vue, il faut que TBIT soit supérieur au temps d'aller-retour sur le bus CAN.
Donc plus le réseau est grand, plus TBIT doit être grand, donc le débit faible :

Débit Longueur du réseau


1 Mbps 30 m
800 kbps 50 m
500 kbps 100 m
250 kbps 250 m
125 kbps 500 m
65.5 kbps 1000 m
20 kbps 2500 m
10 kbps 5000 m
Tableau 1 : Débit envisageable en fonction de la longueur du réseau.

 Les segments "phase1" et "phase2" : Ils sont utilisés pour compenser les
désynchronisations. Un rallongement ou raccourcissement (SJW : Synchronisation Jump
Width) de "Phase_Seg1" et "Phase_Seg2" permet de resynchroniser l’horloge, et
d’optimiser le point d’échantillonnage.
 Le point d’échantillonnage : C’est le point où la valeur du bit est lue sur le bus. Il est situé à
la fin du segment de "Phase_Seg1.

4.2.4 Format de la trame


Les identifiants peuvent être codés :

 Sur 11 bits (standard). Ex : CANopen


 Sur 29 bits (étendu). Ex : J1939

Figure 25 : Format de la trame standard (ID sur 11 bits)

| 17
Figure 26 : Format de la trame étendue (ID sur 29 bits)

Couche Application J1939 / CAN Open


Device NET
Couche Liaison Bus CAN
Couche physique

Figure 27 : Le modèle OSI et le bus CAN

4.3 Mise en œuvre sur microcontrôleur


4.3.1 Prérequis matériel
Pour pouvoir réaliser un bus CAN il faut :

4.3.2 Le Transceiver CAN


Le transceiver s'occupe de la couche physique du bus CAN, il transmet un signal différentiel avec les
bons niveaux de tension. Nous utiliserons le transceiver CAN SN65HVD230 (Texas Instrument)
fonctionnant en 3.3V.

Le transceiver CAN est relié au microcontrôleur par une interface série full duplex (D et R) et produit
les signaux différentiels CANH et CANL comme le montre la Figure 28.

| 18
Figure 28 : Diagramme de fonctionnement du Transceiver SN65HVD230

 R : Receive Data output => Rx CAN du microcontroller


 D : Transmit Data input => Tx CAN du microcontroller

4.3.3 Le contrôleur CAN du STM32 : bxCAN

Figure 29 : Le contrôleur CAN du STM32F446

L’intitulé Master / Slave signifie seulement que le contrôler CAN 1 (Master) doit obligatoirement
être actif si nous souhaitons utiliser le CAN 2 (Slave). En CAN, il n'y a pas de maître et pas d'esclave.

4.4 Le contrôleur CAN du STM32


4.4.1 Les modes d'opérations

4.4.2 Transmission

4.4.3 Réception :

| 19
4.4.4 Les filtres d'acceptance
Le module CAN regarde tous les messages circulant sur le bus. Parmi ces messages, certains
identifiants seront intéressants, d'autres non. Il n'est donc pas nécessaire de les stocker. Les 28
"filtres d'acceptances" du module CAN permettent de décrire la politique de sélection des trames.
Une fois accepté, le message est stocké dans la FIFO de réception, sinon il est ignoré.

 MaskIdHigh – MaskIdLow : Masque sur 32 bits, spécifiant les bits à analyser.


 FilterIdHigh – FilterIdLow : Valeur des identifiants qui seront acceptés. Seul les bits
démasqués par le MaskIdHigh et MaskIdLow seront analysés.

Figure 33 : Fonctionnement des "filtres d'acceptances" du contrôleur CAN


4.4.5 Mode de test
 Mode silencieux :
Ce mode permet de ne pas perturber le bus CAN

Transmission sur le bus CAN


Réception depuis le bus CAN
Réception de notre propre transmission

La transmission est désactivée donc aucune trame ne sort du contrôleur CAN. La raison pour laquelle
un rebouclage physique est réalisé (Tx sur Rx) est que le module CAN génère tout de même un
certain nombre de bits dominant en réaction au message reçu (ACK, Active error Fag, etc). Ceci lui
permet de ne pas perturber les validations des trames en vue d'un stockage dans les FIFO de
réception.

Figure 34 : Le contrôleur CAN en mode silencieux

 Le mode de Loopback :

| 20
Ce mode permet de ne pas être perturbé par le bus CAN.

Transmission sur le bus CAN


Réception depuis le bus CAN
Réception de notre propre transmission

Figure 35 : Le contrôleur CAN en mode Loopback

 Le mode Silencieux / Loopback :


Ce mode permet de ne pas perturber et de ne pas être perturbé par le bus CAN.

Transmission sur le bus CAN


Réception depuis le bus CAN
Réception de notre propre transmission

Figure 36 : Le contrôleur CAN en mode Silencieux / Loopback

4.5 Codage d’une application CAN


4.5.1 Configuration du bus CAN avec CubeMX
CubeMX nous propose les configurations suivantes pour le contrôleur CAN :

| 21
Figure 37 : Configuration CubeMX pour le bus CAN

La particularité de cette configuration est que :

 Synch_Seg est implicite car il est toujours de 1 Tq.


 "Time Quanta in Bit Segment 1" dans CubeMX correspond au Prop Seg + Phase Seg 1 de la
Figure 22.

4.5.2 Définition des valeurs de paramétrage


Il faut connaitre les besoins utilisateur :

 Quelle fréquence de bus souhaite on ?


Ceci est en fonction de la taille du réseau et du besoin en débit binaire.

 Quand souhaite-t-on avoir l'instant d'échantillonnage ?


Certaines normes de protocole incitent un instant d'échantillonnage précis (87.5% pour le CAN Open
par exemple). Sinon une valeur entre 75% et 90% est correcte.

 Quel degré de liberté donne-t-on pour les sauts de phase ?


Cela dépend de la précision des horloges des Devices sur le Bus CAN. Plus elles sont variables, plus
il faut augmenter la capacité à se resynchroniser et donc augmenter SJW.

4.5.3 Exemple de configuration


Nous nous fixons le cahier des charges suivant :

 Débit de 125 kbps


 87,5 %
 1 quantum par saut de phase

Nous cherchons à réaliser une configuration sous CubeMx dans le cas ou APB1 est à 42 Mhz.

 Soit y le nombre de "Tq in Bit Seg 1" (Prop_Seg + Phase_Seg 1)


 Soit z le nombre de "Tq in Bit Seg 2" (Phase_Seg 2)
 Soit x le nombre de Tq pour l'ensemble du TBIT.( x = 1 + y + z )

Respect de la norme :

8 < Nombre minimum pour l'ensemble du TBIT (x) < 25 [ Contrainte 1 ]

Respect du point d'échantillonnage :

| 22
1+𝑦𝑦
= 0.875 [Equation 1]
1+𝑦𝑦+𝑧𝑧

Respect du débit binaire :


1
𝑇𝑇𝑇𝑇 =
125000 ∗ 𝑥𝑥
Méthode :

1. Imposer des valeurs de z


2. En déduire la valeur de z [Equation 1]
3. En déduire la valeur de x
4. En déduire la valeur du Tq
5. En déduire la valeur du Prescaler de l'horloge du contrôleur CAN
6. Vérifier le calcul du point d'échantillonnage
7. Vérifier le calcul de la fréquence
8. Vérifier la contrainte sur x [ Contrainte 1 ]

Voir la méthode utilisée dans le fichier "Calcul configuration [Link]"


Calcul automatisé proposé par MikroC (Can Calculator)
Calcul en ligne : [Link]

4.5.4 Programmation
Les fonctions HAL pour STM32 disponibles sont les suivantes :

 Initialisation du Contrôleur CAN : Passage du mode Sleep ou mode Initialisation (Figure 30)
HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan)

 Configuration des "filtres d'acceptances" : Filtre On/OFF, Mask Mode ou ID Mode, Mask
value and ID value, Receive FIFO Number
CAN_FilterTypeDef myFilterConfig;
HAL_CAN_ConfigFilter(&hcan1, &myFilterConfig);

 Envoi d'un nouveau message : Ecrit dans la première Mailbox disponibles et envoie une
requête de transmission (voir ).
CAN_TxHeaderTypeDef myTxHeaderCan1;
HAL_CAN_AddTxMessage(&hcan1, &myTxHeaderCan1, txData, &txMailboxUsed);

 Attente d'un niveau de remplissage : Visualisation du compteur FMP (voir ) :


while(HAL_CAN_GetRxFifoFillLevel(&hcan1, CAN_RX_FIFO0) == 0);

 Lecture et libération d'une FIFO de réception : Les valeurs lues sont stockées dans des
variables du programme pour traitement.
CAN_RxHeaderTypeDef myRxHeaderCan1;

| 23
HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO0, &myRxHeaderCan1, rxData);

4.6 Application avec un inclinomètre de chez IFM Electronic

| 24

Vous aimerez peut-être aussi