no-OS
Loading...
Searching...
No Matches
no_os_spi.h File Reference

Header file of SPI Interface. More...

#include <stdint.h>
Include dependency graph for no_os_spi.h:

Classes

struct  no_os_spi_msg
 
struct  no_os_platform_spi_delays
 Delays resulted from components in the SPI signal path. The values is ns. More...
 
struct  no_os_spi_init_param
 Structure holding the parameters for SPI initialization. More...
 
struct  no_os_spibus_desc
 SPI bus descriptor. More...
 
struct  no_os_spi_desc
 Structure holding SPI descriptor. More...
 
struct  no_os_spi_platform_ops
 Structure holding SPI function pointers that point to the platform specific function. More...
 

Macros

#define NO_OS_SPI_CPHA   0x01
 
#define NO_OS_SPI_CPOL   0x02
 
#define SPI_MAX_BUS_NUMBER   8
 

Enumerations

enum  no_os_spi_mode {
  NO_OS_SPI_MODE_0 = (0 | 0) ,
  NO_OS_SPI_MODE_1 = (0 | NO_OS_SPI_CPHA) ,
  NO_OS_SPI_MODE_2 = (NO_OS_SPI_CPOL | 0) ,
  NO_OS_SPI_MODE_3 = (NO_OS_SPI_CPOL | NO_OS_SPI_CPHA)
}
 SPI configuration for clock phase and polarity. More...
 
enum  no_os_spi_bit_order {
  NO_OS_SPI_BIT_ORDER_MSB_FIRST = 0 ,
  NO_OS_SPI_BIT_ORDER_LSB_FIRST = 1
}
 SPI configuration for bit order (MSB/LSB). More...
 
enum  no_os_spi_lanes {
  NO_OS_SPI_SINGLE_LANE ,
  NO_OS_SPI_DUAL_LANE ,
  NO_OS_SPI_QUAD_LANE ,
  NO_OS_SPI_OCTO_LANE
}
 SPI configuration for number of lanes. More...
 

Functions

int32_t no_os_spi_init (struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
 Initialize the SPI communication peripheral.
 
int32_t no_os_spi_remove (struct no_os_spi_desc *desc)
 Free the resources allocated by no_os_spi_init().
 
int32_t no_os_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 no_os_spi_transfer (struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
 Iterate over head list and send all spi messages.
 
int32_t no_os_spi_transfer_dma (struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
 Transfer a list of messages using DMA and busy wait for the completion.
 
int32_t no_os_spi_transfer_dma_async (struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len, void(*callback)(void *), void *ctx)
 Transfer a list of messages using DMA. The function will return after the first transfer is started. Once all the transfers are complete, a callback will be called.
 
int32_t no_os_spi_transfer_abort (struct no_os_spi_desc *desc)
 Abort SPI transfers.
 
int32_t no_os_spibus_init (const struct no_os_spi_init_param *param)
 Initialize the SPI bus communication peripheral.
 
void no_os_spibus_remove (uint32_t bus_number)
 Removes SPI bus instance.
 

Detailed Description

Header file of SPI Interface.

Author
DBogdan (drago.nosp@m.s.bo.nosp@m.gdan@.nosp@m.anal.nosp@m.og.co.nosp@m.m)

Copyright 2019(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ NO_OS_SPI_CPHA

#define NO_OS_SPI_CPHA   0x01

◆ NO_OS_SPI_CPOL

#define NO_OS_SPI_CPOL   0x02

◆ SPI_MAX_BUS_NUMBER

#define SPI_MAX_BUS_NUMBER   8

Enumeration Type Documentation

◆ no_os_spi_bit_order

SPI configuration for bit order (MSB/LSB).

Enumerator
NO_OS_SPI_BIT_ORDER_MSB_FIRST 

Most-significant bit (MSB) first

NO_OS_SPI_BIT_ORDER_LSB_FIRST 

Least-significant bit (LSB) first

◆ no_os_spi_lanes

SPI configuration for number of lanes.

Enumerator
NO_OS_SPI_SINGLE_LANE 

Single Lane

NO_OS_SPI_DUAL_LANE 

Dual Lane

NO_OS_SPI_QUAD_LANE 

Quad Lane

NO_OS_SPI_OCTO_LANE 

Octo Lane

◆ no_os_spi_mode

SPI configuration for clock phase and polarity.

Enumerator
NO_OS_SPI_MODE_0 

Data on rising, shift out on falling

NO_OS_SPI_MODE_1 

Data on falling, shift out on rising

NO_OS_SPI_MODE_2 

Data on rising, shift out on falling

NO_OS_SPI_MODE_3 

Data on falling, shift out on rising

Function Documentation

◆ no_os_spi_init()

int32_t no_os_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.

◆ no_os_spi_remove()

int32_t no_os_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.

◆ no_os_spi_transfer()

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

Iterate over head list and send all spi messages.

Parameters
desc- The SPI descriptor.
msgs- Array of messages.
len- Number of messages in the array.
Returns
0 in case of success, negativ error code otherwise.

◆ no_os_spi_transfer_abort()

int32_t no_os_spi_transfer_abort ( struct no_os_spi_desc * desc)

Abort SPI transfers.

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

◆ no_os_spi_transfer_dma()

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

Transfer a list of messages using DMA and busy wait for the completion.

Parameters
desc- The SPI descriptor.
msgs- Array of messages.
len- Number of messages in the array.
Returns
0 in case of success, negativ error code otherwise.

◆ no_os_spi_transfer_dma_async()

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

Transfer a list of messages using DMA. The function will return after the first transfer is started. Once all the transfers are complete, a callback will be called.

Parameters
desc- The SPI descriptor.
msgs- Array of messages.
len- Number of messages in the array.
callback- A function which will be called after all the transfers are done.
ctx- User specific data which should be passed to the callback function.
Returns
0 in case of success, negativ error code otherwise.

◆ no_os_spi_write_and_read()

int32_t no_os_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.

◆ no_os_spibus_init()

int32_t no_os_spibus_init ( const struct no_os_spi_init_param * param)

Initialize the SPI bus communication peripheral.

Parameters
param- The structure that containes the SPI bus parameters
Returns
0 in case of success, error code otherwise

◆ no_os_spibus_remove()

void no_os_spibus_remove ( uint32_t bus_number)

Removes SPI bus instance.

Parameters
bus_number- SPI bus number