STM32F0 Standard Peripheral bibliotheek  1.0
ST Microelectronics standard peripheral bibliotheek documentatie voor de STM32F0 familie
 All Data Structures Files Functions Variables Enumerations Enumerator Groups

SPI driver modules. More...

Modules

 SPI_Exported_Constants
 
 SPI_Private_Functions
 

Data Structures

struct  SPI_InitTypeDef
 SPI Init structure definition. More...
 
struct  I2S_InitTypeDef
 I2S Init structure definition. More...
 

Macros

#define CR1_CLEAR_MASK   ((uint16_t)0x3040)
 
#define CR1_CLEAR_MASK2   ((uint16_t)0xFFFB)
 
#define CR2_LDMA_MASK   ((uint16_t)0x9FFF)
 
#define I2SCFGR_CLEAR_Mask   ((uint16_t)0xF040)
 

Functions

void SPI_I2S_DeInit (SPI_TypeDef *SPIx)
 Deinitializes the SPIx peripheral registers to their default reset values. More...
 
void SPI_Init (SPI_TypeDef *SPIx, SPI_InitTypeDef *SPI_InitStruct)
 Initializes the SPIx peripheral according to the specified parameters in the SPI_InitStruct. More...
 
void I2S_Init (SPI_TypeDef *SPIx, I2S_InitTypeDef *I2S_InitStruct)
 Initializes the SPIx peripheral according to the specified parameters in the I2S_InitStruct. More...
 
void SPI_StructInit (SPI_InitTypeDef *SPI_InitStruct)
 Fills each SPI_InitStruct member with its default value. More...
 
void I2S_StructInit (I2S_InitTypeDef *I2S_InitStruct)
 Fills each I2S_InitStruct member with its default value. More...
 
void SPI_TIModeCmd (SPI_TypeDef *SPIx, FunctionalState NewState)
 Enables or disables the TI Mode. More...
 
void SPI_NSSPulseModeCmd (SPI_TypeDef *SPIx, FunctionalState NewState)
 Enables or disables the NSS pulse management mode. More...
 
void SPI_Cmd (SPI_TypeDef *SPIx, FunctionalState NewState)
 Enables or disables the specified SPI peripheral. More...
 
void I2S_Cmd (SPI_TypeDef *SPIx, FunctionalState NewState)
 Enables or disables the specified SPI peripheral (in I2S mode). More...
 
void SPI_DataSizeConfig (SPI_TypeDef *SPIx, uint16_t SPI_DataSize)
 Configures the data size for the selected SPI. More...
 
void SPI_RxFIFOThresholdConfig (SPI_TypeDef *SPIx, uint16_t SPI_RxFIFOThreshold)
 Configures the FIFO reception threshold for the selected SPI. More...
 
void SPI_BiDirectionalLineConfig (SPI_TypeDef *SPIx, uint16_t SPI_Direction)
 Selects the data transfer direction in bidirectional mode for the specified SPI. More...
 
void SPI_NSSInternalSoftwareConfig (SPI_TypeDef *SPIx, uint16_t SPI_NSSInternalSoft)
 Configures internally by software the NSS pin for the selected SPI. More...
 
void SPI_SSOutputCmd (SPI_TypeDef *SPIx, FunctionalState NewState)
 Enables or disables the SS output for the selected SPI. More...
 
void SPI_SendData8 (SPI_TypeDef *SPIx, uint8_t Data)
 Transmits a Data through the SPIx/I2Sx peripheral. More...
 
void SPI_I2S_SendData16 (SPI_TypeDef *SPIx, uint16_t Data)
 Transmits a Data through the SPIx/I2Sx peripheral. More...
 
uint8_t SPI_ReceiveData8 (SPI_TypeDef *SPIx)
 Returns the most recent received data by the SPIx/I2Sx peripheral. More...
 
uint16_t SPI_I2S_ReceiveData16 (SPI_TypeDef *SPIx)
 Returns the most recent received data by the SPIx peripheral. More...
 
void SPI_CRCLengthConfig (SPI_TypeDef *SPIx, uint16_t SPI_CRCLength)
 Configures the CRC calculation length for the selected SPI. More...
 
void SPI_CalculateCRC (SPI_TypeDef *SPIx, FunctionalState NewState)
 Enables or disables the CRC value calculation of the transferred bytes. More...
 
void SPI_TransmitCRC (SPI_TypeDef *SPIx)
 Transmit the SPIx CRC value. More...
 
