Я новичок в системе 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, как у меня нет достаточного количества очков. Я понятия не имею, где еще проблема может быть, что дает несоответствие скорости в бодах. Любые подсказки или помощь будут очень полезны. Заранее спасибо. Прошу прощения за любые ошибки в сообщении.
Привет, bismit5728 .. Благодарим вас за ответ. Я использую кабель CH340 и USB mini для подключения моего USART к ПК. Я понял вопрос и да, вы правы. Ошибка, которую я совершил, была связана с схемой синхронизации. POSCMOD, который дал проблему, был HS. Я изменил его на EC, после чего я мог правильно видеть переданные символы. –