2016-06-06 14 views
1

Я новичок в системе MPLAB X Harmony, а также в работе с микроконтроллерами. Я работаю над PIC32MZ2048ECH144. Я хотел передать простую строку с помощью USART и увидеть ее на терминале RealTerm. (Я также пробовал HyperTerminal.) Какую бы ни строку я отправлял, я вижу только отображаемые символы нежелательной почты. Когда я просматривал решение этой проблемы с отображением нежелательных символов, были предложения по проверке скорости передачи. Я установил скорость передачи в 9600 в MPLab Harmony Configurator (Опции -> Конфигурация Harmony Framework -> Драйверы -> USART -> USART Driver Instance 0 -> Baud Rate -> 9600). Поэтому я использовал следующую строку в app.c, чтобы явно установить скорость передачи (PBCLK - 100 МГц). Но не повезло! PLIB_USART_BaudRateSet (USART_ID_2, 100000000, 9600); Код для app.c файла:PIC32MZ2048ECH144 USART- Переданные переданные символы

/******************************************************************************* 
    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 
    */ 

Я сожалею, что я не могу прикрепить изображение на выходе я получаю в RealTerm, как у меня нет достаточного количества очков. Я понятия не имею, где еще проблема может быть, что дает несоответствие скорости в бодах. Любые подсказки или помощь будут очень полезны. Заранее спасибо. Прошу прощения за любые ошибки в сообщении.

ответ

0

Вы правы, что это, скорее всего, показатель BAUD, но просто чтобы убедиться, что USART подключен к компьютеру? У вас есть чип переводчика, так как компьютер ожидает +5 В? Что касается BAUD, проверьте свою схему синхронизации и знайте, что PBCLK иногда является DIV_2 SYSCLOCK. В структуре Harmony есть отличная схема синхронизации, чтобы дважды проверить ваши часы и прагмы CONFIG.

+0

Привет, bismit5728 .. Благодарим вас за ответ. Я использую кабель CH340 и USB mini для подключения моего USART к ПК. Я понял вопрос и да, вы правы. Ошибка, которую я совершил, была связана с схемой синхронизации. POSCMOD, который дал проблему, был HS. Я изменил его на EC, после чего я мог правильно видеть переданные символы. –

 Смежные вопросы

  • Нет связанных вопросов^_^