Synchronous Serial Interface#
Modules#
Enumerations#
Enumeration for different SSI callback events.
Enumeration for different SSI peripheral clock modes.
Enumeration for different SSI peripheral device modes.
Enumeration for SSI Secondary numbers.
Typedefs#
renaming arm power state structure
renaming arm SPI status
Renaming SSI driver structure.
SSI Handle to be passed into APIs.
Callback typedef for SSI.
Variables#
Release version number.
SQA version number.
DEV version number.
bit width either 8 or 16 bit
mode such as Master or Slave mode
clock mode such as CPOL0 CPHA1
baud rate for SSI
Delay for receive input signal.
Clock Division Factor.
intf PLL control value
intf PLL clock frequency
intf PLL reference clock frequency
SoC PLL Clock frequency.
SoC PLL reference clock frequency.
SoC PLL count value.
Functions#
Set the clock for the SSI peripheral, Configures the PLL clock and SOC clock with the value set by user in the clock configuration structure.
Initialize the SSI.
Uninitialize the SSI.
Control and configure the SSI.
Start receiving the data from the SSI interface.
Start sending the data from the SSI interface.
Start to send and receive bi-directional full duplex data to/from the SPI secondary.
Get the SSI status.
Get the SSI version.
Get data receive count of the SSI.
Get the transmit data count of SSI.
Register the user event callback.
Unregister the user event callback.
Fetch the clock division factor.
Fetch the frame length i.e., bit width.
To fetch the transmit FIFO threshold value, this value controls the level of entries at which the transmit FIFO controller triggers an interrupt.
To fetch the receiver FIFO threshold value, this value controls the level of entries at which the receive FIFO controller triggers an interrupt.
To fetch the receiver sample delay value, it used to delay the sample of the RX input signal.
Set the secondary number in multi-secondary operation.
Enumeration Documentation#
ssi_event_typedef_t#
ssi_event_typedef_t
Enumeration for different SSI callback events.
Enumerator | |
---|---|
SSI_EVENT_TRANSFER_COMPLETE | Transfer complete event. |
SSI_EVENT_DATA_LOST | Data lost event. |
SSI_EVENT_MODE_FAULT | Mode fault event. |
64
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
ssi_peripheral_clock_mode_t#
ssi_peripheral_clock_mode_t
Enumeration for different SSI peripheral clock modes.
Enumerator | |
---|---|
SL_SSI_PERIPHERAL_CPOL0_CPHA0 | Mode 0 (CPOL = 0, CPHA = 0) |
SL_SSI_PERIPHERAL_CPOL0_CPHA1 | Mode 1 (CPOL = 0, CPHA = 1) |
SL_SSI_PERIPHERAL_CPOL1_CPHA0 | Mode 2 (CPOL = 1, CPHA = 0) |
SL_SSI_PERIPHERAL_CPOL1_CPHA1 | Mode 3 (CPOL = 1, CPHA = 1) |
SL_SSI_PERIPHERAL_TI_SSI | TI mode. |
SL_SSI_PERIPHERAL_MICROWIRE | Microwire/Half_duplex mode. |
SL_SSI_PERIPHERAL_MODE_LAST | LSAT member of enum for validation. |
71
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_ssi_instance_t#
sl_ssi_instance_t
Enumeration for different SSI peripheral device modes.
Enumerator | |
---|---|
SL_SSI_MASTER_ACTIVE | Primary mode is active. |
SL_SSI_SLAVE_ACTIVE | Secondary mode is active. |
SL_SSI_ULP_MASTER_ACTIVE | ULP PRIMARY mode is active. |
SL_SSI_INSTANCE_LAST | LSAT member of enum for validation. |
82
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_ssi_slave_number_t#
sl_ssi_slave_number_t
Enumeration for SSI Secondary numbers.
Enumerator | |
---|---|
SSI_SLAVE_0 | Secondary No. 1. |
SSI_SLAVE_1 | Secondary No. 2. |
SSI_SLAVE_2 | Secondary No. 3. |
SSI_SLAVE_3 | Secondary No. 4. |
SSI_SLAVE_NUMBER_LAST_ENUM | Last member of enum for validation. |
110
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
Typedef Documentation#
sl_ssi_power_state_t#
typedef ARM_POWER_STATE sl_ssi_power_state_t
renaming arm power state structure
50
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_ssi_status_t#
typedef ARM_SPI_STATUS sl_ssi_status_t
renaming arm SPI status
51
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_ssi_driver_t#
typedef ARM_DRIVER_SPI sl_ssi_driver_t
Renaming SSI driver structure.
52
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_ssi_handle_t#
typedef const void* sl_ssi_handle_t
SSI Handle to be passed into APIs.
53
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_ssi_signal_event_t#
typedef ARM_SPI_SignalEvent_t sl_ssi_signal_event_t
Callback typedef for SSI.
54
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
Variable Documentation#
release#
uint8_t sl_ssi_version_t::release
Release version number.
58
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
major#
uint8_t sl_ssi_version_t::major
SQA version number.
59
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
minor#
uint8_t sl_ssi_version_t::minor
DEV version number.
60
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
bit_width#
uint8_t sl_ssi_control_config_t::bit_width
bit width either 8 or 16 bit
91
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
device_mode#
uint32_t sl_ssi_control_config_t::device_mode
mode such as Master or Slave mode
92
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
clock_mode#
uint32_t sl_ssi_control_config_t::clock_mode
clock mode such as CPOL0 CPHA1
93
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
baud_rate#
uint32_t sl_ssi_control_config_t::baud_rate
baud rate for SSI
94
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
receive_sample_delay#
uint32_t sl_ssi_control_config_t::receive_sample_delay
Delay for receive input signal.
95
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
division_factor#
uint16_t sl_ssi_clock_config_t::division_factor
Clock Division Factor.
100
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
intf_pll_500_control_value#
uint16_t sl_ssi_clock_config_t::intf_pll_500_control_value
intf PLL control value
101
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
intf_pll_clock#
uint32_t sl_ssi_clock_config_t::intf_pll_clock
intf PLL clock frequency
102
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
intf_pll_reference_clock#
uint32_t sl_ssi_clock_config_t::intf_pll_reference_clock
intf PLL reference clock frequency
103
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
soc_pll_clock#
uint32_t sl_ssi_clock_config_t::soc_pll_clock
SoC PLL Clock frequency.
104
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
soc_pll_reference_clock#
uint32_t sl_ssi_clock_config_t::soc_pll_reference_clock
SoC PLL reference clock frequency.
105
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
soc_pll_mm_count_value#
uint8_t sl_ssi_clock_config_t::soc_pll_mm_count_value
SoC PLL count value.
106
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
Function Documentation#
sl_si91x_ssi_configure_clock#
sl_status_t sl_si91x_ssi_configure_clock (sl_ssi_clock_config_t * clock_config)
Set the clock for the SSI peripheral, Configures the PLL clock and SOC clock with the value set by user in the clock configuration structure.
[in] | clock_config | Pointer to clock config structure sl_ssi_clock_config_t |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_OK (0x0000) - Success, timer clock-source parameters configured properly
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function is failed
SL_STATUS_NOT_INITIALIZED (0x0011) - Clock is not initialized
130
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_init#
sl_status_t sl_si91x_ssi_init (sl_ssi_instance_t instance, sl_ssi_handle_t * ssi_handle)
Initialize the SSI.
[in] | instance | (Primary/Secondary/ULP Primary) ( sl_ssi_instance_t) |
[in] | ssi_handle | Double Pointer to the SSI driver handle ( sl_ssi_handle_t) |
If the DMA is enabled, it also initializes the DMA. Pass the address of the pointer for storing the SSI Primary/Secondary/ULP Primary handle, which can be used in future for other function calls.
Returns
status 0 if successful, else error code as follow.
SL_STATUS_OK (0x0000) - Success, otherwise fail error code as follow
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_BUSY (0x0004) - Driver is busy
144
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_deinit#
sl_status_t sl_si91x_ssi_deinit (sl_ssi_handle_t ssi_handle)
Uninitialize the SSI.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
If the DMA is enabled, it also uninitializes the DMA
Returns
status 0 if successful, else error code as follow.
SL_STATUS_OK (0x0000) - Success, otherwise fail error code as follow
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
155
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_set_configuration#
sl_status_t sl_si91x_ssi_set_configuration (sl_ssi_handle_t ssi_handle, sl_ssi_control_config_t * control_configuration, sl_ssi_slave_number_t slave_number)
Control and configure the SSI.
[in] | ssi_handle | pointer to ssi instance handle. ( sl_ssi_handle_t) |
[in] | control_configuration | pointer to control config structure. ( sl_ssi_control_config_t) |
[in] | slave_number | In the current implementation variable slave_number is un-used ( sl_ssi_slave_number_t) |
Mode (Primary/Secondary/ULP Primary)
bit_width (4 bit to 16 bit)
clock_mode/Frame format (mode0 to mode3, TI and Microwire)
bitrate (10 Mbps to 40 Mbps)
Rx sample delay (0 to 63)
Returns
status 0 if successful, else error code as follow.
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function is failed
SL_STATUS_NOT_SUPPORTED (0x000F) - Parameter is not supported
SL_STATUS_BUSY (0x0004) - Driver is busy
SL_STATUS_INVALID_MODE (0x0024) - Slave select Mode is invalid
SL_STATUS_INVALID_TYPE (0x0026) - SPI frame format is not valid
SL_STATUS_INVALID_RANGE (0x0028) - Data bits (frame length) is not in range
181
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_receive_data#
sl_status_t sl_si91x_ssi_receive_data (sl_ssi_handle_t ssi_handle, void * data, uint32_t data_length)
Start receiving the data from the SSI interface.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
[in] | data | pointer to the variable which will store the received data |
[in] | data_length | (uint32_t) number of data items to receive |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function is failed
SL_STATUS_BUSY (0x0004) - Driver is busy
202
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_send_data#
sl_status_t sl_si91x_ssi_send_data (sl_ssi_handle_t ssi_handle, const void * data, uint32_t data_length)
Start sending the data from the SSI interface.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
[in] | data | pointer to the variable which will store the received data |
[in] | data_length | (uint32_t) number of data items to receive |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function is failed
SL_STATUS_BUSY (0x0004) - Driver is busy
222
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_transfer_data#
sl_status_t sl_si91x_ssi_transfer_data (sl_ssi_handle_t ssi_handle, const void * data_out, void * data_in, uint32_t data_length)
Start to send and receive bi-directional full duplex data to/from the SPI secondary.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_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 which will store the received data |
[in] | data_length | (uint32_t) number of data items to receive |
Returns
status 0 if successful, else error code
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_INVALID_PARAMETER (0x0021) - Parameters are invalid
SL_STATUS_FAIL (0x0001) - The function is failed
SL_STATUS_BUSY (0x0004) - Driver is busy
244
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_status#
sl_ssi_status_t sl_si91x_ssi_get_status (sl_ssi_handle_t ssi_handle)
Get the SSI status.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
Get the transfer status SSI.
Returns
busy, data lost or mode fault returns as a bit field.
It returns the sl_ssi_status_t type structure. The members are:
Busy
Data Lost
Mode Fault It is generally used to poll the busy status of SSI Master/ULP Master.
Returns
( sl_ssi_status_t) type structure
256
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_version#
sl_ssi_version_t sl_si91x_ssi_get_version (void )
Get the SSI version.
[in] |
It returns the API version of SSI.
Returns
driver version.
266
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_rx_data_count#
uint32_t sl_si91x_ssi_get_rx_data_count (sl_ssi_handle_t ssi_handle)
Get data receive count of the SSI.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
It returns the number of data received at the time of function call.
Returns
uint32_t value of the RX data count
296
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_tx_data_count#
uint32_t sl_si91x_ssi_get_tx_data_count (sl_ssi_handle_t ssi_handle)
Get the transmit data count of SSI.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
It returns the number of data transmit at the time of function call
Returns
uint32_t value of the tx data count
309
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_register_event_callback#
sl_status_t sl_si91x_ssi_register_event_callback (sl_ssi_handle_t ssi_handle, sl_ssi_signal_event_t callback_event)
Register the user event callback.
[in] | ssi_handle | handle Pointer to the SSI driver handle ( sl_ssi_handle_t) |
[in] | callback_event | Pointer to the function which needs to be called at the time of interrupt |
It registers the callback, i.e., stores the callback function address and pass to the variable that is called in Interrupt Handler. If another callback is registered without unregistering previous callback then, it returns an error code as follow, so it is mandatory to unregister the callback before registering another callback.
Returns
status 0 if successful, else error code as follow.
SL_STATUS_BUSY (0x0004) - The callback is already registered, unregister previous callback before registering new one.
SL_STATUS_OK (0x0000) - Success
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
326
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_unregister_event_callback#
void sl_si91x_ssi_unregister_event_callback (void )
Unregister the user event callback.
[in] |
It unregisters the callback, i.e., clears the callback function address and passes a NULL value to the variable.
336
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_clock_division_factor#
uint32_t sl_si91x_ssi_get_clock_division_factor (sl_ssi_handle_t ssi_handle)
Fetch the clock division factor.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
Returns
factor(int32_t) The value of clock division fac
344
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_frame_length#
uint32_t sl_si91x_ssi_get_frame_length (sl_ssi_handle_t ssi_handle)
Fetch the frame length i.e., bit width.
[in] | ssi_handle |
The frame length ranges between 4 and 16.
Returns
frame_length (uint32_t) The value of frame length
353
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_tx_fifo_threshold#
uint32_t sl_si91x_ssi_get_tx_fifo_threshold (sl_ssi_handle_t ssi_handle)
To fetch the transmit FIFO threshold value, this value controls the level of entries at which the transmit FIFO controller triggers an interrupt.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
Returns
Transmit fifo threshold (uint32_t) The value of transmit fifo threshold
362
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_rx_fifo_threshold#
uint32_t sl_si91x_ssi_get_rx_fifo_threshold (sl_ssi_handle_t ssi_handle)
To fetch the receiver FIFO threshold value, this value controls the level of entries at which the receive FIFO controller triggers an interrupt.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
Returns
Receiver fifo threshold (uint32_t) The value of receiver fifo threshold
371
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_get_receiver_sample_delay#
uint32_t sl_si91x_ssi_get_receiver_sample_delay (sl_ssi_handle_t ssi_handle)
To fetch the receiver sample delay value, it used to delay the sample of the RX input signal.
[in] | ssi_handle | Pointer to the SSI driver handle ( sl_ssi_handle_t) |
Each value represents a single ssi_clk delay on the sample of the rxd signal.
Returns
Receiver sample delay (uint32_t) The value of receiver sample delay
381
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h
sl_si91x_ssi_set_slave_number#
__STATIC_INLINE sl_status_t sl_si91x_ssi_set_slave_number (uint8_t number)
Set the secondary number in multi-secondary operation.
[in] | number | Secondary number ( sl_ssi_slave_number_t ) |
For single secondary also, this API needs to be called before transferring the data.
Returns
none
391
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_ssi.h