uint16_t SPI_GetCRC (SPI_TypeDef *SPIx, uint8_t SPI_CRC)
 Returns the transmit or the receive CRC register value for the specified SPI. More...
 
uint16_t SPI_GetCRCPolynomial (SPI_TypeDef *SPIx)
 Returns the CRC Polynomial register value for the specified SPI. More...
 
void SPI_I2S_DMACmd (SPI_TypeDef *SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState)
 Enables or disables the SPIx/I2Sx DMA interface. More...
 
void SPI_LastDMATransferCmd (SPI_TypeDef *SPIx, uint16_t SPI_LastDMATransfer)
 Configures the number of data to transfer type(Even/Odd) for the DMA last transfers and for the selected SPI. More...
 
void SPI_I2S_ITConfig (SPI_TypeDef *SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState)
 Enables or disables the specified SPI/I2S interrupts. More...
 
uint16_t SPI_GetTransmissionFIFOStatus (SPI_TypeDef *SPIx)
 Returns the current SPIx Transmission FIFO filled level. More...
 
uint16_t SPI_GetReceptionFIFOStatus (SPI_TypeDef *SPIx)
 Returns the current SPIx Reception FIFO filled level. More...
 
FlagStatus SPI_I2S_GetFlagStatus (SPI_TypeDef *SPIx, uint16_t SPI_I2S_FLAG)
 Checks whether the specified SPI flag is set or not. More...
 
void SPI_I2S_ClearFlag (SPI_TypeDef *SPIx, uint16_t SPI_I2S_FLAG)
 Clears the SPIx CRC Error (CRCERR) flag. More...
 
ITStatus SPI_I2S_GetITStatus (SPI_TypeDef *SPIx, uint8_t SPI_I2S_IT)
 Checks whether the specified SPI/I2S interrupt has occurred or not. More...
 

Detailed Description

SPI driver modules.

Function Documentation

void I2S_Cmd ( SPI_TypeDef *  SPIx,
FunctionalState  NewState 
)

Enables or disables the specified SPI peripheral (in I2S mode).

Parameters
SPIx,:where x can be 1 to select the SPI peripheral.
NewState,:new state of the SPIx peripheral. This parameter can be: ENABLE or DISABLE.
Return values
None
void I2S_Init ( SPI_TypeDef *  SPIx,
I2S_InitTypeDef I2S_InitStruct 
)

Initializes the SPIx peripheral according to the specified parameters in the I2S_InitStruct.

Parameters
SPIx,:where x can be 1 to select the SPI peripheral (configured in I2S mode).
I2S_InitStruct,:pointer to an I2S_InitTypeDef structure that contains the configuration information for the specified SPI peripheral configured in I2S mode.
Note
This function calculates the optimal prescaler needed to obtain the most accurate audio frequency (depending on the I2S clock source, the PLL values and the product configuration). But in case the prescaler value is greater than 511, the default value (0x02) will be configured instead.
Return values
None
void I2S_StructInit ( I2S_InitTypeDef I2S_InitStruct)

Fills each I2S_InitStruct member with its default value.

Parameters
I2S_InitStruct,:pointer to a I2S_InitTypeDef structure which will be initialized.
Return values
None
void SPI_BiDirectionalLineConfig ( SPI_TypeDef *  SPIx,
uint16_t  SPI_Direction 
)

Selects the data transfer direction in bidirectional mode for the specified SPI.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_Direction,:specifies the data transfer direction in bidirectional mode. This parameter can be one of the following values:
  • SPI_Direction_Tx: Selects Tx transmission direction
  • SPI_Direction_Rx: Selects Rx receive direction
Return values
None
void SPI_CalculateCRC ( SPI_TypeDef *  SPIx,
FunctionalState  NewState 
)

Enables or disables the CRC value calculation of the transferred bytes.

Note
This function can be called only after the SPI_Init() function has been called.
Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
NewState,:new state of the SPIx CRC value calculation. This parameter can be: ENABLE or DISABLE.
Return values
None
void SPI_Cmd ( SPI_TypeDef *  SPIx,
FunctionalState  NewState 
)

Enables or disables the specified SPI peripheral.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
NewState,:new state of the SPIx peripheral. This parameter can be: ENABLE or DISABLE.
Return values
None
void SPI_CRCLengthConfig ( SPI_TypeDef *  SPIx,
uint16_t  SPI_CRCLength 
)

Configures the CRC calculation length for the selected SPI.

