![]() |
|
Introduction
|
|
|
|
3.1 Carte SJA1000-PPC.
3.2 Carte SLIO
| |||
3.1 Carte SJA1000-PPC | |||
|
Comme vu précédemment, le SJA1000 est un composant complet et assez simple d'emploi pour ajouter des fonctionnalités CAN à un système à base de microcontrôleur. Le 68HC912 de Motorola, intégrant un module CAN, n'étant pas encore au point, nous nous sommes tournés vers le PowerPC 403, dont la carte de développement existait déjà. La carte d'interface (wrappée) implémente la partie protocole CAN ainsi que
la couche physique de type bifilaire différentielle grâce au 82C250.
Les signaux de contrôle venant du PowerPC lors de cycles de lecture/écriture n'ont pas tout à fait le même format que ceux attendus par le SJA1000. La "glue logic" a été inclue dans un EPLD, ce qui permet une adaptation très simple à d'autres microcontrôleurs. Le choix des broches rend possible l'utilisation d'un PAL22V10 à la place de l'EP600.
3.1.2 UtilisationLes adresses et les données doivent être multiplexées sur le bus du SJA1000, c'est-à-dire que l'adresse est présentée en premier, puis ensuite viennent les données. La lecture d'un registre se fait alors en deux temps : écriture de l'adresse (avec le CS5 du PPC positionné), puis lecture des données (avec CS6). De même l'écriture se fera en deux fois.
3.1.2.1 Macros de lecture-écritureLa lecture et l'écriture dans les registres du SJA1000 ont été implémentées sous forme de macros (fichier rwsja.h)
3.1.2.2 Exemples d'utilisationwrsjai 0xDB,OUTPUT_CONTROLPour écrire 0xDB dans le registre OUTPUT_CONTROL wrsja r3,TX_DATAPour écrire l'octet de poids faible du registre r3 dans le registre TX_DATA rdsja STATUS,r3Pour lire le registre STATUS et placer le résultat sur l'octet de poids faible de r3 | |||
3.2 Carte SLIO | |||
3.2.1 DescriptionCette carte de démonstration est construite autour du SLIO (Serial Linked Input/Output) 82C150 de Philips. La configuration des entrées/sorties a été choisie de manière à donner une bonne idée des possibilités de ce SLIO. Elle a été développée et routée sous Protel.
Les 4 entrées digitales sont multiplexées avec les 4 bits d'ID, eux aussi déterminés avec des switches. C'est un EPLD qui assure le multiplexage, commandé par la pin 14 du SLIO (qui n'est donc plus disponible comme entrée/sortie). Les LEDs sont montées sur des connecteurs, ce qui permet d'utiliser ces sorties pour une autre utilisation. Une des entrées analogiques est utilisée par un potentiomètre, l'autre peut servir pour un retour tachymétrique (pour un asservissement de moteur), ou pour toute autre source de tension entre 0 et 5V. Le multiplexage des entrées analogiques (en interne) occupe malheureusement 3 broches supplémentaires (P14 à P16) comme l'indique le schéma. Enfin les sorties analogiques de type DPM (Discrete Pulse Modulation) sont amplifiées par des
buffers (7407) avant d'attaquer des transistors de puissance. L'emploi de
transistors PNP plutôt que NPN n'a pas de raison particulière, il est seulement dû à
l'approvisionnement.
Comme décrit dans la description du 82C150, il est nécessaire, pour que le SLIO reste calibré, de lui envoyer régulièrement un calibration message. Cette calibration doit se faire tous les 3000 à 8000 bit-times selon la documentation de Philips. Par exemple, pour un débit de 50 kbit/s, soit un bit-time de 20 us, 5000
bit-times durent un dixième de seconde. Notre gestion des calibrations est
décrite dans la partie Programmation PowerPC.
Il est tout d'abord nécessaire de configurer le registre OUTPUT_ENABLE des SLIOs. Sur la carte SLIO, étant donné les sorties utilisées, ce registre doit être mis à la valeur 0x3F90 (Pour effectuer cette affectation, voir le fichier slio.s) Une fois la configuration faite :
3.2.2.3 Lecture des entrés analogiques ou digitalesPour lire l'état des entrés digitales, il suffit de faire une lecture du registre DATA_INPUT Pour lire la valeur des ADCs, il faut configurer le registre ANALOG_CONFIGURATION (Pour effectuer cette configuration voir le fichier slio.s).
Ces valeurs spécifient à la fois la configuration interne des multiplexeurs internes du SLIO (pour "router" le signal jusqu'au module ADC), et la demande de conversion (bit 8) Une fois ces donnés reçues, le SLIO concerné effectue la conversion, et envoie une trame contenant le contenu de son registre ADC, c'est-à-dire le résultat de la conversion. Moins un appareil remplit de fonctions, plus il les remplira parfaitement.
Principe des Appareils Multifonctions. | |||