/*FUNCTION********************************************************************** * * Function Name : LPSCI_HAL_Init * Description : This function initializes the module to a known state. * *END**************************************************************************/ void LPSCI_HAL_Init(uint32_t baseAddr) { HW_UART0_BDH_WR(baseAddr, 0U); HW_UART0_BDL_WR(baseAddr, 4U); HW_UART0_C1_WR(baseAddr, 0U); HW_UART0_C2_WR(baseAddr, 0U); HW_UART0_S2_WR(baseAddr, 0U); HW_UART0_C3_WR(baseAddr, 0U); HW_UART0_D_WR(baseAddr, 0U); #if FSL_FEATURE_LPSCI_HAS_ADDRESS_MATCHING HW_UART0_MA1_WR(baseAddr, 0U); HW_UART0_MA2_WR(baseAddr, 0U); #endif HW_UART0_C4_WR(baseAddr, 0U); #if FSL_FEATURE_LPSCI_HAS_DMA_ENABLE HW_UART0_C5_WR(baseAddr, 0U); #endif #if FSL_FEATURE_LPSCI_HAS_MODEM_SUPPORT HW_UART0_MODEM_WR(baseAddr, 0U); #endif #if FSL_FEATURE_LPSCI_HAS_IR_SUPPORT HW_UART0_IR_WR(baseAddr, 0U); #endif }
/*FUNCTION********************************************************************** * * Function Name : uart_hal_configure_interrupts * Description : Configure the UART module interrupts to enable/disable various interrupt sources. * This function allows the user to configure all of the UART interrupts with one function call. * The user will first need to initialize and pass in a structure of type uart_interrupt_config_t * which sets the configuration of each interrupt. * *END**************************************************************************/ void uart_hal_configure_interrupts(uint32_t uartInstance, const uart_interrupt_config_t * interruptConfig) { assert(uartInstance < UART_INSTANCE_COUNT); uint8_t temp; /* configure uart interrupt enables*/ #if FSL_FEATURE_UART_HAS_LOW_POWER_UART_SUPPORT if (uartInstance == 0) { /* 0 - disable interrupt, 1 - enable interrupt*/ /* UART BDH register */ temp = HW_UART0_BDH_RD() & ~(BM_UART0_BDH_LBKDIE|BM_UART0_BDH_RXEDGIE); temp |= BF_UART0_BDH_LBKDIE(interruptConfig->linBreakDetect) |BF_UART0_BDH_RXEDGIE(interruptConfig->rxActiveEdge); HW_UART0_BDH_WR(temp); /* UART C2 register */ temp = HW_UART0_C2_RD() & ~(BM_UART0_C2_TIE|BM_UART0_C2_TCIE|BM_UART0_C2_RIE| BM_UART0_C2_ILIE); temp |= BF_UART0_C2_TIE(interruptConfig->transmitDataRegisterEmpty) |BF_UART0_C2_TCIE(interruptConfig->transmitComplete) |BF_UART0_C2_RIE(interruptConfig->receiverDataRegisterFull) |BF_UART0_C2_ILIE(interruptConfig->idleLine); HW_UART0_C2_WR(temp); /* UART C3 register */ temp = HW_UART0_C3_RD() & ~(BM_UART0_C3_ORIE|BM_UART0_C3_NEIE|BM_UART0_C3_FEIE| BM_UART0_C3_PEIE); temp |= BF_UART0_C3_ORIE(interruptConfig->receiverOverrun) |BF_UART0_C3_NEIE(interruptConfig->noiseErrorFlag) |BF_UART0_C3_FEIE(interruptConfig->frameErrorFlag) |BF_UART0_C3_PEIE(interruptConfig->parityErrorFlag); HW_UART0_C3_WR(temp); } else #endif { /* 0 - disable interrupt, 1 - enable interrupt*/ /* UART BDH register */ temp = HW_UART_BDH_RD(uartInstance) & ~(BM_UART_BDH_LBKDIE|BM_UART_BDH_RXEDGIE); temp |= BF_UART_BDH_LBKDIE(interruptConfig->linBreakDetect) |BF_UART_BDH_RXEDGIE(interruptConfig->rxActiveEdge); HW_UART_BDH_WR(uartInstance, temp); /* UART C2 register */ temp = HW_UART_C2_RD(uartInstance) & ~(BM_UART_C2_TIE|BM_UART_C2_TCIE|BM_UART_C2_RIE| BM_UART_C2_ILIE); temp |= BF_UART_C2_TIE(interruptConfig->transmitDataRegisterEmpty) |BF_UART_C2_TCIE(interruptConfig->transmitComplete) |BF_UART_C2_RIE(interruptConfig->receiverDataRegisterFull) |BF_UART_C2_ILIE(interruptConfig->idleLine); HW_UART_C2_WR(uartInstance, temp); /* UART C3 register */ temp = HW_UART_C3_RD(uartInstance) & ~(BM_UART_C3_ORIE|BM_UART_C3_NEIE|BM_UART_C3_FEIE| BM_UART_C3_PEIE); temp |= BF_UART_C3_ORIE(interruptConfig->receiverOverrun) |BF_UART_C3_NEIE(interruptConfig->noiseErrorFlag) |BF_UART_C3_FEIE(interruptConfig->frameErrorFlag) |BF_UART_C3_PEIE(interruptConfig->parityErrorFlag); HW_UART_C3_WR(uartInstance, temp); #if FSL_FEATURE_UART_HAS_FIFO /* UART CFIFO register */ temp = HW_UART_CFIFO_RD(uartInstance) & ~(BM_UART_CFIFO_TXOFE|BM_UART_CFIFO_RXUFE); temp |= BF_UART_CFIFO_TXOFE(interruptConfig->txFifoOverflow) |BF_UART_CFIFO_RXUFE(interruptConfig->rxFifoUnderflow); HW_UART_CFIFO_WR(uartInstance, temp); #endif } }