FSI Module¶
The Fast Serial Interface (FSI) API provides a set of functions for configuring and using the FSI module.
-
group
fsi_api
Defines
-
FSI_TX_EVT_FRAME_DONE
(0x0001U)¶ FSI Tx events defines.
Values that can be passed to APIs to enable/disable interrupts and also to set/get/clear event status on FSI Tx operation.
There are 4 supported interrupts related to Tx events- All are available as event status as well excecpt 4th one. 1) frame transmission done 2) transmit buffer is underrun 3) transmit buffer is overrun 4) ping counter timeout
Ping frame transmission upon hardware trigger(ping watchdog or external trigger) is shown as event status.
-
FSI_TX_EVT_BUF_UNDERRUN
(0x0002U)¶
-
FSI_TX_EVT_BUF_OVERRUN
(0x0004U)¶
-
FSI_TX_EVT_PING_TIMEOUT
(0x0008U)¶
-
FSI_TX_EVT_PING_HW_TRIG
(0x0008U)¶
-
FSI_TX_EVTMASK
(0x000FU)¶ Mask of all Tx Events, ORing all event defines.
-
FSI_TX_MAX_NUM_EXT_TRIGGERS
(0x0040U)¶ Maximum number of external input for triggering frame-transmission.
-
FSI_TX_INT2_CTRL_S
(0x8U)¶ Shifts needed to control FSI Tx interrupt generation on INT2.
-
FSI_RX_EVT_PING_WD_TIMEOUT
(0x0001U)¶ FSI Rx event defines.
Values that can be passed to APIs to enable/disable interrupts and also to set/get/clear event status on FSI Rx operation.
There are 15 supported interrupts related to Rx events- All are available as event status as well. 1) ping watchdog times out 2) frame watchdog times out 3) mismatch between hardware computed CRC and received CRC.This status should be ignored if user chooses SW CRC computation 4) invalid Frame type detected 5) invalid EndofFrame bit-pattern 6) buffer Overrun in Rx buffer 7) received frame without errors 8) software reads empty Rx buffer 9) received error frame 10) received ping frame 11) software didn’t clear FRAME_DONE flag after receiving new frame 12) received data frame 13) recieved ping frame with matched tag 14) recieved data frame with matched tag 15) recieved error frame with tag match
-
FSI_RX_EVT_FRAME_WD_TIMEOUT
(0x0002U)¶
-
FSI_RX_EVT_CRC_ERR
(0x0004U)¶
-
FSI_RX_EVT_TYPE_ERR
(0x0008U)¶
-
FSI_RX_EVT_EOF_ERR
(0x0010U)¶
-
FSI_RX_EVT_OVERRUN
(0x0020U)¶
-
FSI_RX_EVT_FRAME_DONE
(0x0040U)¶
-
FSI_RX_EVT_UNDERRUN
(0x0080U)¶
-
FSI_RX_EVT_ERR_FRAME
(0x0100U)¶
-
FSI_RX_EVT_PING_FRAME
(0x0200U)¶
-
FSI_RX_EVT_FRAME_OVERRUN
(0x0400U)¶
-
FSI_RX_EVT_DATA_FRAME
(0x0800U)¶
-
FSI_RX_EVT_PING_FRAME_TAG_MATCH
(0x1000U)¶
-
FSI_RX_EVT_DATA_FRAME_TAG_MATCH
(0x2000U)¶
-
FSI_RX_EVT_ERR_FRAME_TAG_MATCH
(0x4000U)¶
-
FSI_RX_EVTMASK
(0x7FFFU)¶ Mask of all Rx Events, ORing all event defines.
-
FSI_RX_MAX_DELAY_LINE_VAL
(0x001FU)¶ Maximum value in Rx delay line tap control.
-
FSI_MAX_LEN_NWORDS_DATA
(0x000FU)¶ Maximum data length(16 words) for user/software defined data frame.
-
FSI_MAX_VALUE_USERDATA
(0x00FFU)¶ Maximum value for user data field(8 bits)
-
FSI_MAX_VALUE_BUF_PTR_OFF
(0x000FU)¶ Maximum value of Buffer pointer offset(4 bits)
-
FSI_CTRL_REG_KEY
(0x00A5U)¶ Key value for writing some FSI Tx/Rx registers.
Enums
-
enum
FSI_DataWidth
¶ Data lines used for transmit/receive operation.
Supported number of data lines is only 2 - 1 lane or 2 lanes
Values:
-
enumerator
FSI_DATA_WIDTH_1_LANE
= 0x0000U¶
-
enumerator
FSI_DATA_WIDTH_2_LANE
= 0x0001U¶
-
enumerator
-
enum
FSI_TxSubmoduleInReset
¶ List of TX submodules that can be reset, can be used with reset APIs.
Three kind of resets can be made- 1) reset entire Tx Module 2) reset only TX clock 3) reset ping timeout counter
Values:
-
enumerator
FSI_TX_MASTER_CORE_RESET
= 0x0000U¶
-
enumerator
FSI_TX_CLOCK_RESET
= 0x0001U¶
-
enumerator
FSI_TX_PING_TIMEOUT_CNT_RESET
= 0x0002U¶
-
enumerator
-
enum
FSI_TxStartMode
¶ Start Mode for Tx frame transmission.
Three start modes(that is, how transmission will start) are supported-
SW write of START bit in TX_PKT_CTRL register
Rising edge on external trigger
Either SW write of START bit or Frame completion
Values:
-
enumerator
FSI_TX_START_FRAME_CTRL
= 0x0000U¶
-
enumerator
FSI_TX_START_EXT_TRIG
= 0x0001U¶
-
enumerator
FSI_TX_START_FRAME_CTRL_OR_UDATA_TAG
= 0x0002U¶
-
enum
FSI_FrameType
¶ Various FSI frame types.
Three frame types exist-
Ping: Used for checking line integrity, can be sent by software or automatically by hardware.
Error: Used typically during error conditions or when one side wants to signal the other side for attention.
Data: Two subtypes exist based on data-length- a) Fixed (1/2/4/6 words) b) Nwords Software programs number of data words
- Note
4 bit code for frame types- 0x1, 0x2 and 0x8 to 0xE are reserved
Values:
-
enumerator
FSI_FRAME_TYPE_PING
= 0x0000U¶
-
enumerator
FSI_FRAME_TYPE_ERROR
= 0x000FU¶
-
enumerator
FSI_FRAME_TYPE_1WORD_DATA
= 0x0004U¶
-
enumerator
FSI_FRAME_TYPE_2WORD_DATA
= 0x0005U¶
-
enumerator
FSI_FRAME_TYPE_4WORD_DATA
= 0x0006U¶
-
enumerator
FSI_FRAME_TYPE_6WORD_DATA
= 0x0007U¶
-
enumerator
FSI_FRAME_TYPE_NWORD_DATA
= 0x0003U¶
-
enum
FSI_FrameTag
¶ Possible values of a FSI frame.
4 bit field inside FSI frame is available to set tag value(0-15)
Values:
-
enumerator
FSI_FRAME_TAG0
= 0x0000U¶
-
enumerator
FSI_FRAME_TAG1
= 0x0001U¶
-
enumerator
FSI_FRAME_TAG2
= 0x0002U¶
-
enumerator
FSI_FRAME_TAG3
= 0x0003U¶
-
enumerator
FSI_FRAME_TAG4
= 0x0004U¶
-
enumerator
FSI_FRAME_TAG5
= 0x0005U¶
-
enumerator
FSI_FRAME_TAG6
= 0x0006U¶
-
enumerator
FSI_FRAME_TAG7
= 0x0007U¶
-
enumerator
FSI_FRAME_TAG8
= 0x0008U¶
-
enumerator
FSI_FRAME_TAG9
= 0x0009U¶
-
enumerator
FSI_FRAME_TAG10
= 0x000AU¶
-
enumerator
FSI_FRAME_TAG11
= 0x000BU¶
-
enumerator
FSI_FRAME_TAG12
= 0x000CU¶
-
enumerator
FSI_FRAME_TAG13
= 0x000DU¶
-
enumerator
FSI_FRAME_TAG14
= 0x000EU¶
-
enumerator
FSI_FRAME_TAG15
= 0x000FU¶
-
enumerator
-
enum
FSI_PingTimeoutMode
¶ Ping timeout mode.
Ping timeout can reset and restart only on hardware initiated PING frames (PING Watchdog timeout) OR on any software initiated frame being sent out also based on which mode is selected
Values:
-
enumerator
FSI_PINGTIMEOUT_ON_HWINIT_PING_FRAME
= 0x0000U¶
-
enumerator
FSI_PINGTIMEOUT_ON_HWSWINIT_PING_FRAME
= 0x0001U¶
-
enumerator
-
enum
FSI_ECCComputeWidth
¶ ECC Computation width- 16 bit or 32 bit.
Values:
-
enumerator
FSI_32BIT_ECC_COMPUTE
= 0x0000U¶
-
enumerator
FSI_16BIT_ECC_COMPUTE
= 0x0001U¶
-
enumerator
-
enum
FSI_InterruptNum
¶ Interrupt lines supported in FSI.
Any event on FSI Tx or Rx can be enabled to trigger interrupt on 2 interrupt lines to CPU/CLA- INT1 and INT2
Values:
-
enumerator
FSI_INT1
= 0x0000U¶
-
enumerator
FSI_INT2
= 0x0001U¶
-
enumerator
-
enum
FSI_RxSubmoduleInReset
¶ List of RX modules that can be reset, can be used with reset APIs.
Three submodules can be reset- 1) RX master core 2) frame watchdog counter 3) ping watchdog counter
Values:
-
enumerator
FSI_RX_MASTER_CORE_RESET
= 0x0000U¶
-
enumerator
FSI_RX_FRAME_WD_CNT_RESET
= 0x0001U¶
-
enumerator
FSI_RX_PING_WD_CNT_RESET
= 0x0002U¶
-
enumerator
-
enum
FSI_RxDelayTapType
¶ Available Rx lines for delay tap selection.
Delay tapping can be done on 3 lines- 1)RXCLK 2)RXD0 and 3)RXD1
Values:
-
enumerator
FSI_RX_DELAY_CLK
= 0x0000U¶
-
enumerator
FSI_RX_DELAY_D0
= 0x0001U¶
-
enumerator
FSI_RX_DELAY_D1
= 0x0002U¶
-
enumerator
-
enum
FSI_ExtFrameTriggerSrc
¶ Indexes of available EPWM SOC triggers.
Values:
-
enumerator
FSI_EXT_TRIGSRC_EPWM1_SOCA
= 8U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM1_SOCB
= 9U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM2_SOCA
= 10U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM2_SOCB
= 11U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM3_SOCA
= 12U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM3_SOCB
= 13U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM4_SOCA
= 14U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM4_SOCB
= 15U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM5_SOCA
= 16U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM5_SOCB
= 17U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM6_SOCA
= 18U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM6_SOCB
= 19U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM7_SOCA
= 20U¶
-
enumerator
FSI_EXT_TRIGSRC_EPWM7_SOCB
= 21U¶
-
enumerator
FSI_EXT_TRIGSRC_CLB1_CLBOUT30
= 40U¶
-
enumerator
FSI_EXT_TRIGSRC_CLB1_CLBOUT31
= 41U¶
-
enumerator
FSI_EXT_TRIGSRC_CLB2_CLBOUT30
= 42U¶
-
enumerator
FSI_EXT_TRIGSRC_CLB2_CLBOUT31
= 43U¶
-
enumerator
FSI_EXT_TRIGSRC_ADC_SOCA
= 52U¶
-
enumerator
FSI_EXT_TRIGSRC_ADC_SOCB
= 53U¶
-
enumerator
FSI_EXT_TRIGSRC_CPU1_TIMER0INT
= 54U¶
-
enumerator
FSI_EXT_TRIGSRC_CPU1_TIMER1INT
= 55U¶
-
enumerator
FSI_EXT_TRIGSRC_CPU1_TIMER2INT
= 56U¶
-
enumerator
Functions
-
void
FSI_sendTxFlush
(uint32_t base)¶ Validates if FSI-Tx base address is correct.
Sends FLUSH pattern
- Return
returns true if the base address is valid and false otherwise
- Parameters
[in] base
: is the base address of the FSI-Tx module
FLUSH pattern (toggle data lines followed by toggle on clocks) should be sent only when FSI Tx is not under SOFT_RESET and the clock to the transmit core has been turned ON.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_stopTxFlush
(uint32_t base)¶ Stops FLUSH pattern transmission.
Transmission of FLUSH pattern should be stopped before starting sending frames. Generally during initilization a pair of send/stop APIs for FLUSH pattern is called to clear data/clock lines.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_selectTxPLLClock
(uint32_t base)¶ Selects PLL clock as source for clock dividers.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_enableTxClock
(uint32_t base)¶ sets clock division prescalar and enables the transmit clock
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_disableTxClock
(uint32_t base)¶ Disables transmit clock.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_configPrescalar
(uint32_t base, uint16_t preScaleValue)¶ Sets the prescalar clock keeping the transmit clock in reset.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] preScaleValue
: used to generate transmit clock, it defines the division value of /2,/3,/4,etc. of PLLCLK. Prescale value is is to be set while keeping the clock in reset.
-
void
FSI_setTxDataWidth
(uint32_t base, FSI_DataWidth dataWidth)¶ Sets Data width for transmission.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] dataWidth
: selection between 1 or 2 lane transmission
-
void
FSI_enableTxSPIMode
(uint32_t base)¶ Enables SPI compatible mode.
FSI supports a compatibility mode in order to communicate with legacy peripherals like SPI. Only the 16-bit mode of SPI will be supported. All the frame structures, CRC checks and will be identical to the normal FSI frames.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_disableTxSPIMode
(uint32_t base)¶ Disables SPI compatible mode.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_setTxStartMode
(uint32_t base, FSI_TxStartMode txStartMode)¶ Sets start mode for any frame transmission.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] txStartMode
: is one of supported 3 start modes in transmission
-
void
FSI_setTxPingTimeoutMode
(uint32_t base, FSI_PingTimeoutMode pingTimeoutMode)¶ Setting for when Ping timeout can reset and restart.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] pingTimeoutMode
: can be HW or both HW/SW initiated
-
void
FSI_enableTxTDMMode
(uint32_t base)¶ Enables the Tx TDM mode for multi-slave configuration.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_disableTxTDMMode
(uint32_t base)¶ Disables the Tx TDM mode.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_setTxExtFrameTrigger
(uint32_t base, uint16_t extInputNum)¶ Sets a particular external input to trigger transmission.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] extInputNum
: can be one of ports from 0 to 63. See also FSI_ExtFrameTriggerSrc enum members for valid external triggers.
-
void
FSI_enableTxCRCForceError
(uint32_t base)¶ Enables CRC value of a data frame to be forced to zero.
CRC value of the data frame will be forced to 0 whenever there is a transmission and buffer over-run or under-run condition happens. The idea is to force a corruption of the CRC since the data is not guaranteed to be reliable
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_disableTxCRCForceError
(uint32_t base)¶ Disables forcing of CRC value of a data frame to zero.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_setTxECCComputeWidth
(uint32_t base, FSI_ECCComputeWidth eccComputeWidth)¶ Select between 16-bit and 32-bit ECC computation.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] eccComputeWidth
: is ECC Computation width
-
void
FSI_setTxFrameType
(uint32_t base, FSI_FrameType frameType)¶ Sets frame type for transmission.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] frameType
: value of frame type
-
void
FSI_setTxSoftwareFrameSize
(uint32_t base, uint16_t nWords)¶ Sets the frame size if frame type is user/software defined frame.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] nWords
: is number of data words in a software defined frame
-
void
FSI_startTxTransmit
(uint32_t base)¶ Starts transmitting frames.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_setTxFrameTag
(uint32_t base, FSI_FrameTag frameTag)¶ Sets frame tag for transmission.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] frameTag
: value of frame tag, 4 bit value (0 to 15)
-
void
FSI_setTxUserDefinedData
(uint32_t base, uint16_t userDefData)¶ Sets user defined data for transmission It is an extra data field(8 bit) apart from regular data.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] userDefData
: 8 bit user defined data value
-
void
FSI_setTxBufferPtr
(uint32_t base, uint16_t bufPtrOff)¶ Sets the value for transmit buffer pointer at desired location.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] bufPtrOff
: 4 bit offset pointer in Tx buffer where transmitter will pick the data
-
uint16_t
FSI_getTxBufferPtr
(uint32_t base)¶ Returns current buffer pointer location.
- Return
current buffer pointer location
- Note
there could be lag due to synchronization hence value is accurate only when no current transmission is happening
- Parameters
[in] base
: is the FSI Tx module base address
-
uint16_t
FSI_getTxWordCount
(uint32_t base)¶ Returns valid number of data words present in buffer which have not been transmitted yet.
- Return
number of data words present in buffer which have not been transmitted yet
- Note
there could be lag due to synchronization hence value is accurate only when no current transmission is happening
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_enableTxPingTimer
(uint32_t base, uint32_t refValue, FSI_FrameTag pingFrameTag)¶ Enables ping timer logic and once set time elapses it sends signal to transmitter to send ping frame.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] refValue
: 32 bit reference value for ping time-out counter[in] pingFrameTag
: 4 bit tag value for ping time-out counter
-
void
FSI_setTxPingTag
(uint32_t base, FSI_FrameTag frameTag)¶ Sets the ping tag value, used by either timeout counter initiated PING frame transfer or by external ping trigger input.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] frameTag
: 4 bit tag value for ping time-out counter
-
void
FSI_disableTxPingTimer
(uint32_t base)¶ Disables ping timer logic.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_enableTxExtPingTrigger
(uint32_t base, uint16_t extTrigSel)¶ Enables external trigger to transmit a ping frame.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] extTrigSel
: can be one of the external inputs from 0 to 63.
-
void
FSI_disableTxExtPingTrigger
(uint32_t base)¶ Disables external trigger logic.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
uint32_t
FSI_getTxCurrentPingTimeoutCounter
(uint32_t base)¶ Gives Current value of Ping Timeout Logic Counter.
- Return
Current value of counter is returned
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_enableTxDMAEvent
(uint32_t base)¶ Enables to generate DMA event on completion of a frame transfer.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_disableTxDMAEvent
(uint32_t base)¶ Disable to generate DMA event on completion of a frame transfer.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_lockTxCtrl
(uint32_t base)¶ Locks the control of all transmit control registers,once locked further writes will not take effect until system reset occurs.
- Note
System reset only can unlock registers once locked.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
uint16_t
FSI_getTxEventStatus
(uint32_t base)¶ Returns current status of all the error flags.
Example Usage - function will set the bits corresponding to respective error flag in return value evtStatus = FSI_getTxEventStatus(FSI_base) if bit value of evtStatus is 12(01100) means FSI_TX_EVT_OVERRUN and FSI_TX_EVT_PING_HW_TRIG flags are set
- Return
the status of error flags,each bit of integer is associated with one error flag.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_forceTxEvents
(uint32_t base, uint16_t evtFlags)¶ Enables user to set TX error flags.
Writing a 1 to this bit position will cause the corresponding bit in
TX_EVT_ERR_STATUS register to get set. The purpose of this register is to allow software to simulate the effect of the event and test the associated software/ISR.- Parameters
[in] base
: is the FSI Tx module base address[in] evtFlags
: contains list of event and error flags that are supposed to be set.
Example Usage evtFlags = FSI_TX_EVT_FRAME_DONE & FSI_TX_EVT_OVERRUN FSI_forceTxEvents(FSI_base,evtFlags) Above call sets error flag to frameDone and overRun events
- Return
None.
-
void
FSI_clearTxEvents
(uint32_t base, uint16_t evtFlags)¶ Enables user to clear TX error flags.
Writing a 1 to this bit position will cause the corresponding bit in the TX_EVT_ERR_STATUS register to get cleared to 0
- Parameters
[in] base
: is the FSI Tx module base address[in] evtFlags
: contains list of event and error flags that are supposed to be cleared.
- Return
None.
-
void
FSI_enableTxUserCRC
(uint32_t base, uint16_t userCRCValue)¶ Sets the CRC value to be picked transmission if transmission is configured to use user defined SW CRC.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] userCRCValue
: is user defined CRC
-
void
FSI_disableTxUserCRC
(uint32_t base)¶ Sets the CRC value to be picked transmission if transmission is configured to use user defined SW CRC.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_setTxECCdata
(uint32_t base, uint32_t data)¶ Sets data for ECC logic computaion.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] data
: data value for which ECC needs to be computed
-
uint16_t
FSI_getTxECCValue
(uint32_t base)¶ Returns ECC value evaluated for 16/32 bit data.
- Return
ECC value for input data
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_enableTxInterrupt
(uint32_t base, FSI_InterruptNum intNum, uint16_t intFlags)¶ Enables user to generate interrupt on occurrence of FSI_TxEventList events.
Example Usage intFlags = FSI_TX_EVT_FRAME_DONE && FSI_TX_EVT_BUF_OVERRUN && FSI_TX_EVT_PING_TIMEOUT FSI_enableTxInterrupt(FSI_base, FSI_INT1, intFlags) above configuration will generate signal on interrupt line 1 upon frameDone, BufOverRun and PingTimeOut event
- Parameters
[in] base
: is the FSI Tx module base address[in] intNum
: is the type of interrupt to be generated interrupt1 or interrupt2[in] intFlags
: contains list of events on which interrupt should be generated.
- Return
None.
-
void
FSI_disableTxInterrupt
(uint32_t base, FSI_InterruptNum intNum, uint16_t intFlags)¶ Enables user to disable generation interrupt on occurrence of FSI_TxEventList events.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] intNum
: is the type of interrupt to be generated interrupt1 or interrupt2[in] intFlags
: contains list of events on which interrupt generation has to be disabled.
-
uint32_t
FSI_getTxBufferAddress
(uint32_t base)¶ Returns address of Tx data buffer.
Data buffer is consisting of 16 words from offset- 0x40 to 0x4e
- Return
Tx data buffer address
- Parameters
[in] base
: is the FSI Tx module base address
-
void
FSI_resetTxModule
(uint32_t base, FSI_TxSubmoduleInReset submodule)¶ Resets clock or ping timeout counter or entire TX module.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] submodule
: the name of submodule which is supposed to be reset
-
void
FSI_clearTxModuleReset
(uint32_t base, FSI_TxSubmoduleInReset submodule)¶ Clears reset on clock or ping timeout counter or entire TX module.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] submodule
: the name of submodule, to be brought out of reset
-
void
FSI_writeTxBuffer
(uint32_t base, const uint16_t array[], uint16_t length, uint16_t bufOffset)¶ Writes data in FSI Tx buffer.
- Note
Data Overwrite protection is implemented in this function by ensuring not more than 16 words are written and also wrap around case is taken care when more words need to be written if last write happens at maximum offset in Tx buffer
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] array
: is the address of the array of words to be transmitted.[in] length
: is the number of words in the array to be transmitted.[in] bufOffset
: is the offset in Tx buffer where data will be written
-
void
FSI_enableRxInternalLoopback
(uint32_t base)¶ Checks the FSI-Rx base address.
Enables internal loopback where mux will select internal pins coming from TX module instead of what comes from pins
- Return
returns true if the base address is valid and false otherwise
- Parameters
base
: is the base address of the FSI-Rx module
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_disableRxInternalLoopback
(uint32_t base)¶ Disables internal loopback where mux will not use internal pins coming from TX module.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxSPIPairing
(uint32_t base)¶ Receive clock is selected from the internal port coming from TX module.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_disableRxSPIPairing
(uint32_t base)¶ Selects regular receive clock coming from the pins.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_setRxDataWidth
(uint32_t base, FSI_DataWidth dataWidth)¶ Selects number of data lines used for receiving.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] dataWidth
: selection between 1 or 2 lane receive operation
-
void
FSI_enableRxSPIMode
(uint32_t base)¶ Enables SPI compatible mode in FSI Rx.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_disableRxSPIMode
(uint32_t base)¶ Disables SPI compatible mode in FSI Rx.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_setRxSoftwareFrameSize
(uint32_t base, uint16_t nWords)¶ Sets the frame size if frame type is user/software defined frame.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] nWords
: is number of data words in a software defined frame
-
void
FSI_setRxECCComputeWidth
(uint32_t base, FSI_ECCComputeWidth eccComputeWidth)¶ Select between 16-bit and 32-bit ECC computation.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] eccComputeWidth
: is ECC Computation width
-
void
FSI_setRxPingTimeoutMode
(uint32_t base, FSI_PingTimeoutMode pingTimeoutMode)¶ Setting for when Ping timeout can reset and restart.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] pingTimeoutMode
: can be HW or both HW/SW initiated
-
FSI_FrameType
FSI_getRxFrameType
(uint32_t base)¶ Gets frame type received in the last successful frame.
- Return
value of Frame type received on last successful frame
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxDMAEvent
(uint32_t base)¶ Enables to generate DMA event on completion of a successful frame reception.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_disableRxDMAEvent
(uint32_t base)¶ Disables the DMA event generation on completion of a successful frame reception.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
uint16_t
FSI_getRxFrameTag
(uint32_t base)¶ Returns Frame tag received for the last successful frame.
- Return
frame tag value.
- Parameters
[in] base
: is the FSI Rx module base address
-
uint16_t
FSI_getRxUserDefinedData
(uint32_t base)¶ Returns User-Data(8-bit) field for received data frame.
- Return
user data field value.
- Parameters
[in] base
: is the FSI Rx module base address
-
uint16_t
FSI_getRxEventStatus
(uint32_t base)¶ Returns current status of all the evetn/error flags.
Example Usage - function will set the bits corresponding to respective error flag in return value evtFlags = FSI_getRxEventStatus(FSI_base) if value of evtFlags is 1036(0100000001100) means FSI_RX_EVT_FRAME_OVERRUN,FSI_RX_EVT_TYPE_ERR and FSI_RX_EVT_CRC_ERR flags are set
- Return
the status of error flags,each bit of integer is associated with one error flag.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_forceRxEvents
(uint32_t base, uint16_t evtFlags)¶ Enables user to set RX event/error flags.
Example Usage evtFlags = FSI_RX_EVT_EOF_ERR && FSI_RX_EVT_TYPE_ERR FSI_forceRxEvents(FSI_base,evtFlags) Above call sets error flag to FSI_RX_ERR_EOF_ERR and FSI_RX_ERR_TYPE_ERR events
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] evtFlags
: contains list of error flags to be set
-
void
FSI_clearRxEvents
(uint32_t base, uint16_t evtFlags)¶ Enables user to clear RX event/error flags.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] evtFlags
: contains list of error flags to be cleared
-
uint16_t
FSI_getRxReceivedCRC
(uint32_t base)¶ Returns CRC value received in data frame/frame.
- Return
CRC value received in data frame
- Parameters
[in] base
: is the FSI Rx module base address
-
uint16_t
FSI_getRxComputedCRC
(uint32_t base)¶ Computes and returns CRC value for data received.
- Return
CRC value computed on received data
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_setRxBufferPtr
(uint32_t base, uint16_t bufPtrOff)¶ Sets the value for receive buffer pointer at desired location.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] bufPtrOff
: 4 bit offset pointer in Rx buffer from where received data will be read
-
uint16_t
FSI_getRxBufferPtr
(uint32_t base)¶ Returns current buffer pointer location.
- Return
current buffer pointer location
- Note
there could be lag due to synchronization, hence value is accurate only when no current reception is happening
- Parameters
[in] base
: is the FSI Rx module base address
-
uint16_t
FSI_getRxWordCount
(uint32_t base)¶ Returns valid number of data words present in buffer which have not been read out yet.
- Return
number of data words present in buffer which have not been read out yet
- Note
there could be lag due to synchronization, hence value is accurate only when no current reception is happening
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxFrameWatchdog
(uint32_t base, uint32_t wdRef)¶ Enables the frame watchdog counter logic to count every time it start to receive a frame.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] wdRef
: reference value for ping watchdog time-out counter
-
void
FSI_disableRxFrameWatchdog
(uint32_t base)¶ Disables the frame watchdog counter logic.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
uint32_t
FSI_getRxFrameWatchdogCounter
(uint32_t base)¶ Returns current value of frame watchdog counter.
- Return
current value of frame watchdog counter
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxPingWatchdog
(uint32_t base, uint32_t wdRef)¶ Enables the ping watchdog counter logic and once the set time elapses it will indicate ping watchdog time-out has occurred.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] wdRef
: reference value for ping watchdog time-out counter
-
void
FSI_disableRxPingWatchdog
(uint32_t base)¶ Disables the ping watchdog counter logic.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
uint32_t
FSI_getRxPingWatchdogCounter
(uint32_t base)¶ Returns current value of ping watchdog counter.
- Return
current value(32 bit) of ping watchdog counter
- Parameters
[in] base
: is the FSI Rx module base address
-
uint16_t
FSI_getRxPingTag
(uint32_t base)¶ Returns the value of tag received for last ping frame.
- Return
the tagValue received for last ping frame
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_lockRxCtrl
(uint32_t base)¶ Locks the control of all receive control registers, once locked further writes will not take effect until system reset occurs.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_setRxECCData
(uint32_t base, uint32_t rxECCdata)¶ Sets Rx ECC data on which ECC (SEC-DED) computaion logic runs.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] rxECCdata
: Data for ECC logic
-
void
FSI_setRxReceivedECCValue
(uint32_t base, uint16_t rxECCvalue)¶ Sets received ECC value on which ECC (SEC-DED) computaion logic runs.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] rxECCvalue
: Received ECC value in a data frame
-
uint32_t
FSI_getRxECCCorrectedData
(uint32_t base)¶ Returns ECC Corrected data.
- Return
32 bit ECC corrected data
- Parameters
[in] base
: is the FSI Rx module base address
-
uint16_t
FSI_getRxECCLog
(uint32_t base)¶ Returns ECC Log details.
- Return
ECC Log value(8 bit)
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxInterrupt
(uint32_t base, FSI_InterruptNum intNum, uint16_t intFlags)¶ Let user generate interrupt on occurrence of Rx events.
Example Usage evtFlags = FSI_RX_EVT_PING_WD_TIMEOUT & FSI_RX_INT_TYPE_ERR FSI_enableRxInterrupt(FSI_base,FSI_INT1,evtFlags) Above call will generate interrupt1 on events FSI_RX_INT_PING_WD_TIMEOUT and FSI_RX_INT_TYPE_ERR
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] intNum
: the type of interrupt to be generated interrupt1 or interrupt2[in] intFlags
: contains list of events on which interrupt should be generated. Each bit will represent one event,bits for the events on which user want to generate interrupt will be set others remain clear
-
void
FSI_disableRxInterrupt
(uint32_t base, FSI_InterruptNum intNum, uint16_t intFlags)¶ Let user disable interrupt generation on Rx events.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] intNum
: the type of interrupt to be generated interrupt1 or interrupt2[in] intFlags
: contains list of events on which interrupt generation has to be disabled.
-
uint32_t
FSI_getRxBufferAddress
(uint32_t base)¶ Returns address of Rx data buffer.
Data buffer is consisting of 16 words from offset- 0x40 to 0x4e
- Return
Rx data buffer address
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_setRxFrameTagRef
(uint32_t base, uint16_t refVal)¶ Sets the Rx Frame Reference Tag Value.
The reference tag is used to check against when comparing the TAG_MASK and the incoming frame tag.
- Return
Rx data buffer address
- Parameters
[in] base
: is the FSI Rx module base address[in] refVal
: is the Rx frame reference tag value to be set
-
uint16_t
FSI_getRxFrameTagRef
(uint32_t base)¶ Returns the Rx Frame Reference Tag Value.
The reference tag is used to check against when comparing the TAG_MASK and the incoming frame tag.
- Return
Rx frame reference tag
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_setRxFrameTagMask
(uint32_t base, uint16_t maskVal)¶ Sets the Rx Frame Tag Mask Value.
Any bit position set to 0 will be used in the comparison of incoming tag & the reference tag. A bit position set to 1 will be ignored in the tag comparison.
- Return
Rx frame tag mask
- Parameters
[in] base
: is the FSI Rx module base address[in] maskVal
: is the Rx frame tag mask value to be set
-
uint16_t
FSI_getRxFrameTagMask
(uint32_t base)¶ Returns the Rx Frame Tag Mask Value.
Any bit position set to 0 will be used in the comparison of incoming tag & the reference tag. A bit position set to 1 will be ignored in the tag comparison.
- Return
Rx frame reference tag
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxFrameTagCompare
(uint32_t base)¶ Enables the Rx Frame Compare Mode.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_disableRxFrameTagCompare
(uint32_t base)¶ Disables the Rx Frame Compare Mode.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxFrameBroadcast
(uint32_t base)¶ Enables the Rx Frame Broadcast Mode.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_disableRxFrameBroadcast
(uint32_t base)¶ Disables the Rx Frame Broadcast Mode.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_setRxPingTagRef
(uint32_t base, uint16_t refVal)¶ Sets the Rx Ping Tag Reference Value.
The reference tag is used to check against when comparing the TAG_MASK and the incoming ping tag.
- Return
Rx data buffer address
- Parameters
[in] base
: is the FSI Rx module base address[in] refVal
: is the Rx frame reference tag value to be set
-
uint16_t
FSI_getRxPingTagRef
(uint32_t base)¶ Returns the Rx Ping Reference Tag Value.
The reference tag is used to check against when comparing the TAG_MASK and the incoming ping tag.
- Return
Rx frame reference tag
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_setRxPingTagMask
(uint32_t base, uint16_t maskVal)¶ Sets the Rx Ping Tag Mask Value.
Any bit position set to 0 will be used in the comparison of incoming tag & the reference tag. A bit position set to 1 will be ignored in the tag comparison.
- Return
Rx ping tag mask
- Parameters
[in] base
: is the FSI Rx module base address[in] maskVal
: is the Rx frame tag mask value to be set
-
uint16_t
FSI_getRxPingTagMask
(uint32_t base)¶ Returns the Rx Ping Tag Mask Value.
Any bit position set to 0 will be used in the comparison of incoming tag & the reference tag. A bit position set to 1 will be ignored in the tag comparison.
- Return
Rx ping reference tag
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxPingTagCompare
(uint32_t base)¶ Enables the Rx Ping Compare Mode.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_disableRxPingTagCompare
(uint32_t base)¶ Disables the Rx Ping Compare Mode.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_enableRxPingBroadcast
(uint32_t base)¶ Enables the Rx Ping Broadcast Mode.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_disableRxPingBroadcast
(uint32_t base)¶ Disables the Rx Ping Broadcast Mode.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_resetRxModule
(uint32_t base, FSI_RxSubmoduleInReset submodule)¶ Resets frame watchdog,ping watchdog or entire RX module.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] submodule
: the name of module which is supposed to be reset
-
void
FSI_clearRxModuleReset
(uint32_t base, FSI_RxSubmoduleInReset submodule)¶ Clears resets on frame watchdog,ping watchdog or entire RX module.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] submodule
: module which is to be brought out of reset
-
void
FSI_readRxBuffer
(uint32_t base, uint16_t array[], uint16_t length, uint16_t bufOffset)¶ Reads data from FSI Rx buffer.
- Note
This function ensures that not more than 16 words are read and wrap around case is also taken care when more words need to be read wherein last read happens at maximum offset in Rx buffer
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[out] array
: is the address of the array of words to receive the data[in] length
: is the number of words in the array to be received[in] bufOffset
: is the offset in Rx buffer from where data will be read
-
void
FSI_configRxDelayLine
(uint32_t base, FSI_RxDelayTapType delayTapType, uint16_t tapValue)¶ Adds delay for selected tap line.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address[in] delayTapType
: the line for which delay needs to be added it can be either RXCLK,RXD0 or RXD1[in] tapValue
: 5 bit value of the amount of delay to be added
-
void
FSI_performTxInitialization
(uint32_t base, uint16_t prescalar)¶ Initializes FSI Tx module.
Software based initialization of the FSI transmitter IP. This is typically needed only once during initialization or if the module needs to be reset due to an underrun condition that occurred during operation.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] prescalar
: is the user configurable clock divider for PLL input clock
-
void
FSI_performRxInitialization
(uint32_t base)¶ Initializes FSI Rx module.
Software based initialization of the FSI receiver module.This is typically needed only once during initialization. However, if there are framing errors in the received frames, then the receive module needs to be reset so that subsequent frames/packets can be handled fresh.
- Return
None.
- Parameters
[in] base
: is the FSI Rx module base address
-
void
FSI_executeTxFlushSequence
(uint32_t base, uint16_t prescalar)¶ Sends Flush pattern sequence.
Flush pattern sequence sent by a FSI transmit module will bring the FSI receive module out of reset so that it will then be ready to receive subsequent frames.
- Return
None.
- Parameters
[in] base
: is the FSI Tx module base address[in] prescalar
: is the user configurable clock divider for PLL input clock
-
The code for this module is contained in driverlib/fsi.c, with driverlib/fsi.h containing the API declarations for use by applications.