Interfacage 8051/SJA1000
Discussion fermée
Affichage des résultats 1 à 3 sur 3

Interfacage 8051/SJA1000



  1. #1
    invitec0743b89

    Unhappy Interfacage 8051/SJA1000


    ------

    Bonjour,

    Pour un projet scolaire, je dois interfacer un SJA1000 (contrôleur de bus CAN) avec une carte de développement Cygnal contenant un coeur Intel 8051. Le SJA1000 est quant à lui disposé sur une carte annexe que nous avons développé et qui est pluggée sur le connecteur 64 broches de la carte de développement.

    J'utilise l'IDE Silabs avec le compilateur Keil.

    Mon problème se situe au niveau des fonctions pour écrire et lire dans les registres du SJA1000. Ce composant dispose d'un bus d'adresse/données multiplexé, et il faut donc écrire d'abord l'adresse, puis la donnée. J'ai suivi les chronogrammes décrits dans le datasheet du SJA1000, puis pour tester j'écris une valeur dans un registre, je le relis et je visualise la valeur lue sur le debugger.

    Timings
    Chronogrammes en lecture
    Chronogrammes en écriture

    Voici le code de mes fonctions de lecture/écriture :
    Code:
    void write_SJA1000 (unsigned char adresse , unsigned char donnee)
    {
        ALE=1 ;
        SJA_AD_BUS=adresse ;
        ALE=0 ;
        CS=0 ;
        WR=0 ;
        SJA_AD_BUS=donnee ;
        WR=1 ;
        CS=1 ; 
    }
    
    void read_SJA1000 (unsigned char adresse , unsigned char *donnee)
    {
        ALE=1 ;
        SJA_AD_BUS=adresse ;
        ALE=0 ;
        SJA_AD_BUS=0xFF ;
        CS=0 ;
        *donnee=SJA_AD_BUS ;
        RD=0 ;
        RD=1 ;
        CS=1 ;
        SJA_AD_BUS=0xFF ;
    }
    Ici les différentes déclarations :
    Code:
    #define SJA_AD_BUS   P3
    
    sbit ALE=P2^4 ;    //pin 4 du port 2
    sbit CS=P2^5 ;     //pin 5 du port 2
    sbit WR=P2^6 ;    //pin 6 du port 2
    sbit RD=P2^7 ;    //pin 7 du port 2
    
    ...
    
    //Initialisations
    SJA_AD_BUS=0xFF ;
    CS=1 ;
    WR=1 ;
    RD=1 ;
    ALE=0 ;
    Et enfin le morceau de code dans lequel je teste mes fonctions :
    Code:
    unsigned char reg=0 ;
    
    ...
    
    write_SJA1000 (BTR0 , 0x81) ;				 
    delai_us (100) ;
    read_SJA1000 (BTR0 , &reg) ;
    Ici BTR0 est l'un des 2 registres permettant de configurer le débit sur le bus CAN, mais j'aurai pu tester avec n'importe quel autre registre...

    Le problème est donc que la valeur que je lis dans reg via le debugger ne correspond pas à la valeur écrite précédemment. Je précise que nous avons testé avec un multimètre les 8 bits du port reliant le 8051 au SJA afin de vérifier que nous avions les bons niveaux logiques, ce n'est donc pas un problème hardware.

    Je pense donc que à un problème d'interprétation des chronogrammes, pourtant ça à l'air de bien correspondre, mais même avec les rares morceaux de code que j'ai trouvé sur internet ça ne marche pas...

    Pour finir voici le schéma de notre carte :



    Merci d'avance.

    -----

  2. #2
    invitec0743b89

    Re : Interfacage 8051/SJA1000

    up please...

  3. #3
    invitec0743b89

    Re : Interfacage 8051/SJA1000

    Up........

Discussions similaires

  1. Interfaçage mosfet et pic
    Par mdiabolo dans le forum Électronique
    Réponses: 24
    Dernier message: 09/04/2011, 18h05
  2. Interfacage de l'accéléromètre ADXL323
    Par invite0eecb5e2 dans le forum Électronique
    Réponses: 15
    Dernier message: 02/03/2008, 06h41
  3. interfaçage
    Par invite6cdc1de9 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 20/05/2007, 19h53
  4. Interfaçage via USB
    Par cyrilsat dans le forum Électronique
    Réponses: 2
    Dernier message: 27/03/2007, 16h31
  5. Interfaçage Graphique en C
    Par invite288b2cdd dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 28/12/2006, 00h00
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...