MICROPROCESSEURS
le bus CAN
communication de données futée
pour spécialiste (4e partie)
Une interface pour le
bus CAN, c’est bien,
mais un système doté
du bus CAN, c’est
mieux. Il faut donc
qu’elle serve effective-
ment de moyen de
communication avec
un microcontrôleur ou
un PC.
La fois dernière, nous
avons vu de quel
matériel nous devions
disposer ; aujour-
d’hui, parlons du logi-
ciel de commande qui
doit l’animer. Pour réaliser un système équipé du sera développé en fonction de l’usage
bus CAN, il nous faut à chaque station qui doit être fait du système : l’enregis-
CAN, outre l’interface de bus, au trement de résultats de mesure, la com-
moins un microcontrôleur muni du mande d’affichage, le transfert de don-
logiciel approprié. Lors de la mise en nées temporelles ou autres. Chaque sta-
service, des essais et au long du fonc- tion dispose ainsi d’un lot de logiciels
tionnement définitif, il nous faudra particuliers selon le travail qui lui sera
deux types de programmes : un logi- demandé. La somme de toutes ces
ciel de service et un autre centré sur le fonctions individuelles constituera alors
champ d’application spécifique (appli- l’ensemble de l’ouvrage que l’on sou-
cation software). haite forger autour du système de bus.
Le logiciel de service a pour mission de En d’autres termes, il s’agit de com-
vérifier le bon déroulement des tran- mander, réglementer et surveiller un
sactions entre l’interface de bus CAN et système dont les éléments sont diversi-
les systèmes à microcontrôleur respec- fiés et physiquement dispersés.
tifs. C’est lui qui nous renseignera sur
la collaboration avec le microcontrô- LE LOGICIEL
leur, l’efficacité matérielle et logicielle DE SERVICE
de l’interface et nous dira si les don- Lors de l’élaboration du programme à
nées transportées par le bus arrivent à l’usage du SJA 1000, le contrôleur de
bon port. Et il facilite ainsi la conversa- CAN, on part des mêmes règles de base
tion entre deux ou plusieurs partici- que pour tout périphérique.
Bernd vom Berg, Peter Groppe pants au bus. Le logiciel d’application 1. Le fonctionnement du SJA 1000 se
Elektor 12/99
62
Tableau 1
fonde sur une série de registres tion de puce pour le Les registres SFR à dans les feuillets de
internes à fonction particulière (SFR, contrôleur l’intérieur du caractéristiques et
pour Special Function Register) qu’il faut ➧ mettre à profit l’agen- SJA 1000, accessibles d’applications des cir-
programmer. cement de la structure en mode BasicCAN. cuits intégrés(1).
2. Ces SFR, le microcontrôleur les voit interne des registres
comme des positions de mémoire nor- particuliers de ce com- Détermination
male situées dans un domaine de posant de l’adresse de base de la puce
mémoire externe et dans lequel il peut ➧ rédiger sa routine d’initialisation de Chip Select Basis Address : c’est la pre-
à loisir écrire et lire des informations. base mière adresse à laquelle on peut
Le microcontrôleur ne se doute abso- ➧ rédiger la routine d’émission de don- joindre le circuit intégré. Comme le
lument pas qu’il travaille en réalité nées sur le bus CAN SJA 1000 en mode BasicCAN doit dis-
avec un contrôleur CAN. Aussi bien ➧ rédiger la routine de réception de poser d’un domaine d’adresses consé-
pour lui que pour le logiciel d’applica- données par le bus CAN. cutives de 32 octets, alors qu’en mode
tion, il s’agit simplement d’accéder à PeliCan, il lui en faut 128, on lui réserve
des adresses particulières d’une puce Nous allons maintenant, dans le cadre d’office les 128 octets, question d’éviter
de mémoire extérieure. Quand on écrit du mode BasicCAN, du moins, vous de se retrouver bridé, au cas où l’on
le logiciel de service pour le SJA 1000, il détailler quelque peu la marche à voudrait recourir ultérieurement au
y a lieu de résoudre les questions sui- suivre pour exécuter ces différents mode plus évolué. Pour activer le
vantes ou d’en adapter les modalités : points. Si des informations complé- SJA 1000, on place au niveau bas sa
mentaires plus pointues vous intéres- broche 4, appelée CS (Chip Select). Cela
➧ déterminer l’adresse de base de sélec- sent, elles sont aisément disponibles signifie que le système à microcontrô-
Elektor 12/99 63
Dans la suite de cet exemple, nous (fonctionnement normal)
1 considérerons que l’adresse de base est ➧ Read : il est possible de lire ce
toujours égale à F000H. registre, mais le résultat obtenu est
dénué de signification, le contenu
Aperçu obtenu sera toujours FFH.
de la structure interne des SFR ➧ Write : l’écriture dans ce registre est
Les SFR accessibles sur le SJA 1000 en impossible.
mode BasicCAN sont repris au
tableau 1. On gardera en mémoire que : Reset Mode (phase d’initialisation)
➧ Read : en lecture, on y trouve la
1. En première colonne, sous valeur du code du tamis d’entrée
ADRESSE CAN, se trouve l’adresse (acceptance filter).
interne de chacun des SFR, à ➧ Write : c’est le moyen d’y inscrire un
laquelle il convient d’additionner nouveau code de filtrage d’entrée.
l’adresse de base de la puce. Par
exemple, si vous désirez accéder au En clair, rien ne sert de s’occuper de ce
registre d’état (status register), SFR en mode normal, il n’aura d’utilité
l’adresse interne est 2, mais, de l’ex- pour nous que pendant un reset, mais
térieur, il faudra former le F002H. il travaille dès ce moment en mode
C’est cette valeur qu’il s’agit donc normal suivant les valeurs qui y ont été
d’inscrire dans votre programme si transcrites en phase d’initialisation.
vous voulez écrire ou lire des don-
nées dans le registre d’état. Le Rédaction
registre de division d’horloge (clock de la routine d’initialisation générale
divider register), dans le même ordre Avant de commencer à composer cette
d’idées, se trouve à l’adresse F01FH, routine, il est utile de jeter un coup
le résultat de la somme F000H + d’oeil plus appuyé dans la documenta-
3110, car il ne faut pas oublier que tion du SJA 1000, en particulier dans la
nous travaillons ici dans deux bases note d’application AN97076,
différentes ! p. 23 sqq(1). Le constructeur, Philips, y
2. La deuxième colonne distribue les fournit un ordinogramme amplement
SFR en trois groupes : le contrôle, commenté en vue du développement
l’émission (transmit buffer) et la récep- réussi de cette initialisation (figure 1).
tion (receive buffer).
3. Le SJA 1000 connaît deux modes de Rédaction
fonctionnement à sélectionner par le de la routine d’émission de données
logiciel : Comme nous l’avons déjà répété, le
contrôleur CAN SJA 1000 prend à sa
a) le mode d’opération (operating charge 99 % de la tâche « d’expédition
mode), sous lequel il travaille du courrier ». Pour transmettre des
normalement ; données sous forme d’octets sur le bus
CAN, il y a quatre opérations néces-
b) l’initialisation (reset mode), saires :
déclenchée par une mise à zéro
matérielle ou l’introduction du ➧ fournir au SJA 1000 le bon identifica-
bit reset dans le control register. teur d’objet pour la trame à envoyer,
L’une ou l’autre de ces actions ➧ déclarer combien d’octets on enverra
interrompt immédiatement le (entre 0 et 8),
travail normal de la puce. ➧ spécifier s’il s’agit d’une trame RTR
(remote transmission request) ou non,
On doit activer ce mode si l’on veut ➧ écrire les octets du message propre-
réaliser l’initialisation de départ du ment dit dans le tampon d’émission
SJA 1000, parce que certains para- du SJA 1000.
Figure 1. L’ordino- mètres ne peuvent pas subir de
gramme d’initialisa- modification pendant le fonctionne- Il n’en faut pas davantage ! Le reste de
tion du SJA 1000. ment normal. Pour y parvenir, on la besogne, le contrôleur CAN s’en
active donc le bit reset, la puce fait occupe lui-même d’initiative ; ainsi,
une pause, on change les paramètres c’est lui qui
voulus, puis on désactive ce bit de
leur doit s’arranger, lorsqu’il pointe mise à zéro. Après quoi, la puce se ➧ remplira la totalité du « formulaire »
vers une adresse dans ce bloc de 128 remet à l’ouvrage avec les nouveaux prescrit,
octets, pour fournir simultanément un paramètres. ➧ calculera la somme de contrôle CRC,
niveau bas sur la broche 8 du connec- 4. Les colonnes trois et quatre indi- ➧ complétera les autres champs du
teur K3, de manière à ce que le trans- quent, outre la fonction des registres, message,
fert de données avec le contrôleur la signification de leur contenu en ➧ demandera la communication sur le
CAN soit pris en compte. La première lecture et en écriture, dans le mode bus (arbitrage)
adresse du domaine se nomme Chip de fonctionnement actif. ➧ émettra la trame
Select Basis Address du SJA 1000. Si le 5. Dans les colonnes cinq et six, on ➧ recherchera les erreurs éventuelles,
microcontrôleur lance une adresse trouve les mêmes données en mode etc.
située quelque part dans ce bloc, il aura reset. Prenons un exemple, le SFR qui
la possibilité d’écrire un octet dans un porte l’adresse 4 : Du registre d’état, l’utilisateur et donc
des SFR du SJA 1000. Operating mode le programme d’application ne reçoi-
64 Elektor 12/99
vent que des réponses à propos du bon
(ou du mauvais) déroulement de
l’émission, en vue de pouvoir réagir
2
comme il se doit.
Rédaction
de la routine de réception de données
Côté réception de données, le contrô-
leur CAN prend aussi la situation à
bras-le-corps, si bien que tout se passe
automatiquement.
Le SJA 1000 nettoie les trames reçues,
soumet les informations utiles à la
détection d’erreur et au tamis de fil-
trage d’entrée dans son tampon d’en-
trée (RXFIFO est une pile directe, une
mémoire à file d’attente : premier
arrivé, premier servi), comme on le voit
à la figure 2.
Si le tamis est désactivé, tous les mes-
sages qui se présentent sont exploités.
Au sein du RXFIFO (voir le tableau 1
aux adresses 20 à 29), sont entreposées
les données suivantes :
➧ l’identificateur de trame, Figure 2. La structure
➧ le bit RTR, lette du logiciel d’ap- de la mémoire de microcontrôleur rapide
➧ la longueur du champ de données plication. réception. et un logiciel capable de
DLC Une fois la lecture du suivre.
➧ les octets utiles. message terminée
dans les délais, ce même logiciel Si malgré les précautions le RXFIFO
Comme le tampon RXFIFO fait tout d’application doit en aviser le contrô- atteint la saturation, le SJA 1000 le noti-
juste 64 octets, il va de soi que le leur CAN, qui va alors libérer la fie par le bit d’erreur approprié situé
nombre de messages que l’on peut y fenêtre de réception pour y glisser le dans le registre d’état, c’est le data over-
stocker sous ce format intermédiaire message suivant, en provenance du run status bit. Dans cette situation, le
dépend de la longueur des trames, en RXFIFO et ainsi de suite. message en cours, qui a provoqué le
particulier de la longueur des champs débordement et aurait dû se trouver
de données. Il y a encore deux points dignes dans le RXFIFO, est complètement
Le domaine du tampon de réception d’intérêt. effacé et donc perdu.
accessible à l’utilisateur, la fenêtre de 990066-3
réception (receive buffer window), qui ➧ Après la lecture d’une trame ou d’un
correspond, dans le tableau 1, aux message, la fenêtre du tampon de
adresses 20 à 29, va être l’objet de toute réception doit impérativement être
notre attention, parce que le contenu démobilisée tout de suite par une Dans l’espoir de vous éviter la corvée de
du RXFIFO y est à disposition. Chaque commande release receiver buffer, de programmer tout ceci vous-même, la pro-
ensemble de données apparaît dans façon à ce que le SJA 1000 puisse y chaine édition du magazine vous proposera
ces adresses et peut être lu et exploité placer les informations suivantes. En un logiciel de service complet en Pascal,
par le logiciel d’application. cas d’oubli, le même message y res- doté de moyens de contrôle et d’expérimen-
En cours de réception, la communica- tera coincé et il ne sera plus possible tation de toutes les fonctions principales
tion entre le SJA 1000 et le système à d’obtenir les données d’autres d’un bus CAN. Nous avons choisi un
microcontrôleur peut s’opérer de deux trames reçues. 80C537 comme microcontrôleur. À côté de la
manières différentes : ➧ Sous un trafic intense de trames, soit mono-carte (Euro) pour 80C537 parue
à cause d’un haut débit binaire, soit dans le numéro de juin 97 d’Elektor, il est
➧ par gestion d’interruption ; quand le parce que de nombreux messages se possible de réaliser une version plus petite
SJA 1000 a reçu un message complet succèdent, le risque existe que le et plus économique de platine, que nous
sans faute, il peut, par le biais de la RXFIFO déborde, si les données n’en préparons fiévreusement pour la prochaine
broche 16 (INT), provoquer une sont pas extraites suffisamment vite. parution, elle s’appelle déjà la mono-carte
interruption sur le microcontrôleur. La seule solution, c’est d’adopter un «537-Lite».
Celui-ci a dès lors la faculté de réagir
immédiatement à l’arrivée des don-
nées et, ne perdant qu’un minimum
de temps, les extraire du contrôleur
CAN. Littérature
➧ par interrogation répétitive (polling) ;
le microcontrôleur appelle à qui (1) Le contrôleur de bus CAN et le trancepteur en circuits intégrés chez Philips.
mieux mieux le registre d’état du Aujourd’hui, il n’est plus nécessaire d’acheter un gros bouquin de « data sheets »,
SJA 1000 pour y scruter le bit d’état pour n’en consulter qu’une ou deux. Les caractéristiques et documentations
du tampon de réception (receive buf- nécessaires sont disponibles sur le site Internet du fabricant :
fer status bit). Aussitôt qu’il le voit se
[Link]
lever, ce qui signifie qu’au moins une
trame a été reçue correctement, il lit [Link]
le message et le traite, sous la hou-
Elektor 12/99 65