IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Communication SPI avec un écran LCD - eDIPTFT43


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Communication SPI avec un écran LCD - eDIPTFT43
    Bonjour à tous,

    voilà, je suis étudiant en électronique et je dois réaliser une communication en SPI avec un écran LCD tactile : eDIPTFT43 (Datasheet).

    J'ai actuellement essayé d'envoyé une ligne de code simple en c grâce à mon microcontroleur C8051F320. les configuration d'initialisation du SPI :
    - mode maître
    - clock = 100 KHz
    - clock au repos à '0' et actif sur le flanc montant
    - mode 4 fils en maître unique
    - état de départ du NSS : '1'

    J'ai donc branché l'écran en tant que tel :
    pin 6-9 à mon micro (miso, mosi, clk, ss)
    pin 5 : reset au +5
    pin 10 : à la masse, MSB first
    pin 11 : à la masse, SPI mode
    pin 14 : à la masse, clk au repos à 0
    pin 15 : à la masse, actif sur le flanc montant

    le reste n'as pas besoin d'être connecté pour mon utilisation.

    voici le code que j'utilise pour écrire et recevoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    void Write_LCD (unsigned char *donnee, unsigned char longueur)
    {
       unsigned char bcc, i;
     
       NSSMD0 = 0;          // NSS utilisé comme commande du CS
     
    // WRITE _____________________________________________________
       while (!TXBMT);         // attente buffer vide
       SPI0DAT = DC1;          // envoi DC1 (buffer d'envoie)
       while (!SPIF);          // attente de la fin de l'envoi
       SPIF = 0;               // reset flag
       bcc = DC1;
     
       while (!TXBMT);         // attente buffer vide
       SPI0DAT = longueur;     // envoi la longueur des data
       while (!SPIF);          // attente de la fin de l'envoi
       SPIF = 0;               // reset flag
       bcc = bcc + longueur;
     
       for (i=0; i < longueur; i++)
       {
          while (!TXBMT);         // attente buffer vide
          SPI0DAT = donnee[i];    // envoi des donnée
          while (!SPIF);          // attente de la fin de l'envoi
          SPIF = 0;               // reset flag
          bcc = bcc+donnee[i];
       } 
     
       while (!TXBMT);         // attente buffer vide
       SPI0DAT = bcc;          // envoi du BCC
       while (!SPIF);          // attente de la fin de l'envoi
       SPIF = 0;               // reset flag 
     
       while (!TXBMT);         // attente buffer vide
       SPI0DAT = 0x00;         // envoi rien, juste pour la lecture
       while (!SPIF);          // attente de la fin de l'envoi
       SPIF = 0;               // reset flag
     
       NSSMD0 = 1;          // NSS utilisé comme commande du CS
    la transmission se fait très bien, j'arrive à lire ma commande grâce à l'oscilloscope, MAIS je ne recois jamais de bonne réponse de la port de mon slave.

    Oscillograme :
    http://www.hostingpics.net/viewer.ph...377scope10.png
    sd : donnée série qui sont lue, ma trame de commande
    d0 : CLK
    d1 : MOSI
    d2 : MISO
    3 : SS

    Le miso devrait me renvoyé le caractère x06 à la fin de la trame(ACK), mais il envoit des chose aléatoire tous le temps...

    je sais plus trop quoi faire, j'ai peut-être loopé quelque chose, merci si vous arrivez à m'aider, cela ne doit pas être évident ^^. Bonne journée.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Bonjour,

    Comment la CLOCK est gérée ?

    As-tu vu :
    "Read operation: to read data (e.g. the "ACK" byte) a
    dummy byte (e.g . 0xFF) need to be sent.
    Note that the EA eDIP for internal operation does need
    a short time before providing the data; therefore a short
    pause of min. 6µs (no activity of CLK line) is needed for
    each byte"

    Ou un problème dans l'acquisition de MISO ?

    Bonne journée et bonne chance.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Le clock est generé par le clock du uC à 100k Hz.

    et oui, j'ai vu, il donne en exemple 0xFF, mais j'utilise 0x00 (à la fin de mon code copier), j'esserai avec 0xFF dés que je serais en Labo

    Ce que je comprend pas avec le miso, c'est qu'il envoie des chose "aléatoirement", mon oscillogramme s'affiche pas, je vais essayé de régler ca.

    merci.

Discussions similaires

  1. [Écran] Utiliser un écran LCD avec une console Wii ?
    Par kenjiendo dans le forum Périphériques
    Réponses: 0
    Dernier message: 31/10/2013, 18h59
  2. Réponses: 3
    Dernier message: 02/05/2008, 15h54
  3. communication avec un afficheur lcd et analogique
    Par tapha dans le forum Delphi
    Réponses: 8
    Dernier message: 19/12/2006, 18h53
  4. Temps de calcul avec deux écrans
    Par Shaga dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/11/2005, 09h24
  5. Communication RS232 avec un PIC via delphi
    Par JeanPh dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 09/08/2004, 22h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo