[Numérique] Switch d'horloge SPI
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Switch d'horloge SPI



  1. #1
    scaypapa

    Switch d'horloge SPI


    ------

    Bonjour,
    Je suis désolé mais je ne parviens pas à trouver de réponse dans la doc de Microchip.
    J'utilise un PIC18F26K22 pour discuter avec une carte SD et d'autres périphériques en SPI.
    La carte SD semble mal supporter de communiquer au-dessus de 4MHz, ce qui n'est pas le cas pour les autres.
    Avec le PLL activé, le PIC tourne à 64MHz sur un quartz externe. J'ai donc écrit :
    Code:
    if (OSCCON2bits.PLLRDY) SSP1CON1 = 0x21;    // passage à Fosc/16 = 4MHz
    /* commandes vers la carte
    ................
    ................
    */
    SSP1CON1 = 0x20;    // retour à la vitesse normale (Fosc/4 = 16MHz avec PLL)
    Mais il semble qu'une fois sur 2, la communication se passe mal et je n'ai pas trouvé d'information dans la doc sur le temps de passage d'une vitesse à l'autre en SPI.
    J'imagine que la meilleure solution serait d'utiliser les 2 ports disponibles et de leur donner 2 vitesses différentes. Mais pour comprendre ce qui est en jeu, j'aimerai bien savoir exactement pourquoi mon code ne fonctionne pas. Est-ce que c'est le temps de passage d'une vitesse à l'autre qui pose problème, le PLL qui donne une fréquence trop instable ou encore autre chose ?
    Merci pour vos conseils.

    -----
    Dernière modification par scaypapa ; 20/03/2018 à 11h24.

  2. #2
    invited14ca340

    Re : Switch d'horloge SPI

    Bonjour,

    L'idée de changer le prescaler du module SPI est bonne, par contre il faudrait un peu plus de détail sur la façon de faire. Vous faites le changement à la volée?
    Je n'ai pas de quoi tester, mais à mon avis il faut le faire sous forme d'initialisation du module SPI :
    - désactiver le module
    - désactiver l'interruption si il y en avait une
    - initialiser les registres de transmission/réception
    - remettre à 0 le flag d'interruption
    - remplir les registres de configuration (dont le prescaler)
    - activer l'interruption (si nécessaire)
    - activer le module

    De plus je ne pense pas qu'il soit nécessaire de vérifier l'état de la PLL à ce niveau du code. Normalement cette vérification se fait lors de l'initialisation de l'oscillateur, avec éventuellement un retour d'erreur. Une fois que la PLL est stabilisée il n'y a pas de raison apparente qu'elle s'arrête.

  3. #3
    paulfjujo

    Re : Switch d'horloge SPI

    bonjour,

    à verfiier si la PLL ne peut s'activer que pour Fosc >= 8MHz
    nota: il y a 2 SPI sur ce MCU

  4. #4
    paulfjujo

    Re : Switch d'horloge SPI

    Apres verif .. si 4MHZ est aussi OK pour le choix avec PLL.
    sur d'autres MCU c'est 8MHz le mini

    en utilisant FOSC interne :
    et en laissant OSCTUNE.PLLEN=1 ; toujours active
    mais
    OSCCON=0x50; 4MHz
    ou
    OSCCON=0x70 ; 16MHz
    suivi d'un while (OSCCON.HFIOFS==0); // wait stable oscillator
    car la PLL sera forcément perturbé par le changement de FOSC en entree

  5. A voir en vidéo sur Futura
  6. #5
    invited14ca340

    Re : Switch d'horloge SPI

    Sauf erreur de ma part, la PLL et l'oscillateur sont configurés pour une fréquence Fosc de 64MHz. On n'y touche pas.

    La configuration du baudrate se fait avec les bits SSPxM<3:0> du registre SSPxCON1 (p.254) qui n'agit que sur le module SPI, donc nul besoin de reconfigurer la PLL.
    C'est bien ce que fait scaypapa dans son programme, mais on ne sait pas ce qui est fait avant ni après ses deux lignes de programme.
    La méthode que je décrivais me paraît logique pour initialiser ou reconfigurer un périphérique avec le détail des étapes à suivre, mais je n'ai pas le matériel pour tester donc je ne peux confirmer que c'est juste.

  7. #6
    paulfjujo

    Re : Switch d'horloge SPI

    Citation Envoyé par naru2to Voir le message
    Sauf erreur de ma part, la PLL et l'oscillateur sont configurés pour une fréquence Fosc de 64MHz. On n'y touche pas.
    La configuration du baudrate se fait avec les bits SSPxM<3:0> du registre SSPxCON1 (p.254) qui n'agit que sur le module SPI, donc nul besoin de reconfigurer la PLL. .
    C'est tout à fait cela..
    je viens juste de l'experimenter !
    J'ai un LCD en SPI .. avec FOSC interne 32MHz
    j'utilisais SPI1_Init() de MikroC

    .. et voulant utiliser FOSC=64MHz (soit 16MhzxPLL)
    le LCD ne peut plus suivre la cadence..
    j'ai donc choisi une autre fonction MikroC :
    Code:
     SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV16, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
    qui permet de ralentir le SPI .. dans un rapport de 4,16 ou 64
    L'affichage LCD est OK !

    confirmation inverse avec
    Code:
    SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
    le LCD est dans les choux

    ce qui revient au meme que :
    Code:
    SPI1_Init();
    //   SSP1CON1=SSP1CON1 & 0xF0;   // Fosc/4  <- valeur par defaut   LCD BAD at 64MHz
    SSP1CON1=(SSP1CON1 & 0xF0) | 1 ; // FOSC/16   LCD OK at 64MHz

  8. #7
    scaypapa

    Re : Switch d'horloge SPI

    Merci beaucoup pour vos réponses.
    Je crois donc en effet que mon problème vient d'ailleurs.
    Par contre de mon côté, aucun problème à faire tourner le LCD en SPI à 16MHz (16MHz*4 avec PLL et horloge SPI réglée à Fosc/4). Il suit très bien le mouvement.

Discussions similaires

  1. Une horloge est-ce un instrument de mesure comme les autres ? Qu'est-ce qu'une horloge ?
    Par invite6949d091 dans le forum Epistémologie et Logique (archives)
    Réponses: 62
    Dernier message: 28/02/2017, 12h17
  2. Synchronisation entre horloge atomique et horloge d'un récepteur GPS
    Par invite0e188b54 dans le forum Électronique
    Réponses: 10
    Dernier message: 06/12/2012, 23h56
  3. Switch ou mini switch?
    Par inviteb85ec0d9 dans le forum Électronique
    Réponses: 2
    Dernier message: 28/12/2009, 12h58
  4. Utilisation de switch avec un autre switch
    Par invitef69a6111 dans le forum Électronique
    Réponses: 0
    Dernier message: 02/10/2009, 19h10
  5. Avantage d'une horloge à quartz par rapport à l'horloge système ?
    Par invitea29b3af3 dans le forum Électronique
    Réponses: 11
    Dernier message: 01/06/2009, 11h47
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...