/******************************************************************************* * Function Name: SPIM_Wakeup ******************************************************************************** * * Summary: * Prepare SPIM Component to wake up. * * Parameters: * None. * * Return: * None. * * Global Variables: * SPIM_backup - used when non-retention registers are restored. * SPIM_txBufferWrite - modified every function call - resets to * zero. * SPIM_txBufferRead - modified every function call - resets to * zero. * SPIM_rxBufferWrite - modified every function call - resets to * zero. * SPIM_rxBufferRead - modified every function call - resets to * zero. * * Reentrant: * No. * *******************************************************************************/ void SPIM_Wakeup(void) { SPIM_RestoreConfig(); #if (SPIM_TXBUFFERSIZE > 4u) SPIM_txBufferRead = 0u; SPIM_txBufferWrite = 0u; #endif /* SPIM_TXBUFFERSIZE > 4u */ #if (SPIM_RXBUFFERSIZE > 4u) SPIM_rxBufferRead = 0u; SPIM_rxBufferWrite = 0u; #endif /* SPIM_RXBUFFERSIZE > 4u */ SPIM_ClearFIFO(); /* Restore components block enable state */ if (SPIM_backup.enableState != 0u) { /* Components block was enabled */ SPIM_Enable(); } /* Do nothing if components block was disabled */ }
/******************************************************************************* * Function Name: SPIM_Wakeup ******************************************************************************** * * Summary: * Prepare SPIM Component to wake up. * * Parameters: * None. * * Return: * None. * * Global Variables: * SPIM_backup - used when non-retention registers are restored. * SPIM_txBufferWrite - modified every function call - resets to * zero. * SPIM_txBufferRead - modified every function call - resets to * zero. * SPIM_rxBufferWrite - modified every function call - resets to * zero. * SPIM_rxBufferRead - modified every function call - resets to * zero. * * Reentrant: * No. * *******************************************************************************/ void SPIM_Wakeup(void) { SPIM_RestoreConfig(); #if(SPIM_RX_SOFTWARE_BUF_ENABLED) SPIM_rxBufferFull = 0u; SPIM_rxBufferRead = 0u; SPIM_rxBufferWrite = 0u; #endif /* (SPIM_RX_SOFTWARE_BUF_ENABLED) */ #if(SPIM_TX_SOFTWARE_BUF_ENABLED) SPIM_txBufferFull = 0u; SPIM_txBufferRead = 0u; SPIM_txBufferWrite = 0u; #endif /* (SPIM_TX_SOFTWARE_BUF_ENABLED) */ /* Clear any data from the RX and TX FIFO */ SPIM_ClearFIFO(); /* Restore components block enable state */ if(0u != SPIM_backup.enableState) { SPIM_Enable(); } }
/******************************************************************************* * Function Name: SPIM_Init ******************************************************************************** * * Summary: * Inits/Restores default SPIM configuration provided with customizer. * * Parameters: * None. * * Return: * None. * * Side Effects: * When this function is called it initializes all of the necessary parameters * for execution. i.e. setting the initial interrupt mask, configuring the * interrupt service routine, configuring the bit-counter parameters and * clearing the FIFO and Status Register. * * Reentrant: * No. * *******************************************************************************/ void SPIM_Init(void) { /* Initialize the Bit counter */ SPIM_COUNTER_PERIOD_REG = SPIM_BITCTR_INIT; /* ISR initialization */ #if(SPIM_InternalTxInterruptEnabled) CyIntDisable(SPIM_TX_ISR_NUMBER); /* Set the ISR to point to the SPIM_isr Interrupt. */ CyIntSetVector(SPIM_TX_ISR_NUMBER, SPIM_TX_ISR); /* Set the priority. */ CyIntSetPriority(SPIM_TX_ISR_NUMBER, SPIM_TX_ISR_PRIORITY); #endif /* SPIM_InternalTxInterruptEnabled */ #if(SPIM_InternalRxInterruptEnabled) CyIntDisable(SPIM_RX_ISR_NUMBER); /* Set the ISR to point to the SPIM_isr Interrupt. */ CyIntSetVector(SPIM_RX_ISR_NUMBER, SPIM_RX_ISR); /* Set the priority. */ CyIntSetPriority(SPIM_RX_ISR_NUMBER, SPIM_RX_ISR_PRIORITY); #endif /* SPIM_InternalRxInterruptEnabled */ /* Clear any stray data from the RX and TX FIFO */ SPIM_ClearFIFO(); #if(SPIM_RXBUFFERSIZE > 4u) SPIM_rxBufferRead = 0u; SPIM_rxBufferWrite = 0u; #endif /* SPIM_RXBUFFERSIZE > 4u */ #if(SPIM_TXBUFFERSIZE > 4u) SPIM_txBufferRead = 0u; SPIM_txBufferWrite = 0u; #endif /* SPIM_TXBUFFERSIZE > 4u */ (void) SPIM_ReadTxStatus(); /* Clear any pending status bits */ (void) SPIM_ReadRxStatus(); /* Clear any pending status bits */ /* Configure the Initial interrupt mask */ #if (SPIM_TXBUFFERSIZE > 4u) SPIM_TX_STATUS_MASK_REG = SPIM_TX_INIT_INTERRUPTS_MASK & ~SPIM_STS_TX_FIFO_NOT_FULL; #else /* SPIM_TXBUFFERSIZE < 4u */ SPIM_TX_STATUS_MASK_REG = SPIM_TX_INIT_INTERRUPTS_MASK; #endif /* SPIM_TXBUFFERSIZE > 4u */ SPIM_RX_STATUS_MASK_REG = SPIM_RX_INIT_INTERRUPTS_MASK; }
/******************************************************************************* * Function Name: SPIM_Init ******************************************************************************** * * Summary: * Inits/Restores default SPIM configuration provided with customizer. * * Parameters: * None. * * Return: * None. * * Side Effects: * When this function is called it initializes all of the necessary parameters * for execution. i.e. setting the initial interrupt mask, configuring the * interrupt service routine, configuring the bit-counter parameters and * clearing the FIFO and Status Register. * * Reentrant: * No. * *******************************************************************************/ void SPIM_Init(void) { /* Initialize the Bit counter */ SPIM_COUNTER_PERIOD_REG = SPIM_BITCTR_INIT; /* Init TX ISR */ #if(0u != SPIM_INTERNAL_TX_INT_ENABLED) CyIntDisable (SPIM_TX_ISR_NUMBER); CyIntSetPriority (SPIM_TX_ISR_NUMBER, SPIM_TX_ISR_PRIORITY); (void) CyIntSetVector(SPIM_TX_ISR_NUMBER, &SPIM_TX_ISR); #endif /* (0u != SPIM_INTERNAL_TX_INT_ENABLED) */ /* Init RX ISR */ #if(0u != SPIM_INTERNAL_RX_INT_ENABLED) CyIntDisable (SPIM_RX_ISR_NUMBER); CyIntSetPriority (SPIM_RX_ISR_NUMBER, SPIM_RX_ISR_PRIORITY); (void) CyIntSetVector(SPIM_RX_ISR_NUMBER, &SPIM_RX_ISR); #endif /* (0u != SPIM_INTERNAL_RX_INT_ENABLED) */ /* Clear any stray data from the RX and TX FIFO */ SPIM_ClearFIFO(); #if(SPIM_RX_SOFTWARE_BUF_ENABLED) SPIM_rxBufferFull = 0u; SPIM_rxBufferRead = 0u; SPIM_rxBufferWrite = 0u; #endif /* (SPIM_RX_SOFTWARE_BUF_ENABLED) */ #if(SPIM_TX_SOFTWARE_BUF_ENABLED) SPIM_txBufferFull = 0u; SPIM_txBufferRead = 0u; SPIM_txBufferWrite = 0u; #endif /* (SPIM_TX_SOFTWARE_BUF_ENABLED) */ (void) SPIM_ReadTxStatus(); /* Clear Tx status and swStatusTx */ (void) SPIM_ReadRxStatus(); /* Clear Rx status and swStatusRx */ /* Configure TX and RX interrupt mask */ SPIM_TX_STATUS_MASK_REG = SPIM_TX_INIT_INTERRUPTS_MASK; SPIM_RX_STATUS_MASK_REG = SPIM_RX_INIT_INTERRUPTS_MASK; }