Data Structures | |
struct | XMC_SPI_CH_CONFIG_t |
Macros | |
#define | XMC_SPI0_CH0 XMC_USIC0_CH0 |
#define | XMC_SPI0_CH1 XMC_USIC0_CH1 |
#define | XMC_SPI1_CH0 XMC_USIC1_CH0 |
#define | XMC_SPI1_CH1 XMC_USIC1_CH1 |
#define | XMC_SPI2_CH0 XMC_USIC2_CH0 |
#define | XMC_SPI2_CH1 XMC_USIC2_CH1 |
Enumerations | |
enum | XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_t |
enum | XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_t |
enum | XMC_SPI_CH_BUS_MODE_t |
enum | XMC_SPI_CH_DATA_POLARITY_t |
enum | XMC_SPI_CH_EVENT_t |
enum | XMC_SPI_CH_INPUT_FREQ_SLAVE_SELECT_DELAY_t |
enum | XMC_SPI_CH_INPUT_t |
enum | XMC_SPI_CH_INTERRUPT_NODE_POINTER_t |
enum | XMC_SPI_CH_MODE_t |
enum | XMC_SPI_CH_SLAVE_SEL_MSLS_INV_t |
enum | XMC_SPI_CH_SLAVE_SELECT_t |
enum | XMC_SPI_CH_STATUS_FLAG_t |
enum | XMC_SPI_CH_STATUS_t |
enum | XMC_SPI_CLOCK_MODE_t |
The SPI driver uses Universal Serial Interface Channel(USIC) module. The USIC module supports multiple data lines for SPI communication.
SPI driver provides structures, enumerations and APIs for configuring the USIC channel for SPI communication and also for data transaction.
SPI driver features:
#define XMC_SPI0_CH0 XMC_USIC0_CH0 |
SPI0 channel 0 base address
#define XMC_SPI0_CH1 XMC_USIC0_CH1 |
SPI0 channel 1 base address
#define XMC_SPI1_CH0 XMC_USIC1_CH0 |
SPI1 channel 0 base address
#define XMC_SPI1_CH1 XMC_USIC1_CH1 |
SPI1 channel 1 base address
#define XMC_SPI2_CH0 XMC_USIC2_CH0 |
SPI2 channel 0 base address
#define XMC_SPI2_CH1 XMC_USIC2_CH1 |
SPI2 channel 1 base address
SPI Baudrate Generator shift clock passive level
enum XMC_SPI_CH_EVENT_t |
Defines SPI specific events
Defines input frequency sources for slave select signal delay configuration.
enum XMC_SPI_CH_INPUT_t |
Define data and clock input stages
SPI channel interrupt node pointers
enum XMC_SPI_CH_MODE_t |
Defines the Polarity of the slave select signals SELO[7:0] in relation to the master slave select signal MSLS.
Defines Slave Select lines
Defines SPI event status
enum XMC_SPI_CH_STATUS_t |
enum XMC_SPI_CLOCK_MODE_t |
SPI clock modes
void XMC_SPI_CH_ClearStatusFlag | ( | XMC_USIC_CH_t *const | channel, |
const uint32_t | flag | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
flag | Protocol event status to be cleared for detection of next occurence. Refer @ XMC_SPI_CH_STATUS_FLAG_t for valid values. OR combinations of these enum item can be used as input. |
void XMC_SPI_CH_ConfigExternalInputSignalToBRG | ( | XMC_USIC_CH_t *const | channel, |
const uint16_t | pdiv, | ||
const XMC_USIC_CH_INPUT_COMBINATION_MODE_t | combination_mode | ||
) |
channel | Pointer to USIC channel handler of type XMC_USIC_CH_t Range: XMC_SPI0_CH0, XMC_SPI0_CH1,XMC_SPI1_CH0,XMC_SPI1_CH1,XMC_SPI2_CH0,XMC_SPI2_CH1 |
pdiv | Desired divider for the external frequency input. Range: minimum value = 1, maximum value = 1024 |
combination_mode | USIC channel input combination mode |
void XMC_SPI_CH_ConfigureShiftClockOutput | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_t | passive_level, | ||
const XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_t | clock_output | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
passive_level | polarity and delay of the selected shift clock. Refer XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_t for valid inputs. |
clock_output | shift clock source. Refer XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_t for valid inputs. |
void XMC_SPI_CH_DisableDataTransmission | ( | XMC_USIC_CH_t *const | channel | ) |
channel | Constant pointer to USIC channel handle of type XMC_USIC_CH_t Range: XMC_SPI0_CH0, XMC_SPI0_CH1,XMC_SPI1_CH0,XMC_SPI1_CH1,XMC_SPI2_CH0,XMC_SPI2_CH1 |
void XMC_SPI_CH_DisableDelayCompensation | ( | XMC_USIC_CH_t *const | channel | ) |
channel | Pointer to USIC channel handler of type XMC_USIC_CH_t Range: XMC_SPI0_CH0, XMC_SPI0_CH1,XMC_SPI1_CH0,XMC_SPI1_CH1,XMC_SPI2_CH0,XMC_SPI2_CH1 |
void XMC_SPI_CH_DisableEOF | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_DisableEvent | ( | XMC_USIC_CH_t *const | channel, |
const uint32_t | event | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
event | Protocol events which have to be disabled. Refer @ XMC_SPI_CH_EVENT_t for valid values. OR combinations of these enum item can be used as input. |
void XMC_SPI_CH_DisableFEM | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_DisableInputInversion | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_INPUT_t | input | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
input | SPI channel input stage. Refer XMC_SPI_CH_INPUT_t for valid inputs. |
void XMC_SPI_CH_DisableInterwordDelay | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_DisableMasterClock | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_DisableSlaveSelect | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant ponter to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_DisableSlaveSelectCodedMode | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_DisableSOF | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_EnableDataTransmission | ( | XMC_USIC_CH_t *const | channel | ) |
channel | Constant pointer to USIC channel handle of type XMC_USIC_CH_t Range: XMC_SPI0_CH0, XMC_SPI0_CH1,XMC_SPI1_CH0,XMC_SPI1_CH1,XMC_SPI2_CH0,XMC_SPI2_CH1 |
void XMC_SPI_CH_EnableDelayCompensation | ( | XMC_USIC_CH_t *const | channel | ) |
channel | Pointer to USIC channel handler of type XMC_USIC_CH_t Range: XMC_SPI0_CH0, XMC_SPI0_CH1,XMC_SPI1_CH0,XMC_SPI1_CH1,XMC_SPI2_CH0,XMC_SPI2_CH1 |
void XMC_SPI_CH_EnableEOF | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_EnableEvent | ( | XMC_USIC_CH_t *const | channel, |
const uint32_t | event | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
event | Protocol events which have to be enabled. Refer @ XMC_SPI_CH_EVENT_t for valid values. OR combinations of these enum items can be used as input. |
void XMC_SPI_CH_EnableFEM | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
Configure to keep MSLS(Slave select signal) active even after finishing the current data frame, by setting PCR.FEM bit.
This is typically used during the transmission of multi-data word frames, where there is possibility of delay in delivering the data. Frame end mode is enabled in XMC_SPI_CH_Init() during initialization. To disable XMC_SPI_CH_DisableFEM() can be invoked as needed in the program.
void XMC_SPI_CH_EnableInputInversion | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_INPUT_t | input | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
input | SPI channel input stage. Refer XMC_SPI_CH_INPUT_t for valid inputs. |
void XMC_SPI_CH_EnableInterwordDelay | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_EnableMasterClock | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_EnableSlaveSelect | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_SLAVE_SELECT_t | slave | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
slave | Slave select signal. Refer XMC_SPI_CH_SLAVE_SELECT_t for valid values. |
void XMC_SPI_CH_EnableSlaveSelectCodedMode | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_EnableSOF | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
uint16_t XMC_SPI_CH_GetReceivedData | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
uint32_t XMC_SPI_CH_GetStatusFlag | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_Init | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_CONFIG_t *const | config | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
config | pointer to constant SPI channel configuration data structure. Refer data structure XMC_SPI_CH_CONFIG_t for detail. |
void XMC_SPI_CH_InitEx | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_CONFIG_t *const | config, | ||
bool | init_brg | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
config | pointer to constant SPI channel configuration data structure. Refer data structure XMC_SPI_CH_CONFIG_t for detail. |
init_brg | Selects if the baudrate generator should be configured automatically. |
void XMC_SPI_CH_Receive | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_MODE_t | mode | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
mode | Communication mode of the SPI, based on this mode TCI(Transmit control information)is updated. Refer XMC_SPI_CH_MODE_t for valid values. |
void XMC_SPI_CH_SelectInterruptNodePointer | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_INTERRUPT_NODE_POINTER_t | interrupt_node, | ||
const uint32_t | service_request | ||
) |
channel | Pointer to USIC channel handler of type XMC_USIC_CH_t Range: XMC_SPI0_CH0, XMC_SPI0_CH1,XMC_SPI1_CH0,XMC_SPI1_CH1,XMC_SPI2_CH0,XMC_SPI2_CH1 |
interrupt_node | Interrupt node pointer to be configured. Range: XMC_SPI_CH_INTERRUPT_NODE_POINTER_TRANSMIT_SHIFT, XMC_SPI_CH_INTERRUPT_NODE_POINTER_TRANSMIT_BUFFER etc. |
service_request | Service request number. Range: 0 to 5. |
XMC_SPI_CH_STATUS_t XMC_SPI_CH_SetBaudrate | ( | XMC_USIC_CH_t *const | channel, |
const uint32_t | rate | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
rate | Bus speed in bits per second |
XMC_SPI_CH_STATUS_t XMC_SPI_CH_SetBaudrateEx | ( | XMC_USIC_CH_t *const | channel, |
const uint32_t | rate, | ||
bool | normal_divider_mode | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
rate | Bus speed in bits per second |
normal_divider_mode | Selects normal divider mode for baudrate generator instead of default fractional divider decreasing jitter of signal at the cost of frequency selection |
void XMC_SPI_CH_SetBitOrderLsbFirst | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_SetBitOrderMsbFirst | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_SetFrameLength | ( | XMC_USIC_CH_t *const | channel, |
const uint8_t | frame_length | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
frame_length | Number of bits in a frame. Range: 1 to 64. If the value 64 is configured, then the frame does not automatically end. User should explicitly end the frame. |
void XMC_SPI_CH_SetInputSource | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_INPUT_t | input, | ||
const uint8_t | source | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
input | SPI channel input stage. Refer XMC_SPI_CH_INPUT_t for valid values |
source | Input source select for the input stage. Range : [0 to 7] |
void XMC_SPI_CH_SetInterruptNodePointer | ( | XMC_USIC_CH_t *const | channel, |
const uint8_t | service_request | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
service_request | Service request number. Range: [0 to 5] |
void XMC_SPI_CH_SetInterwordDelay | ( | XMC_USIC_CH_t *const | channel, |
uint32_t | tinterword_delay_ns | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
tinterword_delay_ns | delay in terms of nano seconds. |
void XMC_SPI_CH_SetInterwordDelaySCLK | ( | XMC_USIC_CH_t *const | channel, |
uint32_t | sclk_period | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
sclk_period | in terms of clk cycles. |
void XMC_SPI_CH_SetSlaveSelectDelay | ( | XMC_USIC_CH_t *const | channel, |
uint32_t | sclk_period | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
sclk_period | delay in terms of sclk clock cycles. |
void XMC_SPI_CH_SetSlaveSelectPolarity | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_SLAVE_SEL_MSLS_INV_t | selo_inversion | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
selo_inversion | Polarity of the slave select signal relative to the MSLS signal. Refer XMC_SPI_CH_SLAVE_SEL_MSLS_INV_t for valid values |
void XMC_SPI_CH_SetTransmitMode | ( | XMC_USIC_CH_t *const | channel, |
const XMC_SPI_CH_MODE_t | mode | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
mode | Communication mode of the SPI, based on this mode TCI(Transmit control information)is updated. Refer XMC_SPI_CH_MODE_t for valid values. |
void XMC_SPI_CH_SetWordLength | ( | XMC_USIC_CH_t *const | channel, |
const uint8_t | word_length | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
word_length | Number of bits to be configured for a data word. Range: 1 to 16. |
void XMC_SPI_CH_Start | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
XMC_SPI_CH_STATUS_t XMC_SPI_CH_Stop | ( | XMC_USIC_CH_t *const | channel | ) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
void XMC_SPI_CH_Transmit | ( | XMC_USIC_CH_t *const | channel, |
const uint16_t | data, | ||
const XMC_SPI_CH_MODE_t | mode | ||
) |
channel | A constant pointer to XMC_USIC_CH_t, pointing to the USIC channel base address. |
data | Data to be transmitted |
mode | Communication mode of the SPI, based on this mode TCI(Transmit control information)is updated. Refer XMC_SPI_CH_MODE_t for valid values. |
void XMC_SPI_CH_TriggerServiceRequest | ( | XMC_USIC_CH_t *const | channel, |
const uint32_t | service_request_line | ||
) |
channel | Pointer to USIC channel handler of type XMC_USIC_CH_t Range: XMC_SPI0_CH0, XMC_SPI0_CH1,XMC_SPI1_CH0,XMC_SPI1_CH1,XMC_SPI2_CH0,XMC_SPI2_CH1 |
service_request_line | service request number of the event to be triggered. Range: 0 to 5. |