Note
This function can be called only after the SPI_Init() function has been called.
Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_CRCLength,:specifies the SPI CRC calculation length. This parameter can be one of the following values:
  • SPI_CRCLength_8b: Set CRC Calculation to 8 bits
  • SPI_CRCLength_16b: Set CRC Calculation to 16 bits
Return values
None
void SPI_DataSizeConfig ( SPI_TypeDef *  SPIx,
uint16_t  SPI_DataSize 
)

Configures the data size for the selected SPI.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_DataSize,:specifies the SPI data size. For the SPIx peripheral this parameter can be one of the following values:
  • SPI_DataSize_4b: Set data size to 4 bits
  • SPI_DataSize_5b: Set data size to 5 bits
  • SPI_DataSize_6b: Set data size to 6 bits
  • SPI_DataSize_7b: Set data size to 7 bits
  • SPI_DataSize_8b: Set data size to 8 bits
  • SPI_DataSize_9b: Set data size to 9 bits
  • SPI_DataSize_10b: Set data size to 10 bits
  • SPI_DataSize_11b: Set data size to 11 bits
  • SPI_DataSize_12b: Set data size to 12 bits
  • SPI_DataSize_13b: Set data size to 13 bits
  • SPI_DataSize_14b: Set data size to 14 bits
  • SPI_DataSize_15b: Set data size to 15 bits
  • SPI_DataSize_16b: Set data size to 16 bits
Return values
None
uint16_t SPI_GetCRC ( SPI_TypeDef *  SPIx,
uint8_t  SPI_CRC 
)

Returns the transmit or the receive CRC register value for the specified SPI.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_CRC,:specifies the CRC register to be read. This parameter can be one of the following values:
  • SPI_CRC_Tx: Selects Tx CRC register
  • SPI_CRC_Rx: Selects Rx CRC register
Return values
Theselected CRC register value..
uint16_t SPI_GetCRCPolynomial ( SPI_TypeDef *  SPIx)

Returns the CRC Polynomial register value for the specified SPI.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
Return values
TheCRC Polynomial register value.
uint16_t SPI_GetReceptionFIFOStatus ( SPI_TypeDef *  SPIx)

Returns the current SPIx Reception FIFO filled level.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
Return values
TheReception FIFO filling state.
  • SPI_ReceptionFIFOStatus_Empty: when FIFO is empty
  • SPI_ReceptionFIFOStatus_1QuarterFull: if more than 1 quarter-full.
  • SPI_ReceptionFIFOStatus_HalfFull: if more than 1 half-full.
  • SPI_ReceptionFIFOStatus_Full: when FIFO is full.
uint16_t SPI_GetTransmissionFIFOStatus ( SPI_TypeDef *  SPIx)

Returns the current SPIx Transmission FIFO filled level.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
Return values
TheTransmission FIFO filling state.
  • SPI_TransmissionFIFOStatus_Empty: when FIFO is empty
  • SPI_TransmissionFIFOStatus_1QuarterFull: if more than 1 quarter-full.
  • SPI_TransmissionFIFOStatus_HalfFull: if more than 1 half-full.
  • SPI_TransmissionFIFOStatus_Full: when FIFO is full.
void SPI_I2S_ClearFlag ( SPI_TypeDef *  SPIx,
uint16_t  SPI_I2S_FLAG 
)

Clears the SPIx CRC Error (CRCERR) flag.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_I2S_FLAG,:specifies the SPI flag to clear. This function clears only CRCERR flag.
Note
OVR (OverRun error) flag is cleared by software sequence: a read operation to SPI_DR register (SPI_I2S_ReceiveData()) followed by a read operation to SPI_SR register (SPI_I2S_GetFlagStatus()).
MODF (Mode Fault) flag is cleared by software sequence: a read/write operation to SPI_SR register (SPI_I2S_GetFlagStatus()) followed by a write operation to SPI_CR1 register (SPI_Cmd() to enable the SPI).
Return values
None
void SPI_I2S_DeInit ( SPI_TypeDef *  SPIx)

Deinitializes the SPIx peripheral registers to their default reset values.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
Return values
None
void SPI_I2S_DMACmd ( SPI_TypeDef *  SPIx,
uint16_t  SPI_I2S_DMAReq,
FunctionalState  NewState 
)

Enables or disables the SPIx/I2Sx DMA interface.

