70 base->
CTRL = 0x00000000;
72 base->
MATCH = 0x00000000;
73 #if FEATURE_LPUART_HAS_MODEM_SUPPORT
75 base->
MODIR = 0x00000000;
77 #if FEATURE_LPUART_FIFO_SIZE > 0U
81 base->
WATER = 0x00000000;
96 uint32_t sourceClockInHz,
97 uint32_t desiredBaudRate)
99 uint16_t sbr, sbrTemp, i;
100 uint32_t osr, tempDiff, calculatedBaud, baudDiff, baudRegValTemp;
107 sbr = (uint16_t)(sourceClockInHz / (desiredBaudRate * osr));
108 calculatedBaud = (sourceClockInHz / (osr * sbr));
110 if (calculatedBaud > desiredBaudRate)
112 baudDiff = calculatedBaud - desiredBaudRate;
116 baudDiff = desiredBaudRate - calculatedBaud;
121 for (i = 5U; i <= 32U; i++)
124 sbrTemp = (uint16_t)(sourceClockInHz / (desiredBaudRate * i));
126 calculatedBaud = (sourceClockInHz / (i * sbrTemp));
128 if (calculatedBaud > desiredBaudRate)
130 tempDiff = calculatedBaud - desiredBaudRate;
134 tempDiff = desiredBaudRate - calculatedBaud;
137 if (tempDiff <= baudDiff)
147 if (baudDiff < ((desiredBaudRate / 100U) * 3U))
151 if ((osr > 3U) && (osr < 8U))
157 baudRegValTemp = base->
BAUD;
160 base->
BAUD = baudRegValTemp;
163 baudRegValTemp = base->
BAUD;
166 base->
BAUD = baudRegValTemp;
228 uint8_t ninthDataBit;
229 volatile uint8_t * dataRegBytes = (
volatile uint8_t *)(&(base->
DATA));
232 ninthDataBit = (uint8_t)((data >> 8U) & 0x1U);
238 dataRegBytes[0] = (uint8_t)data;
250 uint8_t ninthDataBit, tenthDataBit;
252 volatile uint8_t * dataRegBytes = (
volatile uint8_t *)(&(base->
DATA));
254 ninthDataBit = (uint8_t)((data >> 8U) & 0x1U);
255 tenthDataBit = (uint8_t)((data >> 9U) & 0x1U);
258 ctrlRegVal = base->
CTRL;
261 base->
CTRL = ctrlRegVal;
264 dataRegBytes[0] = (uint8_t)data;
282 *readData |= (uint8_t)base->
DATA;
303 *readData |= (uint8_t)base->
DATA;
315 const uint8_t *txBuff,
320 while (txSize-- > 0U)
345 while (rxSize-- > 0U)
374 uint32_t intRegOffset = (uint16_t)(intSrc);
379 base->
BAUD = (base->
BAUD & ~(1UL << intRegOffset)) | ((enable ? 1U : 0U) << intRegOffset);
383 ((enable ? 1U : 0U) << intRegOffset);
386 base->
CTRL = (base->
CTRL & ~(1UL << intRegOffset)) | ((enable ? 1U : 0U) << intRegOffset);
389 base->
DATA = (base->
DATA & ~(1UL << intRegOffset)) | ((enable ? 1U : 0U) << intRegOffset);
392 base->
MATCH = (base->
MATCH & ~(1UL << intRegOffset)) | ((enable ? 1U : 0U) << intRegOffset);
394 #if FEATURE_LPUART_HAS_MODEM_SUPPORT
396 base->
MODIR = (base->
MODIR & ~(1UL << intRegOffset)) | ((enable ? 1U : 0U) << intRegOffset);
399 #if FEATURE_LPUART_FIFO_SIZE > 0U
402 ((enable ? 1U : 0U) << intRegOffset);
426 retVal = (((base->
BAUD >> (uint16_t)(intSrc)) & 1U) > 0U);
429 retVal = (((base->
STAT >> (uint16_t)(intSrc)) & 1U) > 0U);
432 retVal = (((base->
CTRL >> (uint16_t)(intSrc)) & 1U) > 0U);
435 retVal = (((base->
DATA >> (uint16_t)(intSrc)) & 1U) > 0U);
438 retVal = (((base->
MATCH >> (uint16_t)(intSrc)) & 1U) > 0U);
440 #if FEATURE_LPUART_HAS_MODEM_SUPPORT
442 retVal = (((base->
MODIR >> (uint16_t)(intSrc)) & 1U) > 0U);
445 #if FEATURE_LPUART_FIFO_SIZE > 0U
447 retVal = (((base->
FIFO >> (uint16_t)(intSrc)) & 1U) > 0U);
513 bool lpuart_current_rx_state;
566 uint32_t matchRegValTemp;
572 matchRegValTemp = base->
MATCH;
575 base->
MATCH = matchRegValTemp;
590 uint32_t matchRegValTemp;
596 matchRegValTemp = base->
MATCH;
599 base->
MATCH = matchRegValTemp;
605 #if FEATURE_LPUART_HAS_IR_SUPPORT
616 uint32_t modirRegValTemp;
622 modirRegValTemp = base->
MODIR;
625 base->
MODIR = modirRegValTemp;
644 retVal = (((base->
BAUD >> (uint16_t)(statusFlag)) & 1U) > 0U);
647 retVal = (((base->
STAT >> (uint16_t)(statusFlag)) & 1U) > 0U);
650 retVal = (((base->
CTRL >> (uint16_t)(statusFlag)) & 1U) > 0U);
653 retVal = (((base->
DATA >> (uint16_t)(statusFlag)) & 1U) > 0U);
656 retVal = (((base->
MATCH >> (uint16_t)(statusFlag)) & 1U) > 0U);
658 #if FEATURE_LPUART_HAS_MODEM_SUPPORT
660 retVal = (((base->
MODIR >> (uint16_t)(statusFlag)) & 1U) > 0U);
663 #if FEATURE_LPUART_FIFO_SIZE > 0U
665 retVal = (((base->
FIFO >> (uint16_t)(statusFlag)) & 1U) > 0U);
697 #if FEATURE_LPUART_HAS_EXTENDED_DATA_REGISTER_FLAGS
732 #if FEATURE_LPUART_HAS_ADDRESS_MATCHING
740 #if FEATURE_LPUART_FIFO_SIZE > 0U
#define LPUART_CTRL_LOOPS_SHIFT
#define LPUART_STAT_RWUID_SHIFT
#define LPUART_MODIR_TNP(x)
#define LPUART_STAT_TDRE_SHIFT
#define LPUART_STAT_RDRF_SHIFT
#define LPUART_MATCH_MA2(x)
#define LPUART_STAT_MA1F_MASK
#define LPUART_STAT_OR_MASK
#define LPUART_BAUD_BOTHEDGE_MASK
#define LPUART_CTRL_PT_SHIFT
void LPUART_HAL_Putchar9(LPUART_Type *base, uint16_t data)
Sends the LPUART 9-bit character.
#define LPUART_MODIR_IREN_MASK
#define LPUART_STAT_RXEDGIF_MASK
void LPUART_HAL_SendDataPolling(LPUART_Type *base, const uint8_t *txBuff, uint32_t txSize)
Send out multiple bytes of data using polling method.
status_t LPUART_HAL_SetReceiverInStandbyMode(LPUART_Type *base)
Places the LPUART receiver in standby mode.
#define LPUART_BAUD_OSR_MASK
#define LPUART_STAT_LBKDIF_MASK
#define LPUART_CTRL_PE_SHIFT
#define LPUART_BAUD_MAEN2_MASK
#define LPUART_BAUD_REG_ID
#define LPUART_BAUD_SBR_SHIFT
#define LPUART_STAT_FE_MASK
static lpuart_wakeup_method_t LPUART_HAL_GetReceiverWakeupMode(const LPUART_Type *base)
Gets the LPUART receiver wakeup method from standby mode.
#define LPUART_MATCH_MA1(x)
unsigned rxWakeIdleDetect
#define LPUART_CTRL_PE_MASK
#define LPUART_FIFO_REG_ID
status_t LPUART_HAL_ReceiveDataPolling(LPUART_Type *base, uint8_t *rxBuff, uint32_t rxSize)
Receive multiple bytes of data using polling method.
#define LPUART_MATCH_MA1_MASK
#define LPUART_BAUD_MAEN2_SHIFT
#define LPUART_DATA_REG_ID
#define LPUART_CTRL_LOOPS_MASK
#define LPUART_STAT_PF_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_STAT_RWUID_MASK
#define FEATURE_LPUART_DEFAULT_SBR
#define LPUART_MODIR_REG_ID
lpuart_status_flag_t
LPUART status flags.
#define LPUART_STAT_NF_MASK
#define LPUART_STAT_OR_SHIFT
#define FEATURE_LPUART_STAT_REG_FLAGS_MASK
#define LPUART_BAUD_M10_MASK
#define LPUART_STAT_REG_ID
#define LPUART_CTRL_M_MASK
#define LPUART_FIFO_RXUF_MASK
#define LPUART_BAUD_BOTHEDGE_SHIFT
#define LPUART_CTRL_R9T8_MASK
bool LPUART_HAL_GetIntMode(const LPUART_Type *base, lpuart_interrupt_t intSrc)
Returns LPUART module interrupts state.
#define LPUART_CTRL_PT_MASK
#define LPUART_STAT_MA2F_MASK
#define LPUART_CTRL_REG_ID
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
#define LPUART_CTRL_ILT_MASK
#define LPUART_CTRL_RSRC_MASK
void LPUART_HAL_SetInfrared(LPUART_Type *base, bool enable, lpuart_ir_tx_pulsewidth_t pulseWidth)
Configures the LPUART infrared operation.
#define LPUART_BAUD_OSR(x)
lpuart_parity_mode_t
LPUART parity mode.
#define LPUART_CTRL_R8T9_SHIFT
void LPUART_HAL_SetSingleWireCmd(LPUART_Type *base, bool enable)
Configures the LPUART single-wire operation (enable/disable single-wire mode).
lpuart_bit_count_per_char_t
LPUART number of bits in a character.
#define LPUART_CTRL_RSRC_SHIFT
#define LPUART_CTRL_R8T9_MASK
Structure for idle line configuration settings.
#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
lpuart_wakeup_method_t
LPUART wakeup from standby method constants.
#define LPUART_MODIR_TNP_MASK
void LPUART_HAL_SetLoopbackCmd(LPUART_Type *base, bool enable)
Configures the LPUART loopback operation (enable/disable loopback operation)
#define LPUART_STAT_IDLE_MASK
void LPUART_HAL_SetMatchAddressReg1(LPUART_Type *base, bool enable, uint8_t value)
Configures address match register 1.
status_t LPUART_HAL_ClearStatusFlag(LPUART_Type *base, lpuart_status_flag_t statusFlag)
LPUART clears an individual status flag.
#define LPUART_CTRL_ILT_SHIFT
void LPUART_HAL_Getchar9(const LPUART_Type *base, uint16_t *readData)
Gets the LPUART 9-bit character.
#define LPUART_CTRL_M_SHIFT
lpuart_ir_tx_pulsewidth_t
LPUART infra-red transmitter pulse width options.
#define FEATURE_LPUART_DEFAULT_OSR
#define LPUART_BAUD_MAEN1_SHIFT
void LPUART_HAL_Getchar10(const LPUART_Type *base, uint16_t *readData)
Gets the LPUART 10-bit character.
#define LPUART_MATCH_MA2_MASK
status_t LPUART_HAL_SetBaudRate(LPUART_Type *base, uint32_t sourceClockInHz, uint32_t desiredBaudRate)
Configures the LPUART baud rate.
void LPUART_HAL_SetMatchAddressReg2(LPUART_Type *base, bool enable, uint8_t value)
Configures address match register 2.
#define LPUART_CTRL_R9T8_SHIFT
#define LPUART_FIFO_TXOF_MASK
void LPUART_HAL_Putchar10(LPUART_Type *base, uint16_t data)
Sends the LPUART 10-bit character (Note: Feature available on select LPUART instances).
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_BAUD_MAEN1_MASK
void LPUART_HAL_SetIntMode(LPUART_Type *base, lpuart_interrupt_t intSrc, bool enable)
Configures the LPUART module interrupts.
#define LPUART_BAUD_SBR(x)
bool LPUART_HAL_GetStatusFlag(const LPUART_Type *base, lpuart_status_flag_t statusFlag)
LPUART get status flag.
#define LPUART_BAUD_OSR_SHIFT
#define LPUART_BAUD_M10_SHIFT
void LPUART_HAL_SetIdleLineDetect(LPUART_Type *base, const lpuart_idle_line_config_t *config)
LPUART idle-line detect operation configuration.
void LPUART_HAL_Init(LPUART_Type *base)
Initializes the LPUART controller.
#define LPUART_MATCH_REG_ID
#define LPUART_MODIR_IREN_SHIFT
lpuart_interrupt_t
LPUART interrupt configuration structure, default settings are 0 (disabled)
#define LPUART_BAUD_SBR_MASK
static void LPUART_HAL_Getchar(const LPUART_Type *base, uint8_t *readData)
Gets the LPUART 8-bit character.