 |
ADI iSensor FX3 Firmware
v2.9.4-pub
Firmware for the Analog Devices EVAL-ADIS-FX3 IMU Evaluation Platform. This firmware can be compiled using the Cypress EZ USB Suite IDE
|
Go to the documentation of this file.
19 #ifndef SPI_FUNCTIONS_H
20 #define SPI_FUNCTIONS_H
58 CyBool_t
AdiSpiUpdate(uint16_t index, uint16_t value, uint16_t length);
76 #define BITBANG_HALFCLOCK_OFFSET 5
79 #define STALL_COUNT_OFFSET 10
82 #define GPIO_HIGH (1 << 31)|(1 << 5)|(1 << 4)|(1 << 0)
85 #define GPIO_LOW (1 << 31)|(1 << 5)|(1 << 4)
CyU3PDmaBuffer_t ManualDMABuffer
Definition: main.c:92
#define S_TO_TICKS_MULT
Definition: main.h:369
CyU3PReturnStatus_t AdiReadRegBytes(uint16_t addr)
This function reads a single 16 bit SPI word from a slave device.
Definition: SpiFunctions.c:710
CyU3PReturnStatus_t AdiSpiResetFifo(CyBool_t isTx, CyBool_t isRx)
This function resets the SPI FIFO and disables the SPI block after completion.
Definition: SpiFunctions.c:832
CyU3PSpiConfig_t AdiGetSpiConfig()
This function parses the SPI control registers into an easier to work with config struct.
Definition: SpiFunctions.c:615
static void AdiWaitForSpiNotBusy()
Waits for the SPI controller busy bit to be not set.
Definition: SpiFunctions.c:815
CyBool_t DrPolarity
Definition: main.h:174
CyBool_t DrActive
Definition: main.h:171
static void AdiBitBangSpiTransferCPHA0(uint8_t *MOSI, uint8_t *MISO, uint32_t BitCount, BitBangSpiConf config)
Performs a single bit banged SPI transfer. Pins must already be configured as needed.
Definition: SpiFunctions.c:551
@ LegacyIMU
Definition: main.h:111
CyU3PReturnStatus_t AdiBitBangSpiHandler()
This function handles bit bang SPI requests from the control endpoint.
Definition: SpiFunctions.c:221
static uvint32_t * CSPin
Definition: SpiFunctions.c:39
CyU3PReturnStatus_t AdiRestartSpi()
This function restarts the SPI controller.
Definition: SpiFunctions.c:188
CyBool_t WatchDogEnabled
Definition: main.h:177
Definition: SpiFunctions.h:27
#define STALL_COUNT_OFFSET
Definition: SpiFunctions.h:79
void AdiSetSpiWordLength(uint8_t wordLength)
Sets the SPI controller word length (4 - 32 bits)
Definition: SpiFunctions.c:793
#define GPIO_HIGH
Definition: SpiFunctions.h:82
uint8_t MOSI
Definition: SpiFunctions.h:29
static uvint32_t * MISOPin
Definition: SpiFunctions.c:42
PartType DutType
Definition: main.h:153
CyBool_t CPHA
Definition: SpiFunctions.h:50
void AdiSpiTransferWord(uint8_t *txBuf, uint8_t *rxBuf)
Bi-directional SPI transfer function, in register mode. Optimized for speed.
Definition: SpiFunctions.c:120
uint32_t HalfClockDelay
Definition: SpiFunctions.h:41
CyBool_t AdiSpiUpdate(uint16_t index, uint16_t value, uint16_t length)
This function handles a vendor command request to update the SPI/DR Pin configuration.
Definition: SpiFunctions.c:931
void AdiSpiPrepareForTransfer()
Set up the SPI for a register based transfer.
Definition: SpiFunctions.c:72
BoardState FX3State
Definition: main.c:112
Struct to store the current data stream state information.
Definition: main.h:204
static CyU3PReturnStatus_t AdiBitBangSpiSetup(BitBangSpiConf config)
Configures all pins and timers needed to bitbang a SPI connection.
Definition: SpiFunctions.c:323
CyU3PReturnStatus_t AdiGetSpiSettings()
This function handles vendor commands to get the current SPI configuration from the FX3.
Definition: SpiFunctions.c:886
uint8_t MISO
Definition: SpiFunctions.h:32
void AdiPrintSpiConfig(CyU3PSpiConfig_t config)
Prints a given SPI config over the UART debug port.
Definition: SpiFunctions.c:647
CyU3PSpiConfig_t AdiGetSpiConfig()
This function parses the SPI control registers into an easier to work with config struct.
Definition: SpiFunctions.c:615
CyU3PReturnStatus_t AdiWriteRegByte(uint16_t addr, uint8_t data)
This function writes a single byte of data over the SPI bus.
Definition: SpiFunctions.c:763
static uvint32_t * SCLKPin
Definition: SpiFunctions.c:36
void AdiSetSpiWordLength(uint8_t wordLength)
Sets the SPI controller word length (4 - 32 bits)
Definition: SpiFunctions.c:793
uint32_t BytesPerFrame
Definition: main.h:206
uint32_t StallTime
Definition: main.h:165
static uint32_t SCLKLowTime
Definition: SpiFunctions.c:54
Struct to store the current board state (SPI config, USB speed, etc)
Definition: main.h:148
@ ADcmXL2021
Definition: main.h:102
CyU3PReturnStatus_t AdiTransferBytes(uint32_t writeData)
This function performs a protocol agnostic SPI bi-directional SPI transfer of (1, 2,...
Definition: SpiFunctions.c:671
uint16_t CSLeadDelay
Definition: SpiFunctions.h:44
CyU3PDmaChannel ChannelToPC
Definition: main.c:76
void AdiSpiPrepareForTransfer()
Set up the SPI for a register based transfer.
Definition: SpiFunctions.c:72
@ ADcmXL1021
Definition: main.h:99
CyU3PReturnStatus_t AdiReadRegBytes(uint16_t addr)
This function reads a single 16 bit SPI word from a slave device.
Definition: SpiFunctions.c:710
CyU3PReturnStatus_t AdiGetSpiSettings()
This function handles vendor commands to get the current SPI configuration from the FX3.
Definition: SpiFunctions.c:886
CyU3PReturnStatus_t AdiSpiResetFifo(CyBool_t isTx, CyBool_t isRx)
This function resets the SPI FIFO and disables the SPI block after completion.
Definition: SpiFunctions.c:832
CyU3PReturnStatus_t AdiSleepForMicroSeconds(uint32_t numMicroSeconds)
This function blocks thread execution for a specified number of microseconds.
Definition: HelperFunctions.c:73
void AdiPrintSpiConfig(CyU3PSpiConfig_t config)
Prints a given SPI config over the UART debug port.
Definition: SpiFunctions.c:647
CyU3PSpiConfig_t SpiConfig
Definition: main.h:150
uint32_t WatchDogPeriodMs
Definition: main.h:180
@ ADcmXL3021
Definition: main.h:105
uint16_t DrPin
Definition: main.h:168
static uint32_t SCLKActiveMask
Definition: SpiFunctions.c:48
CyBool_t CPOL
Definition: SpiFunctions.h:53
@ IMU
Definition: main.h:108
Main header file for the Analog Devices iSensor FX3 Demonstration Platform firmware.
static uint32_t SPIWordLen
Definition: SpiFunctions.c:57
CyU3PReturnStatus_t AdiBitBangSpiHandler()
This function handles bit bang SPI requests from the control endpoint.
Definition: SpiFunctions.c:221
CyBool_t AdiSpiUpdate(uint16_t index, uint16_t value, uint16_t length)
This function handles a vendor command request to update the SPI/DR Pin configuration.
Definition: SpiFunctions.c:931
#define GPIO_LOW
Definition: SpiFunctions.h:85
CyU3PReturnStatus_t AdiTransferBytes(uint32_t writeData)
This function performs a protocol agnostic SPI bi-directional SPI transfer of (1, 2,...
Definition: SpiFunctions.c:671
struct BitBangSpiConf BitBangSpiConf
static uint32_t SCLKInactiveMask
Definition: SpiFunctions.c:51
CyU3PReturnStatus_t AdiWriteRegByte(uint16_t addr, uint8_t data)
This function writes a single byte of data over the SPI bus.
Definition: SpiFunctions.c:763
StreamState StreamThreadState
Definition: main.c:122
void AdiSpiTransferWord(uint8_t *txBuf, uint8_t *rxBuf)
Bi-directional SPI transfer function, in register mode. Optimized for speed.
Definition: SpiFunctions.c:120
@ SpiFunctions_c
Definition: ErrorLog.h:54
static void AdiBitBangSpiTransferCPHA1(uint8_t *MOSI, uint8_t *MISO, uint32_t BitCount, BitBangSpiConf config)
Performs a single bit banged SPI transfer. Pins must already be configured as needed.
Definition: SpiFunctions.c:465
Header file for all SPI related functions.
uint16_t CSLagDelay
Definition: SpiFunctions.h:47
uint8_t SCLK
Definition: SpiFunctions.h:38
void AdiConfigureWatchdog()
Configures the FX3 watchdog timer based on the current board state.
Definition: HelperFunctions.c:227
CyU3PReturnStatus_t AdiRestartSpi()
This function restarts the SPI controller.
Definition: SpiFunctions.c:188
void AdiLogError(FileIdentifier File, uint32_t Line, uint32_t ErrorCode)
Logs a firmware error to flash memory for later examination.
Definition: ErrorLog.c:51
#define BITBANG_HALFCLOCK_OFFSET
Definition: SpiFunctions.h:76
uint8_t CS
Definition: SpiFunctions.h:35
static uvint32_t * MOSIPin
Definition: SpiFunctions.c:45