2016-06-06 27 views
1

Ich bin neu in MPLAB X Harmony Framework und auch in der Arbeit mit Mikrocontrollern. Ich arbeite an PIC32MZ2048ECH144. Ich wollte eine einfache Zeichenfolge mit USART übertragen und sehen, dass es in RealTerm-Terminal angezeigt wird. (Ich habe HyperTerminal auch versucht.) Welche Zeichenfolge ich auch sende, sehe ich nur Junk-Zeichen angezeigt. Als ich nach der Lösung für dieses Problem der Anzeige von Junk-Zeichen suchte, gab es Vorschläge zur Überprüfung der Baud-Rate. Ich habe die Baudrate im MPLab Harmony Configurator auf 9600 eingestellt (Optionen -> Harmony Framework Konfiguration -> Treiber -> USART -> USART Driver Instance 0 -> Baud Rate -> 9600). Also habe ich die folgende Zeile in app.c verwendet, um die Baudrate explizit einzustellen (PBCLK ist 100MHz). Aber kein Glück! PLIB_USART_BaudRateSet (USART_ID_2, 100000000, 9600); Der Code für app.c Datei:PIC32MZ2048ECH144 USART- Junk-Zeichen übertragen

/******************************************************************************* 
    Start of File 
    */ 
    const char *string1 = "*** UART Interrupt-driven Application Example ***\r\n"; 
    const char *string2 = "*** Type some characters and observe the LED turn ON ***\r\n"; 


    APP_DATA appData = 
    { 
    }; 

    APP_DRV_OBJECTS appDrvObject; 

    void APP_Initialize (void) 
    { 
     appData.state = USART_ENABLE; 
     appData.InterruptFlag = false; 
    } 

    bool WriteString(void) 
    { 
     if(*appData.stringPointer == '\0') 
     { 
      return true; 
     } 

     while (PLIB_USART_TransmitterIsEmpty(USART_ID_1)) 
     { 
      PLIB_USART_TransmitterByteSend(USART_ID_1, *appData.stringPointer); 
      appData.stringPointer++; 
      if(*appData.stringPointer == '\0') 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

    bool PutCharacter(const char character) 
    { 
     if(PLIB_USART_TransmitterIsEmpty(USART_ID_1)) 
     { 
      PLIB_USART_TransmitterByteSend(USART_ID_1, character); 
      return true; 
     } 
     else 
      return false; 
    } 

    void APP_Tasks (void) 
    { 
     /* check the application state*/ 
     switch (appData.state) 
     { 
      case USART_ENABLE: 
       /* Enable the UART module*/ 
       PLIB_USART_BaudRateSet(USART_ID_1, 100000000 ,9600); 
       PLIB_USART_Enable(USART_ID_1); 
       appData.stringPointer = string1; 
       appData.state = USART_TRANSMIT_FIRST_STRING; 
       break; 

      case USART_TRANSMIT_FIRST_STRING: 
       if(true == WriteString()) 
       { 
        appData.state = USART_TRANSMIT_SECOND_STRING; 
        appData.stringPointer = string2; 
       } 
       break; 

      case USART_TRANSMIT_SECOND_STRING: 
       if(true == WriteString()) 
       { 
        appData.state = USART_RECEIVE_DONE; 
       } 
       break; 

      case USART_RECEIVE_DONE: 
       if (appData.InterruptFlag) 
       { 
        if(true == PutCharacter(appData.data)) 
        { 
         appData.InterruptFlag = false; 
        } 
       } 
       break; 

      default: 

       while (1); 

     } 

    } 

    /******************************************************************************* 
    End of File 
    */ 

Es tut mir leid, dass ich nicht das Bild des Ausgangs anschließen kann ich in Realterm erhalten, ich habe nicht genug Punkte. Ich habe keine Ahnung, wo sonst das Problem sein könnte, dass die Baudrate nicht übereinstimmt. Hinweise oder Hilfe wären sehr hilfreich. Danke im Voraus. Bitte entschuldigen Sie mich für etwaige Fehler in der Post.

Antwort

0

Sie sind richtig, dass es höchstwahrscheinlich BAUD-Rate ist, aber nur um sicher zu sein, wie ist der USART an den Computer angeschlossen? Haben Sie einen Übersetzer-Chip, da der Computer + -5V erwartet? Wie für die BAUD, überprüfen Sie Ihr Taktschema und wissen, dass PBCLK manchmal DIV_2 der SYSCLOCK ist. Im Harmony-Framework gibt es einen großen Taktschaltplan, um Ihre Clocking- und CONFIG-Pragmas zu überprüfen.

+0

Hallo bismit5728 .. danke für Ihre Antwort .. Ich benutze CH340 und USB-Mini-Kabel, um meine USART mit dem PC zu verbinden. Ich habe das Problem herausgefunden und ja, Sie haben Recht. Der Fehler, den ich gemacht hatte, war mit dem Taktschema. Das POSCMOD, das das Problem ergab, war HS. Ich habe es in EC geändert, nach dem ich die übertragenen Zeichen richtig sehen konnte. –