![]() |
RZ Flexible Software Package Documentation
Release v4.2.0
|
|
Functions | |
| fsp_err_t | R_SCI_B_SPI_Open (spi_ctrl_t *p_api_ctrl, spi_cfg_t const *const p_cfg) |
| fsp_err_t | R_SCI_B_SPI_Read (spi_ctrl_t *const p_api_ctrl, void *p_dest, uint32_t const length, spi_bit_width_t const bit_width) |
| fsp_err_t | R_SCI_B_SPI_Write (spi_ctrl_t *const p_api_ctrl, void const *p_src, uint32_t const length, spi_bit_width_t const bit_width) |
| fsp_err_t | R_SCI_B_SPI_WriteRead (spi_ctrl_t *const p_api_ctrl, void const *p_src, void *p_dest, uint32_t const length, spi_bit_width_t const bit_width) |
| fsp_err_t | R_SCI_B_SPI_Close (spi_ctrl_t *const p_api_ctrl) |
| fsp_err_t | R_SCI_B_SPI_CalculateBitrate (uint32_t bitrate, sci_b_spi_clock_source_t clock_source, sci_b_spi_div_setting_t *sclk_div) |
| fsp_err_t | R_SCI_B_SPI_CallbackSet (spi_ctrl_t *const p_api_ctrl, void(*p_callback)(spi_callback_args_t *), void *const p_context, spi_callback_args_t *const p_callback_memory) |
Driver for the SCI peripheral on RZ MPUs. This module implements the SPI Interface.
| Configuration | Options | Default | Description |
|---|---|---|---|
| Parameter Checking |
| Default (BSP) | If selected code for parameter checking is included in the build. |
| DMAC Support | MCU Specific Options | If support for transferring data using the DMAC will be compiled in. |
| Configuration | Options | Default | Description |
|---|---|---|---|
| Name | Name must be a valid C symbol | g_sci_spi0 | Module name. |
| Channel | Value must be a non-negative integer | 0 | Select the SCI channel. |
| Operating Mode |
| Master | Select the SPI operating mode. |
| Clock Phase |
| Data sampling on even edge, data variation on odd edge (CPHA=1) | Select the clock edge to sample data. |
| Clock Polarity |
| High when idle (CPOL=1) | Select clock level when idle. |
| Bit Order |
| MSB First | Select the data bit order. |
| Callback | Name must be a valid C symbol | sci_b_spi_callback | A user callback function that is called from the sci_b_spi interrupts when a transfer is completed or an error has occurred. |
| Receive Interrupt Priority | Value must be a non-negative integer | 12 | Set the receive interrupt priority. |
| Transmit Interrupt Priority | Value must be a non-negative integer | 12 | Set the transmit interrupt priority. |
| Transmit End Interrupt Priority | Value must be a non-negative integer | 12 | Set the transmit end interrupt priority. |
| Error Interrupt Priority | Value must be a non-negative integer | 12 | Set the error interrupt priority. |
| Clock Source | MCU Specific Options | Select the clock source for communication. | |
| Bitrate | Value must be an integer greater than 0 | 2500000 | Enter the desired bitrate. If the requested bitrate cannot be achieved, the settings with the largest possible value that is less than or equal to the requested bitrate is used. The actual bitrate is printed in a comment in the generated sci_spi_extended_cfg_t structure. |
| Receive Sampling Timing Adjustment (Master Only) |
| Default (No Delay) | Select the sampling timing delay of the RXDn pin (master mode only). Configuring this property may be required at high bitrates for the master to sample the received data accurately. This setting has no effect in slave mode. |
| MPU Group | Communication Operation Clock |
|---|---|
| RZ/G3E | P5CLK |
| RZ/G3L | Channel 0: P13CLK Channel 1: P14CLK Channel 2: P15CLK Channel 3: P16CLK |
| RZ/G3SE | Channel 0: P13CLK Channel 1: P14CLK Channel 2: P15CLK Channel 3: P16CLK |
This module uses SCIn_MOSI, SCIn_MISO, SCIn_SPCK, and SCIn_SS pins to communicate with on board devices.
The transfer complete event is triggered when all of the data has been transfered. In slave mode if the SS pin is de-asserted then no transfer complete event is generated until the SS pin is asserted and the remaining data is transferred.
At high bit rates, interrupts may not be able to service transfers fast enough. In master mode this means there will be a delay between each data frame. In slave mode this could result in RX Overflow errors.
In order to improve performance at high bit rates, it is recommended that the instance be configured to service transfers using the DMAC.
After every byte, the SCI SPI peripheral generates a transmit buffer empty interrupt and a receive buffer full interrupt. Whenever possible, the SCI SPI module handles both interrupts in the receive buffer full interrupt.
This is a basic example of minimal use of the SCI_B_SPI module in an application.
Classes | |
| struct | st_sci_b_spi_div_setting |
| struct | st_sci_b_spi_extended_cfg |
| struct | st_sci_b_spi_instance_ctrl |
Typedefs | |
| typedef struct st_sci_b_spi_div_setting | sci_b_spi_div_setting_t |
| typedef struct st_sci_b_spi_extended_cfg | sci_b_spi_extended_cfg_t |
| typedef struct st_sci_b_spi_instance_ctrl | sci_b_spi_instance_ctrl_t |
Enumerations | |
| enum | sci_b_spi_clock_source_t |
| enum | sci_b_spi_rx_sampling_delay_t |
| struct RZG::st_sci_b_spi_div_setting |
Settings for adjusting the SPI CLK.
| struct RZG::st_sci_b_spi_extended_cfg |
SCI SPI extended configuration
| Class Members | ||
|---|---|---|
| sci_b_spi_div_setting_t | clk_div | |
| sci_b_spi_clock_source_t | clock_source |
Clock source to generate SCK can either be selected as PCLK or SCISPICLK. |
| sci_b_spi_rx_sampling_delay_t | rx_sampling_delay | Receive sampling timing adjustment. |
| void * | p_reg | Register base address for specified channel. |
| struct RZG::st_sci_b_spi_instance_ctrl |
SPI instance control block. DO NOT INITIALIZE.
| typedef struct st_sci_b_spi_div_setting sci_b_spi_div_setting_t |
Settings for adjusting the SPI CLK. Please refer to the struct st_sci_b_spi_div_setting.
| typedef struct st_sci_b_spi_extended_cfg sci_b_spi_extended_cfg_t |
SCI SPI extended configuration. Please refer to the struct st_sci_b_spi_extended_cfg.
| typedef struct st_sci_b_spi_instance_ctrl sci_b_spi_instance_ctrl_t |
SPI instance control block. DO NOT INITIALIZE. Please refer to the struct st_sci_b_spi_instance_ctrl.
Source clock selection options for SCI.
Adjustment value for receive sampling timing delay for RXDn
| fsp_err_t R_SCI_B_SPI_Open | ( | spi_ctrl_t * | p_api_ctrl, |
| spi_cfg_t const *const | p_cfg | ||
| ) |
Initialize a channel for SPI communication mode. Implements spi_api_t::open.
This function performs the following tasks:
| p_api_ctrl | Pointer to the control structure. |
| p_cfg | Pointer to a configuration structure. |
| FSP_SUCCESS | Channel initialized successfully. |
| FSP_ERR_ASSERTION | An input parameter is invalid or NULL. |
| FSP_ERR_ALREADY_OPEN | The instance has already been opened. |
| FSP_ERR_IP_CHANNEL_NOT_PRESENT | The channel number is invalid. |
| fsp_err_t R_SCI_B_SPI_Read | ( | spi_ctrl_t *const | p_api_ctrl, |
| void * | p_dest, | ||
| uint32_t const | length, | ||
| spi_bit_width_t const | bit_width | ||
| ) |
Receive data from an SPI device. Implements spi_api_t::read.
The function performs the following tasks:
| p_api_ctrl | Pointer to the control structure. | |
| p_dest | Pointer to the destination buffer. | |
| [in] | length | The number of bytes to transfer. |
| [in] | bit_width | Invalid for SCI_B_SPI (Set to SPI_BIT_WIDTH_8_BITS). |
| FSP_SUCCESS | Read operation successfully completed. |
| FSP_ERR_ASSERTION | One of the following invalid parameters passed:
|
| FSP_ERR_NOT_OPEN | The channel has not been opened. Open the channel first. |
| FSP_ERR_UNSUPPORTED | The given bit_width is not supported. |
| FSP_ERR_IN_USE | A transfer is already in progress. |
| fsp_err_t R_SCI_B_SPI_Write | ( | spi_ctrl_t *const | p_api_ctrl, |
| void const * | p_src, | ||
| uint32_t const | length, | ||
| spi_bit_width_t const | bit_width | ||
| ) |
Transmit data to a SPI device. Implements spi_api_t::write.
The function performs the following tasks:
| p_api_ctrl | Pointer to the control structure. | |
| p_src | Pointer to the source buffer. | |
| [in] | length | The number of bytes to transfer. |
| [in] | bit_width | Invalid for SCI_B_SPI (Set to SPI_BIT_WIDTH_8_BITS). |
| FSP_SUCCESS | Write operation successfully completed. |
| FSP_ERR_ASSERTION | One of the following invalid parameters passed:
|
| FSP_ERR_NOT_OPEN | The channel has not been opened. Open the channel first. |
| FSP_ERR_UNSUPPORTED | The given bit_width is not supported. |
| FSP_ERR_IN_USE | A transfer is already in progress. |
| fsp_err_t R_SCI_B_SPI_WriteRead | ( | spi_ctrl_t *const | p_api_ctrl, |
| void const * | p_src, | ||
| void * | p_dest, | ||
| uint32_t const | length, | ||
| spi_bit_width_t const | bit_width | ||
| ) |
Simultaneously transmit data to SPI device while receiving data from SPI device (full duplex). Implements spi_api_t::writeRead.
The function performs the following tasks:
| p_api_ctrl | Pointer to the control structure. | |
| p_src | Pointer to the source buffer. | |
| p_dest | Pointer to the destination buffer. | |
| [in] | length | The number of bytes to transfer. |
| [in] | bit_width | Invalid for SCI_B_SPI (Set to SPI_BIT_WIDTH_8_BITS). |
| FSP_SUCCESS | Write operation successfully completed. |
| FSP_ERR_ASSERTION | One of the following invalid parameters passed:
|
| FSP_ERR_NOT_OPEN | The channel has not been opened. Open the channel first. |
| FSP_ERR_UNSUPPORTED | The given bit_width is not supported. |
| FSP_ERR_IN_USE | A transfer is already in progress. |
| fsp_err_t R_SCI_B_SPI_Close | ( | spi_ctrl_t *const | p_api_ctrl | ) |
Disable the SCI channel and set the instance as not open. Implements spi_api_t::close.
| p_api_ctrl | Pointer to an opened instance. |
| FSP_SUCCESS | Channel successfully closed. |
| FSP_ERR_ASSERTION | The parameter p_api_ctrl is NULL. |
| FSP_ERR_NOT_OPEN | The channel has not been opened. Open the channel first. |
| fsp_err_t R_SCI_B_SPI_CalculateBitrate | ( | uint32_t | bitrate, |
| sci_b_spi_clock_source_t | clock_source, | ||
| sci_b_spi_div_setting_t * | sclk_div | ||
| ) |
Calculate the register settings required to achieve the desired bitrate.
| [in] | bitrate | bitrate [bps]. For example, 250,000; 500,00; 2,500,000 (max), etc. |
| clock_source | clock source (PCLKA or SCISPICLK) used for bit rate calculation. | |
| sclk_div | Pointer to sci_b_spi_div_setting_t used to configure baudrate settings. |
| FSP_SUCCESS | Baud rate is set successfully. |
| FSP_ERR_ASSERTION | Baud rate is not achievable. |
| FSP_ERR_INVALID_ARGUMENT | Clock source is invalid. |
| fsp_err_t R_SCI_B_SPI_CallbackSet | ( | spi_ctrl_t *const | p_api_ctrl, |
| void(*)(spi_callback_args_t *) | p_callback, | ||
| void *const | p_context, | ||
| spi_callback_args_t *const | p_callback_memory | ||
| ) |
Updates the user callback and has option of providing memory for callback structure. Implements spi_api_t::callbackSet
| FSP_SUCCESS | Callback updated successfully. |
| FSP_ERR_ASSERTION | A required pointer is NULL. |
| FSP_ERR_NOT_OPEN | The control block has not been opened. |
| FSP_ERR_NO_CALLBACK_MEMORY | p_callback is non-secure and p_callback_memory is either secure or NULL. |