89 base->
CR = (uint32_t)0x0;
124 if (*actualBaudRate == (uint32_t)0)
130 txCmdCfgSet->
preDiv = tcrPre;
185 uint32_t lpspi_tmp = base->
SR;
188 if (lpspi_tmp == (uint32_t)1)
231 uint8_t * rxFifoSize)
233 if (txFifoSize != NULL)
237 if (rxFifoSize != NULL)
252 uint32_t crValue = 0;
295 base->
SR |= ((uint32_t)1U << (uint32_t)statusFlag);
318 uint32_t cfgr0Value = 0;
320 cfgr0Value = base->
CFGR0 &
323 cfgr0Value |= ((uint32_t)(enable)) |
327 base->
CFGR0 = cfgr0Value;
343 uint32_t cfgr1Value = 0;
358 base->
CFGR1 = cfgr1Value;
377 bool rxDataMatchOnly,
381 uint32_t cfgr1Value = 0;
392 base->
CFGR1 = cfgr1Value;
431 uint32_t cfgr1Value = 0;
440 cfgr1Value = base->
CFGR1 &
447 base->
CFGR1 = cfgr1Value;
473 uint32_t sourceClockInHz, uint32_t * tcrPrescaleValue)
490 uint32_t prescaler, bestPrescaler;
491 uint32_t scaler, bestScaler;
492 uint32_t realBaudrate, bestBaudrate;
493 uint32_t diff, min_diff;
494 uint32_t desiredBaudrate = bitsPerSec;
499 min_diff = 0xFFFFFFFFU;
511 for (prescaler = (uint32_t)0; prescaler < (uint32_t)8; prescaler++)
513 for (scaler = (uint32_t)0; scaler < (uint32_t)256; scaler++)
515 realBaudrate = (sourceClockInHz /
521 if (desiredBaudrate >= realBaudrate)
523 diff = desiredBaudrate - realBaudrate;
528 bestPrescaler = prescaler;
530 bestBaudrate = realBaudrate;
541 lpspi_tmp = base->
CCR;
544 base->
CCR = lpspi_tmp;
548 *tcrPrescaleValue = bestPrescaler;
583 if (divisor > (uint32_t)255)
589 lpspi_tmp = base->
CCR;
592 base->
CCR = lpspi_tmp;
622 uint32_t ccrValue = 0;
634 if (delay > (uint32_t)255)
640 ccrValue = base->
CCR & ~(0xFFUL << (uint32_t)whichDelay);
641 ccrValue |= delay << (uint32_t)whichDelay;
642 base->
CCR = ccrValue;
static void LPSPI_HAL_SetTxWatermarks(LPSPI_Type *base, uint32_t txWater)
Sets the TX FIFO watermark values.
void LPSPI_HAL_GetFifoSizes(const LPSPI_Type *base, uint8_t *txFifoSize, uint8_t *rxFifoSize)
Gets the TX and RX FIFO sizes of the LPSPI module.
#define LPSPI_VERID_FEATURE_SHIFT
lpspi_clock_phase_t clkPhase
#define LPSPI_PARAM_TXFIFO_MASK
static const uint32_t s_baudratePrescaler[]
lpspi_transfer_width_t width
#define LPSPI_VERID_FEATURE_MASK
#define LPSPI_TCR_RXMSK_SHIFT
status_t LPSPI_HAL_Config(LPSPI_Type *base, const lpspi_init_config_t *config, lpspi_tx_cmd_config_t *txCmdCfgSet, uint32_t *actualBaudRate)
Configures the LPSPI registers to a user defined configuration.
lpspi_signal_polarity_t
LPSPI Signal (PCS and Host Request) Polarity configuration. Implements : lpspi_signal_polarity_t_Clas...
#define LPSPI_CFGR1_MATCFG_SHIFT
#define LPSPI_CFGR1_PCSCFG_MASK
#define LPSPI_CR_RTF_SHIFT
#define LPSPI_SR_MBF_MASK
#define LPSPI_PARAM_RXFIFO_MASK
#define LPSPI_CFGR1_OUTCFG_MASK
#define LPSPI_VERID_MAJOR_SHIFT
lpspi_signal_polarity_t pcsPol
void LPSPI_HAL_SetFlushFifoCmd(LPSPI_Type *base, bool flushTxFifo, bool flushRxFifo)
Flushes the LPSPI FIFOs.
void LPSPI_HAL_GetVersionId(const LPSPI_Type *base, uint32_t *major, uint32_t *minor, uint32_t *feature)
Gets the Major, Minor and Feature ID of the LPSPI module.
#define LPSPI_TCR_PCS_SHIFT
status_t LPSPI_HAL_SetDelay(LPSPI_Type *base, lpspi_delay_type_t whichDelay, uint32_t delay)
Manually configures a specific LPSPI delay parameter (module must be disabled to change the delay val...
lpspi_which_pcs_t
LPSPI Peripheral Chip Select (PCS) configuration (which PCS to configure). Implements : lpspi_which_p...
status_t LPSPI_HAL_SetPinConfigMode(LPSPI_Type *base, lpspi_pin_config_t pinCfg, lpspi_data_out_config_t dataOutConfig, bool pcs3and2Enable)
Configures the LPSPI SDO/SDI pin configuration mode.
#define LPSPI_CFGR1_PINCFG_MASK
lpspi_data_out_config_t
LPSPI data output configuration. Implements : lpspi_data_out_config_t_Class.
#define LPSPI_CFGR1_MASTER_MASK
#define LPSPI_CFGR0_HRSEL_MASK
static bool LPSPI_HAL_IsMaster(const LPSPI_Type *base)
Returns whether the LPSPI module is in master mode.
lpspi_host_request_select_t
LPSPI Host Request select configuration. Implements : lpspi_host_request_select_t_Class.
#define LPSPI_TCR_FRAMESZ_SHIFT
LPSPI initialization configuration structure.
#define LPSPI_TCR_BYSW_SHIFT
lpspi_status_flag_t
LPSPI status flags. Implements : lpspi_status_flag_t_Class.
#define LPSPI_VERID_MINOR_MASK
#define LPSPI_SR_MBF_SHIFT
status_t LPSPI_HAL_SetBaudRateDivisor(LPSPI_Type *base, uint32_t divisor)
Configures the baud rate divisor manually (only the LPSPI_CCR[SCKDIV]).
#define LPSPI_CFGR0_RDMO_SHIFT
#define LPSPI_CFGR1_PCSPOL_SHIFT
status_t LPSPI_HAL_SetPcsPolarityMode(LPSPI_Type *base, lpspi_which_pcs_t whichPcs, lpspi_signal_polarity_t pcsPolarity)
Configures the desired LPSPI PCS polarity.
#define LPSPI_PARAM_TXFIFO_SHIFT
#define LPSPI_CFGR0_RDMO_MASK
#define LPSPI_CFGR0_HRPOL_MASK
#define LPSPI_CR_RST_MASK
#define LPSPI_TCR_CPOL_SHIFT
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
#define LPSPI_CFGR0_HRPOL_SHIFT
#define LPSPI_CFGR1_PINCFG_SHIFT
uint32_t LPSPI_HAL_SetBaudRate(LPSPI_Type *base, uint32_t bitsPerSec, uint32_t sourceClockInHz, uint32_t *tcrPrescaleValue)
Sets the LPSPI baud rate in bits per second.
#define LPSPI_CFGR0_HREN_MASK
void LPSPI_HAL_WriteDataBlocking(LPSPI_Type *base, uint32_t data)
Writes a data into the TX data buffer and waits till complete to return.
#define LPSPI_VERID_MINOR_SHIFT
#define LPSPI_TCR_LSBF_SHIFT
#define LPSPI_TCR_PRESCALE_SHIFT
#define LPSPI_TCR_TXMSK_SHIFT
lpspi_which_pcs_t whichPcs
#define LPSPI_PARAM_RXFIFO_SHIFT
void LPSPI_HAL_Init(LPSPI_Type *base)
Resets the LPSPI internal logic and registers to their default settings.
#define LPSPI_CR_RRF_SHIFT
status_t LPSPI_HAL_ClearStatusFlag(LPSPI_Type *base, lpspi_status_flag_t statusFlag)
Clears the LPSPI status flag.
static void LPSPI_HAL_SetRxWatermarks(LPSPI_Type *base, uint32_t rxWater)
Sets the RX FIFO watermark values.
LPSPI Transmit Command Register configuration structure.
#define LPSPI_CFGR0_HRSEL_SHIFT
lpspi_master_slave_mode_t
LPSPI master or slave configuration. Implements : lpspi_master_slave_mode_t_Class.
lpspi_pin_config_t
LPSPI pin (SDO and SDI) configuration. Implements : lpspi_pin_config_t_Class.
status_t LPSPI_HAL_SetMatchConfigMode(LPSPI_Type *base, lpspi_match_config_t matchCondition, bool rxDataMatchOnly, uint32_t match0, uint32_t match1)
Configures the LPSPI data match configuration mode.
#define LPSPI_CFGR1_PCSCFG_SHIFT
lpspi_master_slave_mode_t lpspiMode
#define LPSPI_CFGR1_MATCFG_MASK
uint32_t LPSPI_HAL_ReadDataBlocking(const LPSPI_Type *base)
Reads data from the data buffer but first waits till data is ready.
#define LPSPI_CFGR1_MASTER_SHIFT
#define LPSPI_CCR_SCKDIV_MASK
#define LPSPI_VERID_MAJOR_MASK
#define LPSPI_TCR_CONT_SHIFT
#define LPSPI_CFGR1_OUTCFG_SHIFT
lpspi_delay_type_t
LPSPI delay type selection Implements : lpspi_delay_type_t_Class.
static bool LPSPI_HAL_IsModuleEnabled(const LPSPI_Type *base)
Check if LPSPI module is enabled.
lpspi_sck_polarity_t clkPolarity
void LPSPI_HAL_SetTxCommandReg(LPSPI_Type *base, const lpspi_tx_cmd_config_t *txCmdCfgSet)
Sets the Transmit Command Register (TCR) parameters.
#define LPSPI_TCR_CONTC_SHIFT
status_t LPSPI_HAL_Disable(LPSPI_Type *base)
Disables the LPSPI module.
#define LPSPI_TCR_WIDTH_SHIFT
status_t LPSPI_HAL_SetMasterSlaveMode(LPSPI_Type *base, lpspi_master_slave_mode_t mode)
Configures the LPSPI for master or slave.
#define LPSPI_CR_MEN_MASK
#define LPSPI_CCR_SCKDIV(x)
void LPSPI_HAL_SetHostRequestMode(LPSPI_Type *base, lpspi_host_request_select_t hostReqInput, lpspi_signal_polarity_t hostReqPol, bool enable)
Configures the LPSPI Host Request input.
static bool LPSPI_HAL_GetStatusFlag(const LPSPI_Type *base, lpspi_status_flag_t statusFlag)
Gets the LPSPI status flag state.
lpspi_match_config_t
LPSPI Match configuration options. Implements : lpspi_match_config_t_Class.
#define LPSPI_TCR_CPHA_SHIFT