Parameters
SPIx,:where x can be 1 or 2 in SPI mode or 1 in I2S mode to select the SPI peripheral.
SPI_I2S_DMAReq,:specifies the SPI DMA transfer request to be enabled or disabled. This parameter can be any combination of the following values:
  • SPI_I2S_DMAReq_Tx: Tx buffer DMA transfer request
  • SPI_I2S_DMAReq_Rx: Rx buffer DMA transfer request
NewState,:new state of the selected SPI DMA transfer request. This parameter can be: ENABLE or DISABLE.
Return values
None
FlagStatus SPI_I2S_GetFlagStatus ( SPI_TypeDef *  SPIx,
uint16_t  SPI_I2S_FLAG 
)

Checks whether the specified SPI flag is set or not.

Parameters
SPIx,:where x can be 1 or 2 in SPI mode or 1 in I2S mode to select the SPI peripheral.
SPI_I2S_FLAG,:specifies the SPI flag to check. This parameter can be one of the following values:
  • SPI_I2S_FLAG_TXE: Transmit buffer empty flag.
  • SPI_I2S_FLAG_RXNE: Receive buffer not empty flag.
  • SPI_I2S_FLAG_BSY: Busy flag.
  • SPI_I2S_FLAG_OVR: Overrun flag.
  • SPI_FLAG_MODF: Mode Fault flag.
  • SPI_FLAG_CRCERR: CRC Error flag.
  • SPI_I2S_FLAG_FRE: TI frame format error flag.
  • I2S_FLAG_UDR: Underrun Error flag.
  • I2S_FLAG_CHSIDE: Channel Side flag.
Return values
Thenew state of SPI_I2S_FLAG (SET or RESET).
ITStatus SPI_I2S_GetITStatus ( SPI_TypeDef *  SPIx,
uint8_t  SPI_I2S_IT 
)

Checks whether the specified SPI/I2S interrupt has occurred or not.

Parameters
SPIx,:where x can be 1 or 2 in SPI mode or 1 in I2S mode to select the SPI peripheral.
SPI_I2S_IT,:specifies the SPI interrupt source to check. This parameter can be one of the following values:
  • SPI_I2S_IT_TXE: Transmit buffer empty interrupt.
  • SPI_I2S_IT_RXNE: Receive buffer not empty interrupt.
  • SPI_IT_MODF: Mode Fault interrupt.
  • SPI_I2S_IT_OVR: Overrun interrupt.
  • I2S_IT_UDR: Underrun interrupt.
  • SPI_I2S_IT_FRE: Format Error interrupt.
Return values
Thenew state of SPI_I2S_IT (SET or RESET).
void SPI_I2S_ITConfig ( SPI_TypeDef *  SPIx,
uint8_t  SPI_I2S_IT,
FunctionalState  NewState 
)

Enables or disables the specified SPI/I2S interrupts.

Parameters
SPIx,:where x can be 1 or 2 in SPI mode or 1 in I2S mode to select the SPI peripheral.
SPI_I2S_IT,:specifies the SPI interrupt source to be enabled or disabled. This parameter can be one of the following values:
  • SPI_I2S_IT_TXE: Tx buffer empty interrupt mask
  • SPI_I2S_IT_RXNE: Rx buffer not empty interrupt mask
  • SPI_I2S_IT_ERR: Error interrupt mask
NewState,:new state of the specified SPI interrupt. This parameter can be: ENABLE or DISABLE.
Return values
None
uint16_t SPI_I2S_ReceiveData16 ( SPI_TypeDef *  SPIx)

Returns the most recent received data by the SPIx peripheral.

Parameters
SPIx,:where x can be 1 or 2 in SPI mode or 1 in I2S mode to select the SPI peripheral.
Return values
Thevalue of the received data.
void SPI_I2S_SendData16 ( SPI_TypeDef *  SPIx,
uint16_t  Data 
)

Transmits a Data through the SPIx/I2Sx peripheral.

Parameters
SPIx,:where x can be 1 or 2 in SPI mode or 1 in I2S mode to select the SPI peripheral.
Data,:Data to be transmitted.
Return values
None
void SPI_Init ( SPI_TypeDef *  SPIx,
SPI_InitTypeDef SPI_InitStruct 
)

Initializes the SPIx peripheral according to the specified parameters in the SPI_InitStruct.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_InitStruct,:pointer to a SPI_InitTypeDef structure that contains the configuration information for the specified SPI peripheral.
Return values
None
void SPI_LastDMATransferCmd ( SPI_TypeDef *  SPIx,
uint16_t  SPI_LastDMATransfer 
)

