Have you try to disable the UART2_C2[TIE] and UART2_C2[TCIE] and then read the data from UAT2_D reg?
void UART2_handler(void)
{
if((UART2_S1 & UART_S1_RDRF_MASK)) //Receive buffer is full,read D reg.
{
rx_buffer = UART2_D;
}
}
And make sure you are not using '38.5.6 Loop operation' mode.

I test the uart interrupt demo in SDK_2.2_FRDM-KL27Z with FRDM-KL27Z board. (...SDK_2.2_FRDM-KL27Z\boards\frdmkl27z\driver_examples\uart\interrupt)

I can read the data from UAT2_D reg after I send data using UART Terminal port.

You can download and test that demo in SDK_2.2_MKL17Z.

Best Regards,
Robin
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------