My init code:
USART_GetDefaultConfig(&config);
config.baudRate_Bps = 115200;
config.enableTx = true;
config.enableRx = true;
config.enableHardwareFlowControl = true;
USART_Init(USART_MASTER, &config, USART_MASTER_CLK_FREQ);
/* Create UART handle. */
USART_TransferCreateHandle(USART_MASTER, &pUart->uartHandle, USART_UserCallback, pPal);
USART_TransferStartRingBuffer(USART_MASTER, &pUart->uartHandle, pUart->rxRingBuf, USART_CIRC_BUFF_SIZE);
pUart->sendXfer.data = pUart->tx_buf;
pUart->sendXfer.dataSize = sizeof(pUart->tx_buf);
pUart->receiveXfer.data = pUart->rx_buf;
pUart->receiveXfer.dataSize = PERODIC_HEAD_LEN;
pUart->rxOnGoing = true;
USART_TransferReceiveNonBlocking(USART_MASTER, &pUart->uartHandle, &pUart->receiveXfer, &bytesToReceive);
My receive code:
size_t rbLen = USART_TransferGetRxRingBufferLength(&pUart->uartHandle);
if(rbLen > 0){
pUart->receiveXfer.dataSize = rbLen;
USART_TransferReceiveNonBlocking(USART_MASTER, &pUart->uartHandle, &pUart->receiveXfer, &bytesToReceive);
if(bytesToReceive == rbLen){
circRxBuff.write(pUart->receiveXfer.data, pUart->receiveXfer.dataSize);
}
}
}