Documentation Home Page ◇ RT-XSG Toolbox Home Page
Pour la documentation en FRANÇAIS, utilisez l'outil de traduction de votre navigateur Chrome, Edge ou Safari. Voir un exemple.
SPI Interface
Page Content
Block
Mask
Description
The SPI Interface block is a synchronous serial data link that operates in synchronous full-duplex mode. It is ideal for interfacing with various peripheral devices. The block is user-customizable.
Parameters
Provide SPI configurations | This parameter allows the user to configure the block as a Master, Slave, or Master/Slave. When Configured as Master/Slave, an input port Mode is made available for the user to configure the Block dynamically. |
---|---|
Number of attached slave | This parameter is made available only when the Block is configured as Master or Master/Slave. It allows users to specify the number of slave devices attached to the master. |
Provide Baud Rate | This parameter allows the user to specify the frequency via a block parameter or via an input of the block. |
Baud Rate (0-65535) | This entry is made available if the "Provide Baud Rate" parameter is selected as "As Block Parameter". The user specifies the frequency by providing the System Clock divider value (e.g. System clock 100MHz, SCK 10MHz, Baud rate 100MHz/10MHz). 16 bits. |
Clock Phase (CPHA), TX Polarity (CPOL), RX Polarity | The clock phase and polarity can be modified for SPI data transfers. To remain flexible enough to work with many implementations of the I/O logic, the SPI Interface can toggle its serial clock phase and polarity.
The figure above shows the timing diagram for an SPI data transfer when the clock phase, CPHA, is set to "0". The waveform is shown for both positive and negative clock polarities of SCK. The SCK signal remains inactive for the first half of the first SCK cycle (SCK Cycle 1). In this transfer format, the falling edge of Slave Select indicates the beginning of a data transfer. Therefore, the Slave Select line must be negated and reasserted between each successive serial data transfer. The figure above shows the timing diagram for an SPI transfer when the clock phase, CPHA, is set to "1". The waveform is shown for both positive and negative clock polarities of SCK. The first SCK cycle begins with an edge on the SCK line from its inactive to its active level. The first edge of SCK indicates the start of the data transfer in this format. In accordance with these rules, the parameters TX and RX Polarity should be set according to this table to set the SPI block in the desired SPI mode: |
Note: Clock Phase (CPHA), TX Polarity (CPOL) and RX Polarity parameters can be set dynamically through the Block input port if the user selects the option "As an input port". | |
Slave Select Polarity | This parameter sets the polarity of the Slave Select signals. If the user selects the option "As an input port", the polarity can be dynamically through the Block input port. |
Data Width (1-128) | This parameter sets the width of the data. If the user selects the option "As an input port", the width can be dynamically through the Block input port. |
Provide Delay Compensation (CDC) | This parameter allows the user to specify the Delay Compensation Factor via a block parameter or via an input of the block. |
Delay Compensation (CDC) (0-63) | This entry is made available if the "Provide Delay Compensation" parameter is selected as "As Block Parameter". The user specifies the Delay value between 0 and 63. |
Inputs
Mode | This signal permits setting the mode of operation of the SPI Interface Block as Master or Slave. This port is made available only if the developer selects the option "Master/Slave" in the mask parameters. |
---|---|
Baud_Rate | This signal permits the setting of the operating frequency of the SPI clock. This port is made available only if the developer selects the option "As Block Input" in the mask parameters. |
CPHA | This signal permits setting the clock phase to select one of two fundamentally different transfer formats. This port is made available only if the developer selects the option "As an input port" in the mask parameters. |
TX_POL | This signal permits the selection of the polarity of the transmitting data (transmit). It usually corresponds to the Clock Polarity (CPOL). This port is made available only if the developer selects the option "As an input port" in the mask parameters. |
RX_POL | This signal permits the selection of the polarity of the receiving data (latch). This port is made available only if the developer selects the option "As an input port" in the mask parameters. |
SS_POL | This signal permits the selection of the polarity of the Slave Select signal. This port is made available only if the developer selects the option "As an input port" in the mask parameters. |
Data_Width | This signal permits the setting of the width of the data. This port is made available only if the developer selects the option "As an input port" in the mask parameters. |
CDC | This signal permits the setting of the Delay Compensation. This port is made available only if the developer selects the option "As Block Input" in the mask parameters. |
Datain | Port representing the data to be transmitted serially by the Block. The SPI block can accept up to 28 DWORDs in one calculation step, but care should be taken to avoid overflowing the SPI internal FIFOs by monitoring the status flags. Packets sent to the block should conform to the following formatting: The first DWORD should have these fields:
The following DWORDs are the SPI data to be sent by starting with the least significant group. Per example, sending data1="EF00GH00" and data2="ABCD0000" will result with the message "ABCD0000EF00GH00", so the SPI stream will start with "1010" and not "1110". |
S_SCK | Slave SPI clock This port is made available only if the Block is configured as Slave or Master/Slave |
S_MOSI | Slave input data port This port is made available only if the Block is configured as Slave or Master/Slave |
M_MISO | Master input data port This port is made available only if the Block is configured as Master or Master/Slave |
S_SS | Slave "Slave Select" input port This port is made available only if the Block is configured as Slave or Master/Slave |
SpiEna | SPI Enable input This active high input enables the normal operation of the SPI. During Configuration (e.g. Changing Frequency), this input must be in the low state |
Outputs
Dataout | This signal holds the receiving data | |
---|---|---|
Timestamp | This signal holds the timestamp of the receiving data | |
Status | This port holds the status of the SPI interface Block | |
Prior to RT-XSG v3.4.0
| Starting with RT-XSG v3.4.0
| |
M_SCK | Master SPI Serial Clock | |
M_MOSI | Master SPI Serial data out | |
S_MISO | Slave SPI Serial data out | |
M_SSN | Slave Select lines |
Characteristics and Limitations
SPI x1 supported only:
no bidirectional lines;
limited to 1 bit of data by clock.
Direct Feedthrough | N/A |
---|---|
Discrete sample time | N/A |
XHP support | N/A |
Work offline | YES |
OPAL-RT TECHNOLOGIES, Inc. | 1751, rue Richardson, bureau 1060 | Montréal, Québec Canada H3K 1G6 | opal-rt.com | +1 514-935-2323
Follow OPAL-RT: LinkedIn | Facebook | YouTube | X/Twitter