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 Slave 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#
Configure the SSI clock.
Initialize the SSI master.
Uninitialize the SSI primary.
Control the SPI interface.
Start receiving data from the SPI interface.
Start sending data from SPI interface.
Start sending/receiving bi-directional full duplex data to/from SPI secondary.
Get the SSI status.
Get the driver version.
Get RX transferred data count with connected device.
Get TX transferred data count with connected device.
Register the user event callback.
Unregister the user event callback.
Get the clock division factor.
Get the frame length (bit width).
To fetch the transfer 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 rxd 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. |
ssi_peripheral_clock_mode_t#
ssi_peripheral_clock_mode_t
Enumeration for different SSI peripheral clock modes.
Enumerator | |
---|---|
SL_SSI_PERIPHERAL_CPOL0_CPHA0 | SSI_PERIPHERAL MODE 0 CPOL0_CPHA0. |
SL_SSI_PERIPHERAL_CPOL0_CPHA1 | SSI_PERIPHERAL MODE 1 CPOL0_CPHA1. |
SL_SSI_PERIPHERAL_CPOL1_CPHA0 | SSI_PERIPHERAL MODE 2 CPOL1_CPHA0. |
SL_SSI_PERIPHERAL_CPOL1_CPHA1 | SSI_PERIPHERAL MODE 3 CPOL1_CPHA1. |
SL_SSI_PERIPHERAL_TI_SSI | SSI_PERIPHERAL MODE TI_SSI. |
SL_SSI_PERIPHERAL_MICROWIRE | SSI_PERIPHERAL MODE MICROWIRE. |
SL_SSI_PERIPHERAL_MODE_LAST | SSI_PERIPHERAL MODE_LAST. |
sl_ssi_instance_t#
sl_ssi_instance_t
Enumeration for different SSI peripheral device modes.
Enumerator | |
---|---|
SL_SSI_MASTER_ACTIVE | SSI DEVICE MODE MASTER. |
SL_SSI_SLAVE_ACTIVE | SSI DEVICE MODE SLAVE. |
SL_SSI_ULP_MASTER_ACTIVE | ULP SSI DEVICE MODE MASTER. |
SL_SSI_INSTANCE_LAST | LSAT member of enum for validation. |
sl_ssi_slave_number_t#
sl_ssi_slave_number_t
Enumeration for SSI Slave numbers.
Enumerator | |
---|---|
SSI_SLAVE_0 | Slave No. 1. |
SSI_SLAVE_1 | Slave No. 2. |
SSI_SLAVE_2 | Slave No. 3. |
SSI_SLAVE_3 | Slave No. 4. |
SSI_SLAVE_NUMBER_LAST_ENUM | Last member of enum for validation. |
Typedef Documentation#
sl_ssi_power_state_t#
typedef ARM_POWER_STATE sl_ssi_power_state_t
renaming arm power state structure
Variable Documentation#
receive_sample_delay#
uint32_t sl_ssi_control_config_t::receive_sample_delay
Delay for receive input signal.
intf_pll_500_control_value#
uint16_t sl_ssi_clock_config_t::intf_pll_500_control_value
intf PLL control value
intf_pll_reference_clock#
uint32_t sl_ssi_clock_config_t::intf_pll_reference_clock
intf PLL reference clock frequency
soc_pll_reference_clock#
uint32_t sl_ssi_clock_config_t::soc_pll_reference_clock
SoC PLL reference clock frequency.
Function Documentation#
sl_si91x_ssi_configure_clock#
sl_status_t sl_si91x_ssi_configure_clock (sl_ssi_clock_config_t * clock_config)
Configure the SSI clock.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_clock_config_t * | [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_si91x_ssi_init#
sl_status_t sl_si91x_ssi_init (sl_ssi_instance_t instance, sl_ssi_handle_t * ssi_handle)
Initialize the SSI master.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_instance_t | [in] | instance | (Master/Slave/ULP Master), ssi_handle |
sl_ssi_handle_t * | N/A | ssi_handle |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_OK (0x0000) - Success, otherwise fail error code as follow
sl_si91x_ssi_deinit#
sl_status_t sl_si91x_ssi_deinit (sl_ssi_handle_t ssi_handle)
Uninitialize the SSI primary.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | Handle |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_OK (0x0000) - Success, otherwise fail error code as follow
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 the SPI interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | handle, pointer to control config structure. |
sl_ssi_control_config_t * | N/A | control_configuration | |
sl_ssi_slave_number_t | N/A | slave_number |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_INVALID_PARAMETER (0x0021) - invalid parameters
SL_STATUS_OK (0x0000) - Success
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 data from the SPI interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | handle, pointer to Rx data buffer, length of data |
void * | N/A | data | |
uint32_t | N/A | data_length |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_OK (0x0000) - Success
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 data from SPI interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | handle, pointer to Tx data buffer, length of data |
const void * | N/A | data | |
uint32_t | N/A | data_length |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_NULL_POINTER (0x0022) - The parameter is null pointer
SL_STATUS_OK (0x0000) - Success
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 sending/receiving bi-directional full duplex data to/from SPI secondary.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | handle, pointer to Tx buffer, pointer to Rx buffer, and data length |
const void * | N/A | data_out | |
void * | N/A | data_in | |
uint32_t | N/A | data_length |
Returns
status 0 if successful, else error code as follow.
SL_STATUS_NULL_POINTER (0x0022) - The parameter is a null pointer
SL_STATUS_OK (0x0000) - Success, otherwise error code as follow on failure.
sl_si91x_ssi_get_status#
sl_ssi_status_t sl_si91x_ssi_get_status (sl_ssi_handle_t ssi_handle)
Get the SSI status.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | handle |
Returns
busy, data lost or mode fault returns as a bit field.
sl_si91x_ssi_get_version#
sl_ssi_version_t sl_si91x_ssi_get_version (void )
Get the driver version.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | [in] |
Returns
driver version.
sl_si91x_ssi_get_rx_data_count#
uint32_t sl_si91x_ssi_get_rx_data_count (sl_ssi_handle_t ssi_handle)
Get RX transferred data count with connected device.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | handle |
Returns
transferred data count
sl_si91x_ssi_get_tx_data_count#
uint32_t sl_si91x_ssi_get_tx_data_count (sl_ssi_handle_t ssi_handle)
Get TX transferred data count with connected device.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | handle |
Returns
transferred data count
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.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | handle |
sl_ssi_signal_event_t | [in] | callback_event | pointer callback_event |
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_si91x_ssi_unregister_event_callback#
void sl_si91x_ssi_unregister_event_callback (void )
Unregister the user event callback.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | [in] |
It unregisters the callback, i.e., clears the callback function address and passes a NULL value to the variable.
sl_si91x_ssi_get_clock_division_factor#
uint32_t sl_si91x_ssi_get_clock_division_factor (sl_ssi_handle_t ssi_handle)
Get the clock division factor.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | Pointer to the SSI driver handle |
Returns
factor(int32_t) Clock division factor
sl_si91x_ssi_get_frame_length#
uint32_t sl_si91x_ssi_get_frame_length (sl_ssi_handle_t ssi_handle)
Get the frame length (bit width).
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | Pointer to the SSI driver handle |
Returns
frame_length (uint32_t) Frame length
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 transfer fifo threshold value, this value controls the level of entries at which the transmit FIFO controller triggers an interrupt.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | Pointer to the SSI driver handle |
Returns
Transfer fifo threshold (uint32_t) The value of transfer fifo threshold
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.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | Pointer to the SSI driver handle |
Returns
Receiver fifo threshold (uint32_t) The value of receiver fifo threshold
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 rxd input signal.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_ssi_handle_t | [in] | ssi_handle | Pointer to the SSI driver handle |
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
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.
Type | Direction | Argument Name | Description |
---|---|---|---|
uint8_t | [in] | number | Slave number |
For single secondary also, this API needs to be called before transferring the data.
Returns
none