UART Transmission-reception Pic32mx
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

UART Transmission-reception Pic32mx



  1. #1
    armand25

    UART Transmission-reception Pic32mx


    ------

    Bonjour,

    J'ai actuellement un gros problème car je n'arrive pas à gérer la communication UART.

    J'affecte un tableau de 8 valeurs : data[8] que j'écris dans UART2 Tx. Cependant à l'oscilloscope quand je me met sur le port UAR2 Tx j'obtient une trame mais celle ci ne correspond pas à ce que j'ai configuré.

    De plus est ce qu'avec se code je pourrai récupérer une trame d'une longueur d'1 octet émis sur UART2 Rx que je stocke dans le tableau de Rx_data ?

    Si j'ai bien compris je ne peux pas transmettre une trame de plus d'1 octet de long en 1 fois par UART ? Si je veux transmettre un message plus long comment faire ?

    Voyez vous quelque chose d'incohérent dans le code ?


    Est ce que je dois gérer des interruptions pour emettre une trame ou recevoir une trame sur mes ports UART2.


    #pragma config FPLLMUL = MUL_18, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
    #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2

    #define SYSCLK (72000000)
    #define PBCLK (SYSCLK/2)

    #define DESIRED_BAUDRATE (9600) //The desired BaudRate

    // calculate actual BAUD generate value.
    #define BAUD_VALUE ((PBCLK/16/DESIRED_BAUDRATE)-1)

    //-----------------Fonction principale--------------------------
    int main(void)
    {
    unsigned int data[8]={1,0,0,0,1,0,1,0}; //trame a transmettre par UART
    unsigned int Rx_data[8]; //trame dans lequel on va sauvegarder les valeurs recu sur le port UART Rx




    // Configure the device for maximum performance.
    // This macro sets flash wait states, PBCLK divider and DRM wait states based on the specified
    // clock frequency. It also turns on the cache mode if avaialble.
    // Based on the current frequency, the PBCLK divider will be set at 1:2. This knoweldge
    // is required to correctly set UART baud rate, timer reload value and other time sensitive
    // setting.
    SYSTEMConfigPerformance(SYSCLK );


    // Open UART2 with Receive and Transmitter enable.
    OpenUART2(UART_EN, UART_RX_ENABLE | UART_1STOPBIT | UART_TX_ENABLE, BAUD_VALUE);



    putsUART2("*** UART Simple Application Example ***\r\n");
    putsUART2("*** Type some characters and observe echo and RA7 LED toggle ***\r\n");

    while(1)
    {
    while(DataRdyUART2()); /* Wait for data in the UARTRx. */

    Rx_data[8] = (int)ReadUART2(); /* Read data from Rx. */



    while(BusyUART2()); /* Wait till the UART transmitter is free. */
    putcUART2(data[8]); /* Write data into Tx. */
    };
    }

    -----

  2. #2
    kronanberg

    Re : UART Transmission-reception Pic32mx

    Salut !

    Tu veux transmettre un tableau contenant 8 valeurs binaires à travers la liaison UART. Le plus simple dans ton cas est de transmettre directement l'octet contenant les 8 valeurs binaires ???

    Au lieu de "unsigned int data[8]={1,0,0,0,1,0,1,0}" tu transmet

    unsigned char data = 0x8A; // (0b10001010)

    Comme ça quand tu vas observer à l'oscilloscope tu verras bien ta trame ce transmettre.

    Sinon pour réceptionner des trames c'est plus propre d'utiliser l'interruption ça t'évite de faire un pulling bloquant (c'est à dire de bloquer ton processeur et d'attendre que ta donnée arrive).

    A+

  3. #3
    micka_ch

    Re : UART Transmission-reception Pic32mx

    Bonjour,

    D'après ton code j'en déduis que la fonction "putsUART2" permet d'envoyer un string (tableau de caractères) et la fonction "putcUART2" permet d'envoyer un caractère (un octet).

    Donc comme le dit kronanberg si tu veux envoyer une donnée codé sur 8bits tu fais

    Code:
    unsigned char  dataout = 0x8A, datain;
    unsigned char  s1[6]={"SALUT"};
    
    //Envoi d'une données
    putcUART2(dataout);
    
    //Envoi d'une chaîne de caractères
    putsUART2(s1);
    
    //Réception d'une donnée
    datain=ReadUART2();

  4. #4
    RISC

    Re : UART Transmission-reception Pic32mx

    Salut Armand,

    Tu trouveras tout un tas d'exemples de code pour les périphérisues PIC32 ici : http://www.microchip.com/codeexamples
    Utilises-tu une version v2.XX du compilateur C32 ?

    J'ai remarqué que tes bits de configuration sont prévus pour 72MHz. Les PIC32 fonctionnent jusqu'à 80MHz ;=)
    Tu peux modifier comme suit le début de ton programme en supposant que ton quartz est un 8MHz :
    Code:
    #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
    #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2
    
    #define SYSCLK (80000000)
    Tu trouveras le détail des librairies périphériques dans ce manuel :
    c:\Program Files (x86)\Microchip\mplabc32\v2.02 \doc\Microchip-PIC32MX-Peripheral-Library.chm
    et
    c:\Program Files (x86)\Microchip\mplabc32\v2.02 \doc\pic32-lib-help\UART-PLIB-Help.chm

    a+

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

    Re : UART Transmission-reception Pic32mx

    Citation Envoyé par kronanberg Voir le message
    Salut !

    Au lieu de "unsigned int data[8]={1,0,0,0,1,0,1,0}" tu transmet

    unsigned char data = 0x8A; // (0b10001010)

    Sinon pour réceptionner des trames c'est plus propre d'utiliser l'interruption ça t'évite de faire un pulling bloquant (c'est à dire de bloquer ton processeur et d'attendre que ta donnée arrive).

    A+
    Merci pour l'information, oui je veux transmettre un octet codé d'une certaine manière. J'ai donc essayé de transmettre directement l'octet cependant je n'obtient maintenant plus rien sur le port de transmission. Dans mon programme j'utilise uniquement les fonctions dans PIC32_Peripheral_lib. Vois tu un autre réglage que j'aurai oublié de faire ?

  7. #6
    armand25

    Re : UART Transmission-reception Pic32mx

    Oui j'utilise la version 2.02. Merci pour les librairies périphériques et pour l'aide cependant je n'arrive malheureusement toujours pas a faire ce que je veux mais je vous tient au courant pour de futurs précisions.

  8. #7
    RISC

    Re : UART Transmission-reception Pic32mx

    Salut,

    Quel modèle de PIC32 utilises-tu ??

    Quelle carte utilises-tu ?
    Peux-tu faire voir ton schéma électronique si c'est ta carte ou donner un lien ?

    Il faut parfois faire attention au choix des librairies qui dépendent du modèle du PIC car les pérpihériques peuvent être un peu différents.
    Il existe donc parfois différentes librairies pour le même périphérique et il faut choisir celle qui est opérationnelle sur ton modèle.

    a+

  9. #8
    armand25

    Re : UART Transmission-reception Pic32mx

    Salut,

    C'est un pic : p32mx360f512l
    J'utilise une carte pic32 starter kit.

    http://www.microchip.com/stellent/id...cName=en532453
    http://ww1.microchip.com/downloads/e...Doc/61159B.pdf

  10. #9
    RISC

    Re : UART Transmission-reception Pic32mx

    Salut,

    La carte PIC32 Starter kit ne possède pas de connecteur UART. Comment as-tu connecté ton UART ?
    As-tu ajouté une carte électronique à l'extérieur ? Peux-tu montrer le schéma de ta carte ?

    a+

  11. #10
    armand25

    Re : UART Transmission-reception Pic32mx

    Salut,

    Ma carte pic32 starter kit est muni d'une carte I/O expansion board. Ma carte vient se pluggé sur la carte d'expansion.
    http://www.microchip.com/stellent/id...cName=en535444
    http://ww1.microchip.com/downloads/e...Doc/51950A.pdf

    Toutes les pins du pic32 sont reportées sur la carte d'expansion de manière à tester plus facilement.

Discussions similaires

  1. Transmission série uart
    Par invite708db27a dans le forum Électronique
    Réponses: 2
    Dernier message: 06/06/2011, 16h23
  2. Transmission flottant et entier sur UART
    Par kronanberg dans le forum Électronique
    Réponses: 5
    Dernier message: 03/06/2010, 11h58
  3. pic24 et UART, la reception ne marche pas ??
    Par nordiste dans le forum Électronique
    Réponses: 19
    Dernier message: 28/05/2010, 08h42
  4. Problème de transmission par UART sur PIC 18F
    Par netdefense dans le forum Électronique
    Réponses: 2
    Dernier message: 18/03/2010, 08h34
  5. Problème réception UART (C8051F310)
    Par invite0282e56d dans le forum Électronique
    Réponses: 0
    Dernier message: 23/02/2010, 10h59
Découvrez nos comparatifs produits sur l'informatique et les technologies.