Generic SPI#
Modules#
Enumerations#
Enumeration for different GSPI callback events.
Enumeration for GSPI power state.
Enumeration for GSPI clock modes.
Enumeration for GSPI master modes.
Enumeration for GSPI secondary select mode.
Enumeration for GSPI Master instance, enum for one member, future provision is provided.
Enumeration for GSPI secondary numbers.
Typedefs#
Renamed signal event structure.
Renamed status structure.
Renamed GSPI driver structure.
Created GSPI handle type.
Functions#
Set the clock for the GSPI peripheral, Configures the PLL clock and SOC clock with the value set by the user in the clock configuration structure.
Initialize the GSPI.
Uninitialize the GSPI.
Control and configure the GSPI.
Receive data from the secondary device.
Send data to the secondary device.
Send and receive data to the secondary device simultaneously.
Set the main state, i.e., activate/de-activate the main.
Register the user callback function.
Un-register the user callback function.
Get the GSPI version.
Get the transfer status GSPI.
Get data receive count of the GSPI.
Get the transmit data count of GSPI.
Fetch the clock division factor.
Fetch the frame length, i.e., bit width.
Set the secondary number in multi-secondary operation.
Enumeration Documentation#
gspi_event_typedef_t#
gspi_event_typedef_t
Enumeration for different GSPI callback events.
Enumerator | |
---|---|
SL_GSPI_TRANSFER_COMPLETE | Transfer complete event. |
SL_GSPI_DATA_LOST | Data lost event. |
SL_GSPI_MODE_FAULT | Mode fault event. |
56
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_gspi_power_state_t#
sl_gspi_power_state_t
Enumeration for GSPI power state.
Enumerator | |
---|---|
SL_GSPI_POWER_OFF | Power mode OFF. |
SL_GSPI_LOW_POWER | Low power mode. |
SL_GSPI_FULL_POWER | Full power mode. |
SL_GSPI_POWER_MODE_LAST | Last member of enum for validation. |
63
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
clock_mode_typedef_t#
clock_mode_typedef_t
Enumeration for GSPI clock modes.
Enumerator | |
---|---|
SL_GSPI_MODE_0 | Mode 0 CPOL0_CPHA0. |
SL_GSPI_MODE_3 | Mode 1 CPOL1_CPHA1. |
71
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
master_mode_typedef_t#
master_mode_typedef_t
Enumeration for GSPI master modes.
Enumerator | |
---|---|
SL_GSPI_MASTER_INACTIVE | Master mode inactive. |
SL_GSPI_MASTER_ACTIVE | Master mode active. |
SL_GSPI_MASTER_MODE_LAST | Last member of enum for validation. |
77
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
slave_select_mode_typedef_t#
slave_select_mode_typedef_t
Enumeration for GSPI secondary select mode.
Enumerator | |
---|---|
SL_GSPI_MASTER_UNUSED | Master unused mode. |
SL_GSPI_MASTER_SW | Master software mode. |
SL_GSPI_MASTER_HW_OUTPUT | Master hardware output mode. |
SL_GSPI_SLAVE_SELECT_MODE_LAST | Last member of enum for validation. |
84
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_gspi_instance_t#
sl_gspi_instance_t
Enumeration for GSPI Master instance, enum for one member, future provision is provided.
Enumerator | |
---|---|
SL_GSPI_MASTER | GSPI Master Instance. |
SL_GSPI_INSTANCE_LAST_ENUM | Last member of enum for validation. |
92
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_gspi_slave_number_t#
sl_gspi_slave_number_t
Enumeration for GSPI secondary numbers.
Enumerator | |
---|---|
GSPI_SLAVE_0 | Slave No. 1. |
GSPI_SLAVE_1 | Slave No. 2. |
GSPI_SLAVE_2 | Slave No. 2. |
GSPI_SLAVE_LAST_ENUM | Last member of enum for validation. |
98
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
Typedef Documentation#
sl_gspi_signal_event_t#
typedef ARM_SPI_SignalEvent_t sl_gspi_signal_event_t
Renamed signal event structure.
50
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_gspi_status_t#
typedef ARM_SPI_STATUS sl_gspi_status_t
Renamed status structure.
51
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_gspi_driver_t#
typedef ARM_DRIVER_SPI sl_gspi_driver_t
Renamed GSPI driver structure.
52
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_gspi_handle_t#
typedef const void* sl_gspi_handle_t
Created GSPI handle type.
53
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
Function Documentation#
sl_si91x_gspi_configure_clock#
sl_status_t sl_si91x_gspi_configure_clock (sl_gspi_clock_config_t * clock_configuration)
Set the clock for the GSPI peripheral, Configures the PLL clock and SOC clock with the value set by the user in the clock configuration structure.
N/A | clock_configuration | Pointer to the clock configuration structure sl_gspi_clock_config_t |
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function has failed
SL_STATUS_NOT_INITIALIZED (0x0011) - Clock is not initialized
148
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_init#
sl_status_t sl_si91x_gspi_init (sl_gspi_instance_t instance, sl_gspi_handle_t * gspi_handle)
Initialize the GSPI.
[in] | instance | GSPI Instance. sl_gspi_instance_t |
[in] | gspi_handle | Double Pointer to the GSPI driver handle sl_gspi_handle_t |
If the DMA is enabled, it also initializes the DMA. Pass the address of the pointer for storing the GSPI master handle, which can be used in the future for other function calls.
Pre-conditions:
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_BUSY (0x0004) - Driver is busy
166
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_deinit#
sl_status_t sl_si91x_gspi_deinit (sl_gspi_handle_t gspi_handle)
Uninitialize the GSPI.
[in] | gspi_handle | Pointer to the GSPI driver handle sl_gspi_handle_t |
If the DMA is enabled, it also uninitializes the DMA.
Pre-conditions:
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
180
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_set_configuration#
sl_status_t sl_si91x_gspi_set_configuration (sl_gspi_handle_t gspi_handle, sl_gspi_control_config_t * control_configuration)
Control and configure the GSPI.
[in] | gspi_handle | Pointer to the GSPI driver handle sl_gspi_handle_t |
[in] | control_configuration | pointer to the configuration structure sl_gspi_control_config_t |
The configurations are listed below:
swap_read (enable/disable)
swap_write (enable/disable)
bit_width (8_bit/16_bit)
clock_mode (mode0/mode3)
slave_select_mode (hw_output/sw)
bitrate
Pre-conditions:
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function has failed
SL_STATUS_NOT_SUPPORTED (0x000F) - Parameter is not supported
SL_STATUS_BUSY (0x0004) - Driver is busy
SL_STATUS_INVALID_MODE (0x0024) - Secondary select Mode is invalid
SL_STATUS_INVALID_TYPE (0x0026) - SPI frame format is not valid
SL_STATUS_INVALID_RANGE (0x0028) - Data bits (frame length) are not in range
210
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_receive_data#
sl_status_t sl_si91x_gspi_receive_data (sl_gspi_handle_t gspi_handle, void * data, uint32_t data_length)
Receive data from the secondary device.
[in] | gspi_handle | Pointer to the GSPI driver handle sl_gspi_handle_t |
[in] | data | pointer to the variable that will store the received data |
[in] | data_length | (uint32_t) number of data items to receive |
If DMA is enabled, it configures the DMA channel and required parameters. When the received data is equal to data_length passed in this function, a callback event is generated which can be registered using sl_si91x_gspi_register_event_callback
Pre-conditions:
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function has failed
SL_STATUS_BUSY (0x0004) - Driver is busy
236
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_send_data#
sl_status_t sl_si91x_gspi_send_data (sl_gspi_handle_t gspi_handle, const void * data, uint32_t data_length)
Send data to the secondary device.
[in] | gspi_handle | Pointer to the GSPI driver handle ( sl_gspi_handle_t) |
[in] | data | const pointer to the variable that has data which needs to be sent |
[in] | data_length | (uint32_t) number of data items to send |
If DMA is enabled, it configures the DMA channel and required parameters. When the send data is equal to data_length passed in this function, a callback event is generated which can be registered using sl_si91x_gspi_register_event_callback
Pre-conditions:
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function has failed
SL_STATUS_BUSY (0x0004) - Driver is busy
261
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_transfer_data#
sl_status_t sl_si91x_gspi_transfer_data (sl_gspi_handle_t gspi_handle, const void * data_out, void * data_in, uint32_t data_length)
Send and receive data to the secondary device simultaneously.
[in] | gspi_handle | Pointer to the GSPI driver handle ( sl_gspi_handle_t) |
[in] | data_out | const pointer to the variable that has data which needs to be sent |
[in] | data_in | pointer to the variable that will store the received data |
[in] | data_length | (uint32_t) number of data items to receive |
If DMA is enabled, it configures the DMA channel and required parameters. When the received data and send data is equal to data_length passed in this function, a callback event is generated which can be registered using sl_si91x_gspi_register_event_callback
Pre-conditions:
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function has failed
SL_STATUS_BUSY (0x0004) - Driver is busy
287
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_set_master_state#
sl_status_t sl_si91x_gspi_set_master_state (sl_gspi_handle_t gspi_handle, boolean_t value)
Set the main state, i.e., activate/de-activate the main.
[in] | gspi_handle | Pointer to the GSPI driver handle ( sl_gspi_handle_t) |
[in] | value | (boolean_t) Enable or Disable |
Pre-conditions:
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_BUSY (0x0004) - Driver is busy
SL_STATUS_INVALID_MODE (0x0024) - Mode is invalid (Fails to activate master)
308
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_register_event_callback#
sl_status_t sl_si91x_gspi_register_event_callback (sl_gspi_handle_t gspi_handle, sl_gspi_signal_event_t callback_event)
Register the user callback function.
[in] | gspi_handle | Pointer to the GSPI driver handle ( sl_gspi_handle_t) |
[in] | callback_event | Pointer to the function that needs to be called at the time of interrupt ( sl_gspi_signal_event_t) |
At the time of events, the function passed in the parameter is called with the respective event as the parameter. Before calling this function again, it is mandatory to call the sl_si91x_gspi_unregister_event_callback function to unregister the callback, otherwise it returns SL_STATUS_BUSY error code.
Returns
status
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_BUSY (0x0004) - Driver is busy
326
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_unregister_event_callback#
void sl_si91x_gspi_unregister_event_callback (void )
Un-register the user callback function.
[in] |
It is mandatory to call this function before registering the callback again.
Pre-conditions:
Returns
none
339
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_get_version#
sl_gspi_version_t sl_si91x_gspi_get_version (void )
Get the GSPI version.
[in] |
It returns the API version of GSPI.
Returns
(sl_gspi_version_t) type structure
348
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_get_status#
sl_gspi_status_t sl_si91x_gspi_get_status (sl_gspi_handle_t gspi_handle)
Get the transfer status GSPI.
[in] | gspi_handle | Pointer to the GSPI driver handle ( sl_gspi_handle_t) |
It returns the sl_gspi_status_t type structure. The members are:
Busy
Data Lost
Mode Fault It is generally used to poll the busy status of GSPI Master.
Returns
sl_gspi_status_t type structure
366
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_get_rx_data_count#
uint32_t sl_si91x_gspi_get_rx_data_count (sl_gspi_handle_t gspi_handle)
Get data receive count of the GSPI.
[in] | gspi_handle | Pointer to the GSPI driver handle ( sl_gspi_handle_t) |
If a receive operation is started, this function can be used to get number of data bytes received.
Returns
uint32_t value of the RX data count
381
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_get_tx_data_count#
uint32_t sl_si91x_gspi_get_tx_data_count (void )
Get the transmit data count of GSPI.
[in] | Pointer to the GSPI driver handle ( sl_gspi_handle_t) |
If a send operation is started, this function can be used to get number of data bytes send.
Returns
uint32_t value of the tx data count
397
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_get_clock_division_factor#
int32_t sl_si91x_gspi_get_clock_division_factor (sl_gspi_handle_t gspi_handle)
Fetch the clock division factor.
[in] | gspi_handle | Pointer to the GSPI driver handle ( sl_gspi_handle_t) |
Returns
factor (int32_t) The value of the clock division factor
406
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_get_frame_length#
uint32_t sl_si91x_gspi_get_frame_length (void )
Fetch the frame length, i.e., bit width.
[in] |
The frame length ranges between 1 and 15.
Returns
frame_length (uint32_t) The value of the frame length
416
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h
sl_si91x_gspi_set_slave_number#
__STATIC_INLINE sl_status_t sl_si91x_gspi_set_slave_number (uint8_t number)
Set the secondary number in multi-secondary operation.
[in] | number | Secondary number ( sl_gspi_slave_number_t) |
For a single secondary also, this API needs to be called before transferring the data
Returns
none
427
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_gspi.h