#include <stddef.h>
#include "common/phal_F4_F7/dma/dma.h"
#include "common/phal_F4_F7/gpio/gpio.h"
#include "common/phal_F4_F7/phal_F4_F7.h"
#include "common/phal_F4_F7/rcc/rcc.h"
#include "common_defs.h"
Go to the source code of this file.
|
| bool | PHAL_SPI_init (SPI_InitConfig_t *handle) |
| | Initilize SPI peripheral with the configuired structure.
|
| |
| 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_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_busy (SPI_InitConfig_t *cfg) |
| | Check for current SPI transaction to complete.
|
| |
| 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.
|
| |
| 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.
|
| |
|
void | PHAL_SPI_ForceReset (SPI_InitConfig_t *spi) |
| |
- Author
- Aditya Anand (anand.nosp@m.89@p.nosp@m.urdue.nosp@m..edu)
- Version
- 0.1
- Date
- 2024-12-4
- Copyright
- Copyright (c) 2021
◆ SPI1_RXDMA_CONT_CONFIG
| #define SPI1_RXDMA_CONT_CONFIG |
( |
| rx_addr_, |
|
|
| priority_ ) |
Value: { \
.periph_addr = (uint32_t)&(SPI1->DR), \
.mem_addr = (uint32_t)(rx_addr_), \
.tx_size = 1, \
.increment = false, \
.circular = false, \
.dir = 0b0, \
.mem_inc = true, \
.periph_inc = false, \
.mem_to_mem = false, \
.priority = (priority_), \
.mem_size = 0b00, \
.periph_size = 0b00, \
.tx_isr_en = false, \
.dma_chan_request = 0b0011, \
.stream_idx = 2, \
.periph = DMA2, \
.stream = DMA2_Stream2}
◆ SPI1_TXDMA_CONT_CONFIG
| #define SPI1_TXDMA_CONT_CONFIG |
( |
| tx_addr_, |
|
|
| priority_ ) |
Value: { \
.periph_addr = (uint32_t)&(SPI1->DR), \
.mem_addr = (uint32_t)(tx_addr_), \
.tx_size = 1, \
.increment = false, \
.circular = false, \
.dir = 0b1, \
.mem_inc = true, \
.periph_inc = false, \
.mem_to_mem = false, \
.priority = (priority_), \
.mem_size = 0b00, \
.periph_size = 0b00, \
.tx_isr_en = true, \
.dma_chan_request = 0b0011, \
.stream_idx = 3, \
.periph = DMA2, \
.stream = DMA2_Stream3}
◆ SPI2_RXDMA_CONT_CONFIG
| #define SPI2_RXDMA_CONT_CONFIG |
( |
| rx_addr_, |
|
|
| priority_ ) |
Value: { \
.periph_addr = (uint32_t)&(SPI2->DR), \
.mem_addr = (uint32_t)(rx_addr_), \
.tx_size = 1, \
.increment = false, \
.circular = false, \
.dir = 0b0, \
.mem_inc = true, \
.periph_inc = false, \
.mem_to_mem = false, \
.priority = (priority_), \
.mem_size = 0b00, \
.periph_size = 0b00, \
.tx_isr_en = false, \
.dma_chan_request = 0b0000, \
.stream_idx = 3, \
.periph = DMA1, \
.stream = DMA1_Stream3}
◆ SPI2_TXDMA_CONT_CONFIG
| #define SPI2_TXDMA_CONT_CONFIG |
( |
| tx_addr_, |
|
|
| priority_ ) |
Value: { \
.periph_addr = (uint32_t)&(SPI2->DR), \
.mem_addr = (uint32_t)(tx_addr_), \
.tx_size = 1, \
.increment = false, \
.circular = false, \
.dir = 0b1, \
.mem_inc = true, \
.periph_inc = false, \
.mem_to_mem = false, \
.priority = (priority_), \
.mem_size = 0b00, \
.periph_size = 0b00, \
.tx_isr_en = true, \
.dma_chan_request = 0b0000, \
.stream_idx = 4, \
.periph = DMA1, \
.stream = DMA1_Stream4}
◆ PHAL_SPI_busy()
Check for current SPI transaction to complete.
- Parameters
-
- Returns
- true
-
false
◆ PHAL_SPI_init()
Initilize SPI peripheral with the configuired structure.
- Parameters
-
| handle | SPI handle to configure. |
- Returns
- true
-
false
◆ 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
-
| spi | Spi handle |
| address | Address of data to read |
| skipDummy | Return the 3rd byte read instead of the 2nd byte |
◆ 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
-
| spi | SPI handle |
| out_data | Address of data buffer to put on MOSI line |
| data_len | Number of SPI packets to send |
| in_data | Address of data buffer to put data coming in MISO line |
- Returns
- true Able to start DMA transaction
-
false Unable to start DMA transaction
◆ 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
-
| spi | SPI handle |
| out_data | Address of data buffer to put on MOSI line |
| txlen | Number of SPI Packets to Send |
| rxlen | Number of SPI Packets to Receive |
| in_data | Address 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
◆ 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
-
| spi | Spi handle |
| address | Address of data to read |
| writeDat | Data to write to address |