PER Firmware
Loading...
Searching...
No Matches
spi.c File Reference

PER Serial Peripheral Interface Device driver for STM32F4. More...

Include dependency graph for spi.c:

Functions

static uint32_t LOG2_DOWN (uint32_t x)
 
bool PHAL_SPI_init (SPI_InitConfig_t *cfg)
 Initilize SPI peripheral with the configuired structure.
 
bool PHAL_SPI_transfer_noDMA (SPI_InitConfig_t *spi, const uint8_t *out_data, uint32_t txlen, uint32_t rxlen, uint8_t *in_data)
 SPI handle.
 
bool PHAL_SPI_transfer (SPI_InitConfig_t *spi, const uint8_t *out_data, const uint32_t data_len, const uint8_t *in_data)
 Transfer data_len bytes from out_data to SPI device and place MISO data in in_data This function just starts the DMA transfer,.
 
bool PHAL_SPI_busy (SPI_InitConfig_t *cfg)
 Check for current SPI transaction to complete.
 
void PHAL_SPI_ForceReset (SPI_InitConfig_t *spi)
 
static void PHAL_SPI_priv_handleTxComplete ()
 Handle TCIF interrupt signaling end of TX transaction.
 
void DMA2_Stream3_IRQHandler ()
 
uint8_t PHAL_SPI_readByte (SPI_InitConfig_t *spi, uint8_t address, bool skipDummy)
 Blocking function to read a single byte from a SPI device. Useful for Initilization functions that just need to read a single byte in a blocking function.
 
uint8_t PHAL_SPI_writeByte (SPI_InitConfig_t *spi, uint8_t address, uint8_t writeDat)
 Blocking function to write a single byte to a SPI device. Useful for Initilization functions that just need to write a single byte in a blocking function.
 

Variables

uint32_t APB2ClockRateHz
 
uint32_t APB1ClockRateHz
 
static volatile SPI_InitConfig_tactive_transfer = NULL
 
static uint16_t trash_can
 Used as an address for DMA to dump data into.
 
static uint16_t zero
 Used as a constant zero during transmissions.
 

Detailed Description

PER Serial Peripheral Interface Device driver for STM32F4.

Author
Aditya Anand (anand.nosp@m.89@p.nosp@m.urdue.nosp@m..edu) - Port of L4 HAL by Adam Busch (busch.nosp@m.8@pu.nosp@m.rdue..nosp@m.edu)
Version
0.1
Date
2023-12-4

Function Documentation

◆ DMA2_Stream3_IRQHandler()

void DMA2_Stream3_IRQHandler ( )
Here is the call graph for this function:

◆ LOG2_DOWN()

static uint32_t LOG2_DOWN ( uint32_t x)
inlinestatic
Here is the caller graph for this function:

◆ PHAL_SPI_busy()

bool PHAL_SPI_busy ( SPI_InitConfig_t * cfg)

Check for current SPI transaction to complete.

Parameters
cfgSpi config
Returns
true
false
Here is the caller graph for this function:

◆ PHAL_SPI_ForceReset()

void PHAL_SPI_ForceReset ( SPI_InitConfig_t * spi)

◆ PHAL_SPI_init()

bool PHAL_SPI_init ( SPI_InitConfig_t * handle)

Initilize SPI peripheral with the configuired structure.

Initialize an SPI peripheral for DMA-based transfers.

Parameters
handleSPI handle to configure.
Returns
true
false
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PHAL_SPI_priv_handleTxComplete()

static void PHAL_SPI_priv_handleTxComplete ( )
static

Handle TCIF interrupt signaling end of TX transaction.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PHAL_SPI_readByte()

uint8_t PHAL_SPI_readByte ( SPI_InitConfig_t * spi,
uint8_t address,
bool skipDummy )

Blocking function to read a single byte from a SPI device. Useful for Initilization functions that just need to read a single byte in a blocking function.

Parameters
spiSpi handle
addressAddress of data to read
skipDummyReturn the 3rd byte read instead of the 2nd byte
Here is the call graph for this function:

◆ PHAL_SPI_transfer()

bool PHAL_SPI_transfer ( SPI_InitConfig_t * spi,
const uint8_t * out_data,
const uint32_t data_len,
const uint8_t * in_data )

Transfer data_len bytes from out_data to SPI device and place MISO data in in_data This function just starts the DMA transfer,.

Parameters
spiSPI handle
out_dataAddress of data buffer to put on MOSI line
data_lenNumber of SPI packets to send
in_dataAddress of data buffer to put data coming in MISO line
Returns
true Able to start DMA transaction
false Unable to start DMA transaction
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PHAL_SPI_transfer_noDMA()

bool PHAL_SPI_transfer_noDMA ( SPI_InitConfig_t * spi,
const uint8_t * out_data,
uint32_t txlen,
uint32_t rxlen,
uint8_t * in_data )

SPI handle.

Parameters
spiSPI handle
out_dataAddress of data buffer to put on MOSI line
txlenNumber of SPI Packets to Send
rxlenNumber of SPI Packets to Receive
in_dataAddress of data buffer to put data coming in MISO line
Returns
true Successfully completed non-DMA SPI transaction
false Unable to complete non-DMA SPI transaction
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PHAL_SPI_writeByte()

uint8_t PHAL_SPI_writeByte ( SPI_InitConfig_t * spi,
uint8_t address,
uint8_t writeDat )

Blocking function to write a single byte to a SPI device. Useful for Initilization functions that just need to write a single byte in a blocking function.

Parameters
spiSpi handle
addressAddress of data to read
writeDatData to write to address
Here is the call graph for this function:

Variable Documentation

◆ active_transfer

volatile SPI_InitConfig_t* active_transfer = NULL
static

◆ APB1ClockRateHz

uint32_t APB1ClockRateHz
extern

◆ APB2ClockRateHz

uint32_t APB2ClockRateHz
extern

◆ trash_can

uint16_t trash_can
static

Used as an address for DMA to dump data into.

◆ zero

uint16_t zero
static

Used as a constant zero during transmissions.