38 #ifndef LPUART_HAL_H__
39 #define LPUART_HAL_H__
54 #define LPUART_SHIFT (16U)
55 #define LPUART_BAUD_REG_ID (1U)
56 #define LPUART_STAT_REG_ID (2U)
57 #define LPUART_CTRL_REG_ID (3U)
58 #define LPUART_DATA_REG_ID (4U)
59 #define LPUART_MATCH_REG_ID (5U)
60 #define LPUART_MODIR_REG_ID (6U)
61 #define LPUART_FIFO_REG_ID (7U)
62 #define LPUART_WATER_REG_ID (8U)
213 unsigned idleLineType : 1;
215 unsigned rxWakeIdleDetect : 1;
314 #if FEATURE_LPUART_HAS_ADDRESS_MATCHING
320 #if FEATURE_LPUART_FIFO_SIZE > 0U
333 #if defined(__cplusplus)
434 uint32_t sourceClockInHz,
435 uint32_t desiredBaudRate);
449 #ifdef DEV_ERROR_DETECT
450 DEV_ASSERT((baudRateDivisor < 0x1FFFU) && (baudRateDivisor > 1U));
452 uint32_t baudRegValTemp;
454 baudRegValTemp = base->
BAUD;
458 base->
BAUD = baudRegValTemp;
461 #if FEATURE_LPUART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT
479 #ifdef DEV_ERROR_DETECT
482 uint32_t baudRegValTemp;
484 baudRegValTemp = base->
BAUD;
487 base->
BAUD = baudRegValTemp;
491 #if FEATURE_LPUART_HAS_BOTH_EDGE_SAMPLING_SUPPORT
596 return &(base->
DATA);
630 #if FEATURE_LPUART_HAS_DMA_ENABLE
712 volatile uint8_t * dataRegBytes = (
volatile uint8_t *)(&(base->
DATA));
713 dataRegBytes[0] = data;
752 *readData = (uint8_t)base->
DATA;
851 uint32_t ctrlRegValTemp;
853 ctrlRegValTemp = base->
CTRL;
856 base->
CTRL = ctrlRegValTemp;
873 uint32_t ctrlRegVal = base->
CTRL;
922 return (((base->
DATA >> LPUART_DATA_NOISY_SHIFT) & 1U) > 0U);
1230 uint32_t baudRegValTemp;
1232 baudRegValTemp = base->
BAUD;
1235 base->
BAUD = baudRegValTemp;
1303 #if FEATURE_LPUART_HAS_MODEM_SUPPORT
1404 #if FEATURE_LPUART_FIFO_SIZE > 0U
1456 #ifdef DEV_ERROR_DETECT
1459 uint32_t fifoRegValTemp;
1461 fifoRegValTemp = base->
FIFO;
1464 base->
FIFO = fifoRegValTemp;
1513 #ifdef DEV_ERROR_DETECT
1516 DEV_ASSERT(txWater < ((uint8_t)(1U << (txFifoSize + 1U))));
1518 uint32_t waterRegValTemp;
1520 waterRegValTemp = base->
WATER;
1523 base->
WATER = waterRegValTemp;
1542 #ifdef DEV_ERROR_DETECT
1545 DEV_ASSERT(rxWater < ((uint8_t)(1U << (rxFifoSize + 1U))));
1547 uint32_t waterRegValTemp;
1549 waterRegValTemp = base->
WATER;
1552 base->
WATER = waterRegValTemp;
1557 #if FEATURE_LPUART_HAS_IR_SUPPORT
1574 #if defined(__cplusplus)
static bool LPUART_HAL_IsReceiveBufferEmpty(const LPUART_Type *base)
Checks whether the receive buffer is empty.
#define LPUART_FIFO_RXIDEN_MASK
#define LPUART_STAT_TDRE_SHIFT
#define LPUART_STAT_RDRF_SHIFT
static void LPUART_HAL_SetTxRtsCmd(LPUART_Type *base, bool enable)
Enable/Disable the transmitter request-to-send.
#define LPUART_STAT_MA1F_SHIFT
#define LPUART_MODIR_TXRTSPOL_MASK
#define LPUART_DATA_R9T9(x)
static void LPUART_HAL_SetWaitModeOperation(LPUART_Type *base, lpuart_operation_config_t mode)
Configures the LPUART operation in wait mode (operates or stops operations in wait mode)...
#define LPUART_BAUD_BOTHEDGE_MASK
#define LPUART_FIFO_RXFE_SHIFT
#define LPUART_CTRL_WAKE_MASK
#define LPUART_MODIR_TXCTSSRC_SHIFT
#define LPUART_STAT_FE_SHIFT
void LPUART_HAL_Putchar9(LPUART_Type *base, uint16_t data)
Sends the LPUART 9-bit character.
#define LPUART_CTRL_WAKE_SHIFT
static void LPUART_HAL_SetIdleChar(LPUART_Type *base, lpuart_idle_char_t idleConfig)
Configures the number of idle characters.
#define LPUART_STAT_BRK13_MASK
static void LPUART_HAL_SetSendMsbFirstCmd(LPUART_Type *base, bool enable)
LPUART sends the MSB first configuration.
#define LPUART_MODIR_TXCTSC_SHIFT
#define LPUART_WATER_TXWATER_MASK
#define LPUART_DATA_IDLINE_SHIFT
#define LPUART_DATA_R9T9_MASK
void LPUART_HAL_SendDataPolling(LPUART_Type *base, const uint8_t *txBuff, uint32_t txSize)
Send out multiple bytes of data using polling method.
static bool LPUART_HAL_IsTxDmaEnabled(const LPUART_Type *base)
Gets the LPUART DMA request configuration.
status_t LPUART_HAL_SetReceiverInStandbyMode(LPUART_Type *base)
Places the LPUART receiver in standby mode.
#define LPUART_DATA_FRETSC_MASK
#define LPUART_BAUD_OSR_MASK
static void LPUART_HAL_QueueBreakField(LPUART_Type *base)
LPUART transmit sends break character configuration.
#define LPUART_STAT_LBKDE_SHIFT
#define LPUART_STAT_LBKDE_MASK
#define LPUART_BAUD_RESYNCDIS_MASK
#define LPUART_CTRL_TIE_SHIFT
static bool LPUART_HAL_IsCurrentDataWithParityError(const LPUART_Type *base)
Checks whether the current data word was received with parity error.
static lpuart_idle_char_t LPUART_HAL_GetIdleChar(const LPUART_Type *base)
Gets the number of idle characters for IDLE flag.
#define LPUART_BAUD_REG_ID
#define LPUART_FIFO_TXFLUSH_MASK
static lpuart_wakeup_method_t LPUART_HAL_GetReceiverWakeupMode(const LPUART_Type *base)
Gets the LPUART receiver wakeup method from standby mode.
#define LPUART_STAT_RAF_SHIFT
#define LPUART_FIFO_REG_ID
#define LPUART_BAUD_LBKDIE_SHIFT
#define LPUART_FIFO_RXIDEN_WIDTH
#define LPUART_FIFO_TXOFE_SHIFT
static bool LPUART_HAL_IsCurrentDataWithFrameError(const LPUART_Type *base)
Checks whether the current data word was received with frame error.
status_t LPUART_HAL_ReceiveDataPolling(LPUART_Type *base, uint8_t *rxBuff, uint32_t rxSize)
Receive multiple bytes of data using polling method.
#define LPUART_CTRL_ORIE_SHIFT
#define LPUART_BAUD_SBNS_SHIFT
lpuart_break_char_length_t
LPUART break character length settings for transmit/detect.
#define LPUART_DATA_REG_ID
#define LPUART_WATER_RXWATER_MASK
#define LPUART_CTRL_DOZEEN_MASK
#define LPUART_MODIR_RXRTSE_MASK
#define FEATURE_LPUART_FIFO_REG_FLAGS_MASK
void LPUART_HAL_SetParityMode(LPUART_Type *base, lpuart_parity_mode_t parityModeType)
Configures parity mode in the LPUART controller.
#define LPUART_WATER_RXWATER(x)
#define LPUART_BAUD_RXEDGIE_SHIFT
lpuart_status_flag_t
LPUART status flags.
#define LPUART_CTRL_RE_MASK
static void LPUART_HAL_SetTxCtsCmd(LPUART_Type *base, bool enable)
Enable/Disable the transmitter clear-to-send.
#define LPUART_STAT_MSBF_MASK
#define LPUART_FIFO_TXFIFOSIZE_SHIFT
#define LPUART_STAT_RXINV_SHIFT
#define LPUART_CTRL_ILIE_SHIFT
static lpuart_operation_config_t LPUART_HAL_GetWaitModeOperation(const LPUART_Type *base)
Gets the LPUART operation in wait mode.
#define LPUART_CTRL_MA1IE_SHIFT
#define LPUART_STAT_OR_SHIFT
#define FEATURE_LPUART_STAT_REG_FLAGS_MASK
#define LPUART_FIFO_TXFE_MASK
static void LPUART_HAL_SetCtsSource(LPUART_Type *base, lpuart_cts_source_t source)
Transmits the CTS source configuration.
#define LPUART_CTRL_TCIE_SHIFT
static void LPUART_HAL_SetRxIdleEmptyDuration(LPUART_Type *base, uint8_t duration)
Enables the assertion of RDRF when the receiver is idle.
#define LPUART_STAT_NF_SHIFT
#define LPUART_STAT_REG_ID
#define LPUART_CTRL_PEIE_SHIFT
#define LPUART_CTRL_RE_SHIFT
#define LPUART_CTRL_FEIE_SHIFT
#define LPUART_FIFO_RXUF_SHIFT
static void LPUART_HAL_SetBreakCharTransmitLength(LPUART_Type *base, lpuart_break_char_length_t length)
LPUART break character transmit length configuration.
lpuart_singlewire_txdir_t
LPUART single-wire mode TX direction.
#define LPUART_CTRL_NEIE_SHIFT
#define LPUART_BAUD_BOTHEDGE_SHIFT
static void LPUART_HAL_SetTxWatermark(LPUART_Type *base, uint8_t txWater)
Sets the tx watermark.
#define FEATURE_LPUART_FIFO_SIZE
static bool LPUART_HAL_IsRxDmaEnabled(const LPUART_Type *base)
Gets the LPUART DMA request configuration.
bool LPUART_HAL_GetIntMode(const LPUART_Type *base, lpuart_interrupt_t intSrc)
Returns LPUART module interrupts state.
lpuart_match_config_t
LPUART Configures the match addressing mode used.
#define LPUART_MODIR_TXCTSSRC_MASK
#define LPUART_STAT_BRK13_SHIFT
static void LPUART_HAL_SetBreakCharDetectLength(LPUART_Type *base, lpuart_break_char_length_t length)
LPUART break character detect length configuration.
#define LPUART_CTRL_IDLECFG(x)
lpuart_idle_char_t
LPUART Configures the number of idle characters that must be received before the IDLE flag is set...
#define LPUART_STAT_RXEDGIF_SHIFT
#define LPUART_BAUD_SBNS_MASK
#define LPUART_CTRL_REG_ID
#define LPUART_FIFO_RXFLUSH_MASK
#define LPUART_BAUD_RDMAE_SHIFT
#define LPUART_CTRL_IDLECFG_MASK
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
static void LPUART_HAL_SetBothEdgeSamplingCmd(LPUART_Type *base, bool enable)
Configures the LPUART baud rate both edge sampling.
#define LPUART_STAT_TC_SHIFT
#define LPUART_FIFO_TXFE_SHIFT
void LPUART_HAL_SetInfrared(LPUART_Type *base, bool enable, lpuart_ir_tx_pulsewidth_t pulseWidth)
Configures the LPUART infrared operation.
#define LPUART_BAUD_TDMAE_SHIFT
#define LPUART_STAT_MSBF_SHIFT
#define LPUART_CTRL_MA2IE_SHIFT
#define LPUART_BAUD_OSR(x)
lpuart_parity_mode_t
LPUART parity mode.
void LPUART_HAL_SetSingleWireCmd(LPUART_Type *base, bool enable)
Configures the LPUART single-wire operation (enable/disable single-wire mode).
#define LPUART_MODIR_TXRTSPOL_SHIFT
static void LPUART_HAL_FlushRxFifoBuffer(LPUART_Type *base)
Flush rx FIFO buffer.
lpuart_bit_count_per_char_t
LPUART number of bits in a character.
#define FEATURE_LPUART_HAS_ADDRESS_MATCHING
#define LPUART_CTRL_TE_SHIFT
static void LPUART_HAL_SetTxDmaCmd(LPUART_Type *base, bool enable)
Configures DMA requests.
#define LPUART_STAT_PF_SHIFT
#define LPUART_BAUD_MATCFG_MASK
#define LPUART_BAUD_RDMAE_MASK
#define LPUART_STAT_IDLE_SHIFT
static void LPUART_HAL_SetOversamplingRatio(LPUART_Type *base, uint32_t overSamplingRatio)
Sets the LPUART baud rate oversampling ratio.
static bool LPUART_HAL_GetRxDataPolarity(const LPUART_Type *base)
Returns whether the receive data is inverted or not.
static void LPUART_HAL_SetTxdirInSinglewireMode(LPUART_Type *base, lpuart_singlewire_txdir_t direction)
Configures the LPUART transmit direction while in single-wire mode.
#define LPUART_STAT_RXINV_MASK
static void LPUART_HAL_SetRxFIFOCmd(LPUART_Type *base, bool enable)
Enable/Disable the receiver FIFO.
static bool LPUART_HAL_IsReceiverInStandby(const LPUART_Type *base)
Checks whether the LPUART receiver is in a standby mode.
#define LPUART_FIFO_TXOF_SHIFT
#define LPUART_MODIR_TXCTSE_SHIFT
static bool LPUART_HAL_IsCurrentDataWithNoise(const LPUART_Type *base)
Checks whether the current data word was received with noise.
#define LPUART_STAT_MA2F_SHIFT
lpuart_cts_source_t
LPUART Transmits the CTS Configuration. Configures the source of the CTS input.
Structure for idle line configuration settings.
static void LPUART_HAL_SetTransmitterCmd(LPUART_Type *base, bool enable)
Enable/Disable the LPUART transmitter.
#define LPUART_CTRL_RWU_SHIFT
static void LPUART_HAL_Putchar(LPUART_Type *base, uint8_t data)
Sends the LPUART 8-bit character.
#define LPUART_CTRL_RWU_MASK
static void LPUART_HAL_SetReceiveResyncCmd(LPUART_Type *base, bool enable)
LPUART enable/disable re-sync of received data configuration.
static void LPUART_HAL_PutReceiverInNormalMode(LPUART_Type *base)
Places the LPUART receiver in a normal mode.
lpuart_wakeup_method_t
LPUART wakeup from standby method constants.
#define LPUART_WATER_TXWATER(x)
static void LPUART_HAL_SetTxRtsPolarityMode(LPUART_Type *base, bool polarity)
Configures the transmitter RTS polarity.
static void LPUART_HAL_SetCtsMode(LPUART_Type *base, lpuart_cts_config_t mode)
Transmits the CTS configuration.
static void LPUART_HAL_SetTxSpecialChar(LPUART_Type *base, uint8_t specialChar)
Indicates a special character is to be transmitted.
void LPUART_HAL_SetLoopbackCmd(LPUART_Type *base, bool enable)
Configures the LPUART loopback operation (enable/disable loopback operation)
void LPUART_HAL_SetMatchAddressReg1(LPUART_Type *base, bool enable, uint8_t value)
Configures address match register 1.
#define LPUART_FIFO_RXIDEN(x)
status_t LPUART_HAL_ClearStatusFlag(LPUART_Type *base, lpuart_status_flag_t statusFlag)
LPUART clears an individual status flag.
#define LPUART_MODIR_TXRTSE_SHIFT
#define LPUART_MODIR_TXRTSE_MASK
#define LPUART_CTRL_TXDIR_MASK
void LPUART_HAL_Getchar9(const LPUART_Type *base, uint16_t *readData)
Gets the LPUART 9-bit character.
lpuart_ir_tx_pulsewidth_t
LPUART infra-red transmitter pulse width options.
#define LPUART_MODIR_TXCTSE_MASK
#define LPUART_CTRL_TE_MASK
#define LPUART_CTRL_IDLECFG_SHIFT
lpuart_operation_config_t
LPUART operation configuration constants.
static bool LPUART_HAL_GetReceiverCmd(const LPUART_Type *base)
Gets the LPUART receiver enabled/disabled configuration.
void LPUART_HAL_Getchar10(const LPUART_Type *base, uint16_t *readData)
Gets the LPUART 10-bit character.
status_t LPUART_HAL_SetBaudRate(LPUART_Type *base, uint32_t sourceClockInHz, uint32_t desiredBaudRate)
Configures the LPUART baud rate.
static bool LPUART_HAL_WasPreviousReceiverStateIdle(const LPUART_Type *base)
Checks whether the previous BUS state was idle before this byte is received.
#define LPUART_BAUD_MATCFG(x)
static void LPUART_HAL_SetReceiverWakeupMode(LPUART_Type *base, lpuart_wakeup_method_t method)
Sets the LPUART receiver wakeup method from standby mode.
#define LPUART_STAT_LBKDIF_SHIFT
void LPUART_HAL_SetMatchAddressReg2(LPUART_Type *base, bool enable, uint8_t value)
Configures address match register 2.
#define LPUART_DATA_RXEMPT_SHIFT
static void LPUART_HAL_SetRxRtsCmd(LPUART_Type *base, bool enable)
Enable/Disable the receiver request-to-send.
static void LPUART_HAL_SetReceiverCmd(LPUART_Type *base, bool enable)
Enable/Disable the LPUART receiver.
#define LPUART_BAUD_RESYNCDIS_SHIFT
void LPUART_HAL_Putchar10(LPUART_Type *base, uint16_t data)
Sends the LPUART 10-bit character (Note: Feature available on select LPUART instances).
#define LPUART_FIFO_RXFIFOSIZE_MASK
#define LPUART_BAUD_TDMAE_MASK
static void LPUART_HAL_SetBaudRateDivisor(LPUART_Type *base, uint32_t baudRateDivisor)
Sets the LPUART baud rate modulo divisor.
void LPUART_HAL_SetBitCountPerChar(LPUART_Type *base, lpuart_bit_count_per_char_t bitCountPerChar)
Configures the number of bits per character in the LPUART controller.
#define LPUART_DATA_FRETSC_SHIFT
#define LPUART_FIFO_RXFE_MASK
static void LPUART_HAL_FlushTxFifoBuffer(LPUART_Type *base)
Flush tx FIFO buffer.
static bool LPUART_HAL_GetTransmitterCmd(const LPUART_Type *base)
Gets the LPUART transmitter enabled/disabled configuration.
void LPUART_HAL_SetIntMode(LPUART_Type *base, lpuart_interrupt_t intSrc, bool enable)
Configures the LPUART module interrupts.
bool LPUART_HAL_GetStatusFlag(const LPUART_Type *base, lpuart_status_flag_t statusFlag)
LPUART get status flag.
static void LPUART_HAL_SetRxDmaCmd(LPUART_Type *base, bool enable)
Configures DMA requests.
#define LPUART_DATA_PARITYE_SHIFT
lpuart_cts_config_t
LPUART Transmits CTS Source.Configures if the CTS state is checked at the start of each character or ...
#define LPUART_FIFO_RXUFE_SHIFT
static void LPUART_HAL_SetStopBitCount(LPUART_Type *base, lpuart_stop_bit_count_t stopBitCount)
Configures the number of stop bits in the LPUART controller.
#define LPUART_DATA_FRETSC(x)
static void LPUART_HAL_SetTxFIFOCmd(LPUART_Type *base, bool enable)
Enable/Disable the transmitter FIFO.
static const volatile void * LPUART_HAL_GetDataRegAddr(const LPUART_Type *base)
Get LPUART tx/rx data register address.
lpuart_stop_bit_count_t
LPUART number of stop bits.
#define LPUART_MODIR_RXRTSE_SHIFT
void LPUART_HAL_SetIdleLineDetect(LPUART_Type *base, const lpuart_idle_line_config_t *config)
LPUART idle-line detect operation configuration.
#define LPUART_FIFO_RXFIFOSIZE_SHIFT
static void LPUART_HAL_SetMatchAddressMode(LPUART_Type *base, lpuart_match_config_t config)
Configures match address mode control.
#define LPUART_CTRL_DOZEEN_SHIFT
void LPUART_HAL_Init(LPUART_Type *base)
Initializes the LPUART controller.
#define LPUART_FIFO_TXFIFOSIZE_MASK
#define LPUART_CTRL_RIE_SHIFT
#define LPUART_DATA_NOISY_SHIFT
#define LPUART_CTRL_TXDIR_SHIFT
lpuart_interrupt_t
LPUART interrupt configuration structure, default settings are 0 (disabled)
static void LPUART_HAL_SetRxWatermark(LPUART_Type *base, uint8_t rxWater)
Sets the rx watermark.
#define LPUART_MODIR_TXCTSC_MASK
#define LPUART_BAUD_SBR_MASK
static void LPUART_HAL_SetRxDataPolarity(LPUART_Type *base, bool polarity)
Sets whether the recevie data is inverted or not.
static void LPUART_HAL_Getchar(const LPUART_Type *base, uint8_t *readData)
Gets the LPUART 8-bit character.