no-OS
Loading...
Searching...
No Matches
stm32_spi.c File Reference

Implementation of stm32 spi driver. More...

#include <stdlib.h>
#include <errno.h>
#include "no_os_util.h"
#include "no_os_gpio.h"
#include "stm32_gpio.h"
#include "no_os_spi.h"
#include "stm32_spi.h"
#include "no_os_delay.h"
#include "no_os_alloc.h"
#include "stm32_dma.h"
Include dependency graph for stm32_spi.c:

Functions

int32_t stm32_spi_init (struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
 Initialize the SPI communication peripheral.
 
int32_t stm32_spi_remove (struct no_os_spi_desc *desc)
 Free the resources allocated by no_os_spi_init().
 
int32_t stm32_spi_altrnate_cs_enable (struct no_os_spi_desc *desc, bool enable)
 enable CS gpio alternate function
 
int32_t stm32_spi_transfer (struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
 Write/read multiple messages to/from SPI.
 
int32_t stm32_spi_write_and_read (struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
 Write and read data to/from SPI.
 
int32_t stm32_config_dma_and_start (struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len, void(*callback)(struct no_os_dma_xfer_desc *old_xfer, struct no_os_dma_xfer_desc *next_xfer, void *ctx), void *ctx)
 Configure and start a series of transfers using DMA.
 
void stm32_spi_dma_callback (struct no_os_dma_xfer_desc *old_xfer, struct no_os_dma_xfer_desc *next_xfer, void *ctx)
 
int32_t stm32_spi_transfer_dma_async (struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len, void(*callback)(void *), void *ctx)
 Configure and start a series of transfers using DMA. Don't Wait for the completion before returning.
 
int32_t stm32_spi_transfer_dma (struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
 Configure and start a series of transfers using DMA. Wait for the completion before returning.
 
int32_t stm32_spi_transfer_abort (struct no_os_spi_desc *desc)
 Abort SPI transfers.
 

Variables

const struct no_os_spi_platform_ops stm32_spi_ops
 stm32 platform specific SPI platform ops structure
 

Detailed Description

Implementation of stm32 spi driver.

Author
Darius Berghe (dariu.nosp@m.s.be.nosp@m.rghe@.nosp@m.anal.nosp@m.og.co.nosp@m.m)

Copyright 2020(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Function Documentation

◆ stm32_config_dma_and_start()

int32_t stm32_config_dma_and_start ( struct no_os_spi_desc * desc,
struct no_os_spi_msg * msgs,
uint32_t len,
void(* callback )(struct no_os_dma_xfer_desc *old_xfer, struct no_os_dma_xfer_desc *next_xfer, void *ctx),
void * ctx )

Configure and start a series of transfers using DMA.

Parameters
desc- The SPI descriptor.
msgs- The messages array.
len- Number of messages.
callback- Function to be invoked after transfers
ctx- User defined parameter for the callback function.
Returns
0 in case of success, errno codes otherwise.

◆ stm32_spi_altrnate_cs_enable()

int32_t stm32_spi_altrnate_cs_enable ( struct no_os_spi_desc * desc,
bool enable )

enable CS gpio alternate function

Parameters
desc- The SPI descriptor
enable- enable = alternate function active, disable = gpio mode
Returns
0 in case of success, errno codes otherwise.

◆ stm32_spi_dma_callback()

void stm32_spi_dma_callback ( struct no_os_dma_xfer_desc * old_xfer,
struct no_os_dma_xfer_desc * next_xfer,
void * ctx )

◆ stm32_spi_init()

int32_t stm32_spi_init ( struct no_os_spi_desc ** desc,
const struct no_os_spi_init_param * param )

Initialize the SPI communication peripheral.

Parameters
desc- The SPI descriptor.
param- The structure that contains the SPI parameters.
Returns
0 in case of success, -1 otherwise.

◆ stm32_spi_remove()

int32_t stm32_spi_remove ( struct no_os_spi_desc * desc)

Free the resources allocated by no_os_spi_init().

Parameters
desc- The SPI descriptor.
Returns
0 in case of success, -1 otherwise.

◆ stm32_spi_transfer()

int32_t stm32_spi_transfer ( struct no_os_spi_desc * desc,
struct no_os_spi_msg * msgs,
uint32_t len )

Write/read multiple messages to/from SPI.

Parameters
desc- The SPI descriptor.
msgs- The messages array.
len- Number of messages.
Returns
0 in case of success, errno codes otherwise.

◆ stm32_spi_transfer_abort()

int32_t stm32_spi_transfer_abort ( struct no_os_spi_desc * desc)

Abort SPI transfers.

Parameters
desc- The SPI descriptor.
Returns
0 in case of success, errno codes otherwise.

◆ stm32_spi_transfer_dma()

int32_t stm32_spi_transfer_dma ( struct no_os_spi_desc * desc,
struct no_os_spi_msg * msgs,
uint32_t len )

Configure and start a series of transfers using DMA. Wait for the completion before returning.

Parameters
desc- The SPI descriptor.
msgs- The messages array.
len- Number of messages.
Returns
0 in case of success, errno codes otherwise.

◆ stm32_spi_transfer_dma_async()

int32_t stm32_spi_transfer_dma_async ( struct no_os_spi_desc * desc,
struct no_os_spi_msg * msgs,
uint32_t len,
void(* callback )(void *),
void * ctx )

Configure and start a series of transfers using DMA. Don't Wait for the completion before returning.

Parameters
desc- The SPI descriptor.
msgs- The messages array.
len- Number of messages.
callback- Function to be invoked once the transfers are done.
ctx- User defined parameter for the callback function.
Returns
0 in case of success, errno codes otherwise.

◆ stm32_spi_write_and_read()

int32_t stm32_spi_write_and_read ( struct no_os_spi_desc * desc,
uint8_t * data,
uint16_t bytes_number )

Write and read data to/from SPI.

Parameters
desc- The SPI descriptor.
data- The buffer with the transmitted/received data.
bytes_number- Number of bytes to write/read.
Returns
0 in case of success, -1 otherwise.

Variable Documentation

◆ stm32_spi_ops

const struct no_os_spi_platform_ops stm32_spi_ops
Initial value:
= {
.init = &stm32_spi_init,
.write_and_read = &stm32_spi_write_and_read,
.remove = &stm32_spi_remove,
.transfer = &stm32_spi_transfer,
.transfer_dma_async = &stm32_spi_transfer_dma_async,
.transfer_dma = &stm32_spi_transfer_dma,
.transfer_abort = &stm32_spi_transfer_abort
}
int32_t stm32_spi_remove(struct no_os_spi_desc *desc)
Free the resources allocated by no_os_spi_init().
Definition stm32_spi.c:253
int32_t stm32_spi_write_and_read(struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
Write and read data to/from SPI.
Definition stm32_spi.c:434
int32_t stm32_spi_transfer_dma(struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
Configure and start a series of transfers using DMA. Wait for the completion before returning.
Definition stm32_spi.c:641
int32_t stm32_spi_transfer(struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
Write/read multiple messages to/from SPI.
Definition stm32_spi.c:319
int32_t stm32_spi_init(struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
Initialize the SPI communication peripheral.
Definition stm32_spi.c:140
int32_t stm32_spi_transfer_dma_async(struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len, void(*callback)(void *), void *ctx)
Configure and start a series of transfers using DMA. Don't Wait for the completion before returning.
Definition stm32_spi.c:619
int32_t stm32_spi_transfer_abort(struct no_os_spi_desc *desc)
Abort SPI transfers.
Definition stm32_spi.c:670

stm32 platform specific SPI platform ops structure

stm32 specific SPI platform ops structure