Configures the number of data to transfer type(Even/Odd) for the DMA last transfers and for the selected SPI.

Note
This function have a meaning only if DMA mode is selected and if the packing mode is used (data length <= 8 and DMA transfer size halfword)
Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_LastDMATransfer,:specifies the SPI last DMA transfers state. This parameter can be one of the following values:
  • SPI_LastDMATransfer_TxEvenRxEven: Number of data for transmission Even and number of data for reception Even.
  • SPI_LastDMATransfer_TxOddRxEven: Number of data for transmission Odd and number of data for reception Even.
  • SPI_LastDMATransfer_TxEvenRxOdd: Number of data for transmission Even and number of data for reception Odd.
  • SPI_LastDMATransfer_TxOddRxOdd: Number of data for transmission Odd and number of data for reception Odd.
Return values
None
void SPI_NSSInternalSoftwareConfig ( SPI_TypeDef *  SPIx,
uint16_t  SPI_NSSInternalSoft 
)

Configures internally by software the NSS pin for the selected SPI.

Note
This function can be called only after the SPI_Init() function has been called.
Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_NSSInternalSoft,:specifies the SPI NSS internal state. This parameter can be one of the following values:
  • SPI_NSSInternalSoft_Set: Set NSS pin internally
  • SPI_NSSInternalSoft_Reset: Reset NSS pin internally
Return values
None
void SPI_NSSPulseModeCmd ( SPI_TypeDef *  SPIx,
FunctionalState  NewState 
)

Enables or disables the NSS pulse management mode.

Note
This function can be called only after the SPI_Init() function has been called.
When TI mode is selected, the control bits NSSP is not taken into consideration and are configured by hardware respectively to the TI mode requirements.
Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
NewState,:new state of the NSS pulse management mode. This parameter can be: ENABLE or DISABLE.
Return values
None
uint8_t SPI_ReceiveData8 ( SPI_TypeDef *  SPIx)

Returns the most recent received data by the SPIx/I2Sx peripheral.

Parameters
SPIx,:where x can be 1 or 2 in SPI mode to select the SPI peripheral.
Return values
Thevalue of the received data.
void SPI_RxFIFOThresholdConfig ( SPI_TypeDef *  SPIx,
uint16_t  SPI_RxFIFOThreshold 
)

Configures the FIFO reception threshold for the selected SPI.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
SPI_RxFIFOThreshold,:specifies the FIFO reception threshold. This parameter can be one of the following values:
  • SPI_RxFIFOThreshold_HF: RXNE event is generated if the FIFO level is greater or equal to 1/2.
  • SPI_RxFIFOThreshold_QF: RXNE event is generated if the FIFO level is greater or equal to 1/4.
Return values
None
void SPI_SendData8 ( SPI_TypeDef *  SPIx,
uint8_t  Data 
)

Transmits a Data through the SPIx/I2Sx peripheral.

Parameters
SPIx,:where x can be 1 or 2 in SPI mode to select the SPI peripheral.
Data,:Data to be transmitted.
Return values
None
void SPI_SSOutputCmd ( SPI_TypeDef *  SPIx,
FunctionalState  NewState 
)

Enables or disables the SS output for the selected SPI.

Note
This function can be called only after the SPI_Init() function has been called and the NSS hardware management mode is selected.
Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
NewState,:new state of the SPIx SS output. This parameter can be: ENABLE or DISABLE.
Return values
None
void SPI_StructInit ( SPI_InitTypeDef SPI_InitStruct)

Fills each SPI_InitStruct member with its default value.

Parameters
SPI_InitStruct,:pointer to a SPI_InitTypeDef structure which will be initialized.
Return values
None
void SPI_TIModeCmd ( SPI_TypeDef *  SPIx,
FunctionalState  NewState 
)

Enables or disables the TI Mode.

Note
This function can be called only after the SPI_Init() function has been called.
When TI mode is selected, the control bits SSM, SSI, CPOL and CPHA are not taken into consideration and are configured by hardware respectively to the TI mode requirements.
Parameters
SPIx,:where x can be 1 to select the SPI peripheral.
NewState,:new state of the selected SPI TI communication mode. This parameter can be: ENABLE or DISABLE.
Return values
None
void SPI_TransmitCRC ( SPI_TypeDef *  SPIx)

Transmit the SPIx CRC value.

Parameters
SPIx,:where x can be 1 or 2 to select the SPI peripheral.
Return values
None