RTEMS: bsps/arm/atsam/include/libchip/include/spi.h File Reference

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Macros | Functions
spi.h File Reference
`#include "chip.h"`

Go to the source code of this file.

## Macros
#define | SPI_PCS(npcs) SPI_MR_PCS((~(1 << npcs) & 0xF))
#define | SPI_SCBR(baudrate, masterClock) SPI_CSR_SCBR((uint32_t)(masterClock / baudrate))
#define | SPI_DLYBS(delay, masterClock) SPI_CSR_DLYBS((uint32_t) (((masterClock / 1000000) * delay) / 1000)+1)
#define | SPI_DLYBCT(delay, masterClock) SPI_CSR_DLYBCT ((uint32_t) (((masterClock / 1000000) * delay) / 32000)+1)

## Functions
void | SPI_Enable (Spi *spi)
| Enables a SPI peripheral.
void | SPI_Disable (Spi *spi)
| Disables a SPI peripheral.
void | SPI_EnableIt (Spi *spi, uint32_t dwSources)
| Enables one or more interrupt sources of a SPI peripheral.
void | SPI_DisableIt (Spi *spi, uint32_t dwSources)
| Disables one or more interrupt sources of a SPI peripheral.
void | SPI_Configure (Spi *spi, uint32_t dwId, uint32_t dwConfiguration)
| Configures a SPI peripheral as specified. The configuration can be computed using several macros (see SPI Configuration Macros).
void | SPI_SetMode (Spi *spi, uint32_t dwConfiguration)
| Configures SPI Mode Register.
void | SPI_ChipSelect (Spi *spi, uint8_t cS)
| Configures SPI chip select.
void | SPI_ReleaseCS (Spi *spi)
| Configures SPI to release last used CS line.
void | SPI_ConfigureNPCS (Spi *spi, uint32_t dwNpcs, uint32_t dwConfiguration)
| Configures a chip select of a SPI peripheral. The chip select configuration is computed using several macros (see SPI Configuration Macros).
void | SPI_ConfigureCSMode (Spi *spi, uint32_t dwNpcs, uint32_t bReleaseOnLast)
| Configures a chip select active mode of a SPI peripheral.
uint32_t | SPI_Read (Spi *spi)
| Reads and returns the last word of data received by a SPI peripheral. This method must be called after a successful SPI_Write call.
void | SPI_Write (Spi *spi, uint32_t dwNpcs, uint16_t wData)
| Sends data through a SPI peripheral. If the SPI is configured to use a fixed peripheral select, the npcs value is meaningless. Otherwise, it identifies the component which shall be addressed.
void | SPI_WriteLast (Spi *spi, uint32_t dwNpcs, uint16_t wData)
| Sends last data through a SPI peripheral. If the SPI is configured to use a fixed peripheral select, the npcs value is meaningless. Otherwise, it identifies the component which shall be addressed.
uint32_t | SPI_GetStatus (Spi *spi)
| Get the current status register of the given SPI peripheral.
uint32_t | SPI_IsFinished (Spi *pSpi)
| Check if SPI transfer finish.

## Detailed Description

Interface for Serial Peripheral Interface (SPI) controller.

## Macro Definition Documentation

## ◆ SPI_DLYBCT

#define SPI_DLYBCT | ( |  | delay,
|  |  | masterClock
| ) |  | SPI_CSR_DLYBCT ((uint32_t) (((masterClock / 1000000) * delay) / 32000)+1)

Calculates the value of the CSR DLYBCT field given the desired delay (in ns)

## ◆ SPI_DLYBS

#define SPI_DLYBS | ( |  | delay,
|  |  | masterClock
| ) |  | SPI_CSR_DLYBS((uint32_t) (((masterClock / 1000000) * delay) / 1000)+1)

Calculates the value of the CSR DLYBS field given the desired delay (in ns)

## ◆ SPI_PCS

#define SPI_PCS | ( |  | npcs | ) | SPI_MR_PCS((~(1 << npcs) & 0xF))

Here are several macros which should be used when configuring a SPI peripheral.

# SPI Configuration Macros

- SPI_PCS
- SPI_SCBR
- SPI_DLYBS
- SPI_DLYBCT Calculate the PCS field value given the chip select NPCS value

## ◆ SPI_SCBR

#define SPI_SCBR | ( |  | baudrate,
|  |  | masterClock
| ) |  | SPI_CSR_SCBR((uint32_t)(masterClock / baudrate))

Calculates the value of the CSR SCBR field given the baudrate and MCK.

## Function Documentation

## ◆ SPI_ChipSelect()

void SPI_ChipSelect | ( | Spi * | spi,
|  | uint8_t | cS
| ) |  |

Configures SPI chip select.

Parameters

  spi | Pointer to an SPI instance.
  cS | Chip select of NPSCx.

