I an facing problem with the working of UART4. UART1 is working fine but UART4 is working half the baud rate with the same configuration as UART1. Can anyone help me why this is happening or solution to correct it? Below is the configuration setting written in code for UART1 and UART4.
/* UART1 configuration*/
void config_UART1(void)
{
uart_config_t config1;
UART_GetDefaultConfig(&config1);
config1.baudRate_Bps = UART1_BAUDRATE; //baud rate=115200
config1.enableTx = true;
config1.enableRx = true;
UART_Init(UART_1, &config1, CLOCK_GetFreq(UART1_CLKSRC));
UART_TransferCreateHandle(UART_1, &uart1Handle, UART1_UserCallback, NULL);
/* Enable RX interrupt. */
UART_EnableInterrupts(UART_1, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable);
EnableIRQ(UART1_IRQn);
}
void UART1_IRQHandler(void)
{
uint8_t data1;
/* If new data arrived. */
if ((kUART_RxDataRegFullFlag | kUART_RxOverrunFlag) & UART_GetStatusFlags(UART_1))
{
data1 = UART_ReadByte(UART_1);
/* If Uart1_Buffer is not full, add data to Uart1_Buffer */
if (((rxIndex1 + 1) % Uart1_BUFFER_SIZE) != txIndex1)
{
Uart1_Buffer[rxIndex1] = data1;
UART_WriteByte(UART_1, Uart1_Buffer[rxIndex1]);
rxIndex1++;
rxIndex1 %= Uart1_BUFFER_SIZE;
}
}
}
/************************************************************************************************************************/
/*UART4 Configuration*/
void config_UART4(void)
{
uart_config_t config4;
UART_GetDefaultConfig(&config4);
config4.baudRate_Bps = UART4_BAUDRATE; Baud rate=115200
config4.enableTx = true;
config4.enableRx = true;
UART_Init(UART_4, &config4, CLOCK_GetFreq(UART4_CLKSRC));
UART_TransferCreateHandle(UART_4, &uart4Handle, UART4_UserCallback, NULL);
/* Enable RX interrupt. */
UART_EnableInterrupts(UART_4, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable);
EnableIRQ(UART4_IRQn);
}
void UART4_IRQHandler(void)
{
uint8_t data4;
/* If new data arrived. */
if ((kUART_RxDataRegFullFlag | kUART_RxOverrunFlag) & UART_GetStatusFlags(UART_4))
{
data4 = UART_ReadByte(UART_4);
/* If Uart4_Buffer is not full, add data to Uart4_Buffer. */
if (((rxIndex4 + 1) % Uart4_BUFFER_SIZE) != txIndex4)
{
Uart4_Buffer[rxIndex4] = data4;
UART_WriteByte(UART_4, Uart4_Buffer[rxIndex4]);
rxIndex4++;
rxIndex4 %= Uart4_BUFFER_SIZE;
}
}
}