## ◆ SPI_Configure()

void SPI_Configure | ( | Spi * | spi,
|  | uint32_t | dwId,
|  | uint32_t | dwConfiguration
| ) |  |

Configures a SPI peripheral as specified. The configuration can be computed using several macros (see SPI Configuration Macros).

Parameters

  spi | Pointer to an SPI instance.
  id | Peripheral ID of the SPI.
  configuration | Value of the SPI configuration register.

## ◆ SPI_ConfigureCSMode()

void SPI_ConfigureCSMode | ( | Spi * | spi,
|  | uint32_t | dwNpcs,
|  | uint32_t | bReleaseOnLast
| ) |  |

Configures a chip select active mode of a SPI peripheral.

Parameters

  spi | Pointer to an SPI instance.
  dwNpcs | Chip select to configure (0, 1, 2 or 3).
  bReleaseOnLast | CS controlled by last transfer. SPI_ReleaseCS() is used to release CS.

## ◆ SPI_ConfigureNPCS()

void SPI_ConfigureNPCS | ( | Spi * | spi,
|  | uint32_t | dwNpcs,
|  | uint32_t | dwConfiguration
| ) |  |

Configures a chip select of a SPI peripheral. The chip select configuration is computed using several macros (see SPI Configuration Macros).

Parameters

  spi | Pointer to an SPI instance.
  npcs | Chip select to configure (0, 1, 2 or 3).
  configuration | Desired chip select configuration.

## ◆ SPI_Disable()

void SPI_Disable | ( | Spi * | spi | ) |

Disables a SPI peripheral.

Parameters

  spi | Pointer to an SPI instance.

## ◆ SPI_DisableIt()

void SPI_DisableIt | ( | Spi * | spi,
|  | uint32_t | dwSources
| ) |  |

Disables one or more interrupt sources of a SPI peripheral.

Parameters

  spi | Pointer to an SPI instance.
  sources | Bitwise OR of selected interrupt sources.

## ◆ SPI_Enable()

void SPI_Enable | ( | Spi * | spi | ) |

Enables a SPI peripheral.

Parameters

  spi | Pointer to an SPI instance.

## ◆ SPI_EnableIt()

void SPI_EnableIt | ( | Spi * | spi,
|  | uint32_t | dwSources
| ) |  |

Enables one or more interrupt sources of a SPI peripheral.

Parameters

  spi | Pointer to an SPI instance.
  sources | Bitwise OR of selected interrupt sources.

## ◆ SPI_GetStatus()

uint32_t SPI_GetStatus | ( | Spi * | spi | ) |

Get the current status register of the given SPI peripheral.

Note
  This resets the internal value of the status register, so further read may yield different values.

Parameters

  spi | Pointer to a Spi instance.

Returns
  SPI status register.

## ◆ SPI_IsFinished()

uint32_t SPI_IsFinished | ( | Spi * | spi | ) |

Check if SPI transfer finish.

Parameters

  spi | Pointer to an SPI instance.

Returns
  Returns 1 if there is no pending write operation on the SPI; otherwise returns 0.

## ◆ SPI_Read()

uint32_t SPI_Read | ( | Spi * | spi | ) |

Reads and returns the last word of data received by a SPI peripheral. This method must be called after a successful SPI_Write call.

Parameters

  spi | Pointer to an Spi instance.

Returns
  read data.

## ◆ SPI_ReleaseCS()

void SPI_ReleaseCS | ( | Spi * | spi | ) |

Configures SPI to release last used CS line.

Parameters

  spi | Pointer to an SPI instance.

## ◆ SPI_SetMode()

void SPI_SetMode | ( | Spi * | spi,
|  | uint32_t | dwConfiguration
| ) |  |

Configures SPI Mode Register.

Parameters

  spi | Pointer to an SPI instance.
  configuration | Value of the SPI mode register.

## ◆ SPI_Write()

void SPI_Write | ( | Spi * | spi,
|  | uint32_t | dwNpcs,
|  | uint16_t | wData
| ) |  |

Sends data through a SPI peripheral. If the SPI is configured to use a fixed peripheral select, the npcs value is meaningless. Otherwise, it identifies the component which shall be addressed.

Parameters

  spi | Pointer to an SPI instance.
  npcs | Chip select of the component to address (0, 1, 2 or 3).
  data | Word of data to send.

## ◆ SPI_WriteLast()

void SPI_WriteLast | ( | Spi * | spi,
|  | uint32_t | dwNpcs,
|  | uint16_t | wData
| ) |  |

Sends last data through a SPI peripheral. If the SPI is configured to use a fixed peripheral select, the npcs value is meaningless. Otherwise, it identifies the component which shall be addressed.

Parameters

  spi | Pointer to an SPI instance.
  npcs | Chip select of the component to address (0, 1, 2 or 3).
  data | Word of data to send.