SAM4SD32 (SAM4S-EK2)
Loading...
Searching...
No Matches
spi.h File Reference

Serial Peripheral Interface (SPI) driver for SAM. More...

#include "compiler.h"

Go to the source code of this file.

Macros

#define spi_get_pcs(chip_sel_id)
 Generate Peripheral Chip Select Value from Chip Select ID.
#define SPI_TIMEOUT   15000
 Time-out value (number of attempts).

Typedefs

typedef enum spi_cs_behavior spi_cs_behavior_t
 SPI Chip Select behavior modes while transferring.

Enumerations

enum  spi_cs_behavior {
  SPI_CS_KEEP_LOW = SPI_CSR_CSAAT ,
  SPI_CS_RISE_NO_TX = 0 ,
  SPI_CS_RISE_FORCED = SPI_CSR_CSNAAT
}
 SPI Chip Select behavior modes while transferring. More...
enum  spi_status_t {
  SPI_ERROR = -1 ,
  SPI_OK = 0 ,
  SPI_ERROR_TIMEOUT = 1 ,
  SPI_ERROR_ARGUMENT ,
  SPI_ERROR_OVERRUN ,
  SPI_ERROR_MODE_FAULT ,
  SPI_ERROR_OVERRUN_AND_MODE_FAULT
}
 Status codes used by the SPI driver. More...

Functions

int16_t spi_calc_baudrate_div (const uint32_t baudrate, uint32_t mck)
 Calculate the baudrate divider.
void spi_configure_cs_behavior (Spi *p_spi, uint32_t ul_pcs_ch, uint32_t ul_cs_behavior)
 Configure CS behavior for SPI transfer (spi_cs_behavior_t).
static void spi_disable (Spi *p_spi)
 Disable SPI.
void spi_disable_clock (Spi *p_spi)
 Disable SPI clock.
static void spi_disable_interrupt (Spi *p_spi, uint32_t ul_sources)
 Disable SPI interrupts.
static void spi_disable_loopback (Spi *p_spi)
 Disable loopback mode.
static void spi_disable_mode_fault_detect (Spi *p_spi)
 Disable Mode Fault Detection.
static void spi_disable_peripheral_select_decode (Spi *p_spi)
 Disable Peripheral Select Decode.
static void spi_disable_tx_on_rx_empty (Spi *p_spi)
 Disable waiting RX_EMPTY before transfer starts.
static void spi_enable (Spi *p_spi)
 Enable SPI.
void spi_enable_clock (Spi *p_spi)
 Enable SPI clock.
static void spi_enable_interrupt (Spi *p_spi, uint32_t ul_sources)
 Enable SPI interrupts.
static void spi_enable_loopback (Spi *p_spi)
 Enable loopback mode.
static void spi_enable_mode_fault_detect (Spi *p_spi)
 Enable Mode Fault Detection.
static void spi_enable_peripheral_select_decode (Spi *p_spi)
 Enable Peripheral Select Decode.
static void spi_enable_tx_on_rx_empty (Spi *p_spi)
 Enable waiting RX_EMPTY before transfer starts.
static uint16_t spi_get (Spi *p_spi)
 Get one data to a SPI peripheral.
static uint32_t spi_get_mode (Spi *p_spi)
 Get SPI work mode.
static uint32_t spi_get_mode_fault_detect_setting (Spi *p_spi)
 Check if mode fault detection is enabled.
static Pdc * spi_get_pdc_base (Spi *p_spi)
 Get PDC registers base address.
static uint32_t spi_get_peripheral_select_decode_setting (Spi *p_spi)
 Get Peripheral Select Decode mode.
static uint32_t spi_get_peripheral_select_mode (Spi *p_spi)
 Get Peripheral Select mode.
static uint32_t spi_get_tx_on_rx_empty_setting (Spi *p_spi)
 Check if SPI waits RX_EMPTY before transfer starts.
uint32_t spi_get_writeprotect_status (Spi *p_spi)
 Indicate write protect status.
static uint32_t spi_is_enabled (Spi *p_spi)
 Test if the SPI is enabled.
static uint32_t spi_is_rx_full (Spi *p_spi)
 Check if the SPI contains a received character.
static uint32_t spi_is_rx_ready (Spi *p_spi)
 Check if all receptions are ready.
static uint32_t spi_is_tx_empty (Spi *p_spi)
 Check if all transmissions are complete.
static uint32_t spi_is_tx_ready (Spi *p_spi)
 Check if all transmissions are ready.
static void spi_put (Spi *p_spi, uint16_t data)
 Put one data to a SPI peripheral.
spi_status_t spi_read (Spi *p_spi, uint16_t *us_data, uint8_t *p_pcs)
 Read the received data and it's peripheral chip select value.
static uint32_t spi_read_interrupt_mask (Spi *p_spi)
 Read SPI interrupt mask.
static uint32_t spi_read_status (Spi *p_spi)
 Read status register.
static void spi_reset (Spi *p_spi)
 Reset SPI and set it to Slave mode.
int16_t spi_set_baudrate_div (Spi *p_spi, uint32_t ul_pcs_ch, uint8_t uc_baudrate_divider)
 Set Serial Clock Baud Rate divider value (SCBR).
void spi_set_bits_per_transfer (Spi *p_spi, uint32_t ul_pcs_ch, uint32_t ul_bits)
 Set number of bits per transfer.
void spi_set_clock_phase (Spi *p_spi, uint32_t ul_pcs_ch, uint32_t ul_phase)
 Set Data Capture Phase.
void spi_set_clock_polarity (Spi *p_spi, uint32_t ul_pcs_ch, uint32_t ul_polarity)
 Set clock default state.
void spi_set_delay_between_chip_select (Spi *p_spi, uint32_t ul_delay)
 Set delay between chip selects (in number of MCK clocks).
static void spi_set_fixed_peripheral_select (Spi *p_spi)
 Set Fixed Peripheral Select.
static void spi_set_lastxfer (Spi *p_spi)
 Issue a LASTXFER command.
static void spi_set_master_mode (Spi *p_spi)
 Set SPI to Master mode.
void spi_set_peripheral_chip_select_value (Spi *p_spi, uint32_t ul_value)
 Set Peripheral Chip Select (PCS) value.
static void spi_set_slave_mode (Spi *p_spi)
 Set SPI to Slave mode.
void spi_set_transfer_delay (Spi *p_spi, uint32_t ul_pcs_ch, uint8_t uc_dlybs, uint8_t uc_dlybct)
 Configure timing for SPI transfer.
static void spi_set_variable_peripheral_select (Spi *p_spi)
 Set Variable Peripheral Select.
void spi_set_writeprotect (Spi *p_spi, uint32_t ul_enable)
 Enable or disable write protection of SPI registers.
spi_status_t spi_write (Spi *p_spi, uint16_t us_data, uint8_t uc_pcs, uint8_t uc_last)
 Write the transmitted data with specified peripheral chip select value.

Detailed Description

Serial Peripheral Interface (SPI) driver for SAM.

Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries.

\cond ASF_LICENSE

Definition in file spi.h.

Macro Definition Documentation

◆ spi_get_pcs

#define spi_get_pcs ( chip_sel_id)
Value:
((~(1u<<(chip_sel_id)))&0xF)

Generate Peripheral Chip Select Value from Chip Select ID.

Note
When chip select n is working, PCS bit n is set to low level.
Parameters
chip_sel_idThe chip select number used

Definition at line 81 of file spi.h.

◆ SPI_TIMEOUT

#define SPI_TIMEOUT   15000

Time-out value (number of attempts).

Definition at line 51 of file spi.h.

Referenced by spi_read(), and spi_write().

Typedef Documentation

◆ spi_cs_behavior_t

SPI Chip Select behavior modes while transferring.

Enumeration Type Documentation

◆ spi_cs_behavior

SPI Chip Select behavior modes while transferring.

Enumerator
SPI_CS_KEEP_LOW 

CS does not rise until a new transfer is requested on different chip select.

SPI_CS_RISE_NO_TX 

CS rises if there is no more data to transfer.

SPI_CS_RISE_FORCED 

CS is de-asserted systematically during a time DLYBCS.

Definition at line 66 of file spi.h.

66 {
#define SPI_CSR_CSAAT
(SPI_CSR[4]) Chip Select Active After Transfer
#define SPI_CSR_CSNAAT
(SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1)
@ SPI_CS_KEEP_LOW
CS does not rise until a new transfer is requested on different chip select.
Definition spi.h:68
@ SPI_CS_RISE_FORCED
CS is de-asserted systematically during a time DLYBCS.
Definition spi.h:72
@ SPI_CS_RISE_NO_TX
CS rises if there is no more data to transfer.
Definition spi.h:70
enum spi_cs_behavior spi_cs_behavior_t
SPI Chip Select behavior modes while transferring.

◆ spi_status_t

Status codes used by the SPI driver.

Enumerator
SPI_ERROR 
SPI_OK 
SPI_ERROR_TIMEOUT 
SPI_ERROR_ARGUMENT 
SPI_ERROR_OVERRUN 
SPI_ERROR_MODE_FAULT 
SPI_ERROR_OVERRUN_AND_MODE_FAULT 

Definition at line 54 of file spi.h.

55{
56 SPI_ERROR = -1,
57 SPI_OK = 0,
spi_status_t
Status codes used by the SPI driver.
Definition spi.h:55
@ SPI_ERROR_OVERRUN
Definition spi.h:60
@ SPI_ERROR_MODE_FAULT
Definition spi.h:61
@ SPI_OK
Definition spi.h:57
@ SPI_ERROR_ARGUMENT
Definition spi.h:59
@ SPI_ERROR_OVERRUN_AND_MODE_FAULT
Definition spi.h:62
@ SPI_ERROR
Definition spi.h:56
@ SPI_ERROR_TIMEOUT
Definition spi.h:58

Function Documentation

◆ spi_disable()

void spi_disable ( Spi * p_spi)
inlinestatic

Disable SPI.

Note
CS is de-asserted, which indicates that the last data is done, and user should check TX_EMPTY before disabling SPI.
Parameters
p_spiPointer to an SPI instance.

Definition at line 111 of file spi.h.

112{
113 p_spi->SPI_CR = SPI_CR_SPIDIS;
114}
#define SPI_CR_SPIDIS
(SPI_CR) SPI Disable
__O uint32_t SPI_CR
(Spi Offset: 0x00) Control Register

References Spi::SPI_CR, and SPI_CR_SPIDIS.

◆ spi_disable_interrupt()

void spi_disable_interrupt ( Spi * p_spi,
uint32_t ul_sources )
inlinestatic

Disable SPI interrupts.

Parameters
p_spiPointer to an SPI instance.
ul_sourcesInterrupts to be disabled.

Definition at line 472 of file spi.h.

473{
474 p_spi->SPI_IDR = ul_sources;
475}
__O uint32_t SPI_IDR
(Spi Offset: 0x18) Interrupt Disable Register

References Spi::SPI_IDR.

◆ spi_disable_loopback()

void spi_disable_loopback ( Spi * p_spi)
inlinestatic

Disable loopback mode.

Parameters
p_spiPointer to an SPI instance.

Definition at line 324 of file spi.h.

325{
326 p_spi->SPI_MR &= (~SPI_MR_LLB);
327}
#define SPI_MR_LLB
(SPI_MR) Local Loopback Enable
__IO uint32_t SPI_MR
(Spi Offset: 0x04) Mode Register

References Spi::SPI_MR, and SPI_MR_LLB.

◆ spi_disable_mode_fault_detect()

void spi_disable_mode_fault_detect ( Spi * p_spi)
inlinestatic

Disable Mode Fault Detection.

Parameters
p_spiPointer to an SPI instance.

Definition at line 252 of file spi.h.

253{
254 p_spi->SPI_MR |= SPI_MR_MODFDIS;
255}
#define SPI_MR_MODFDIS
(SPI_MR) Mode Fault Detection

References Spi::SPI_MR, and SPI_MR_MODFDIS.

◆ spi_disable_peripheral_select_decode()

void spi_disable_peripheral_select_decode ( Spi * p_spi)
inlinestatic

Disable Peripheral Select Decode.

Parameters
p_spiPointer to an SPI instance.

Definition at line 216 of file spi.h.

217{
218 p_spi->SPI_MR &= (~SPI_MR_PCSDEC);
219}
#define SPI_MR_PCSDEC
(SPI_MR) Chip Select Decode

References Spi::SPI_MR, and SPI_MR_PCSDEC.

◆ spi_disable_tx_on_rx_empty()

void spi_disable_tx_on_rx_empty ( Spi * p_spi)
inlinestatic

Disable waiting RX_EMPTY before transfer starts.

Parameters
p_spiPointer to an SPI instance.

Definition at line 288 of file spi.h.

289{
290 p_spi->SPI_MR &= (~SPI_MR_WDRBT);
291}
#define SPI_MR_WDRBT
(SPI_MR) Wait Data Read Before Transfer

References Spi::SPI_MR, and SPI_MR_WDRBT.

◆ spi_enable()

void spi_enable ( Spi * p_spi)
inlinestatic

Enable SPI.

Parameters
p_spiPointer to an SPI instance.

Definition at line 98 of file spi.h.

99{
100 p_spi->SPI_CR = SPI_CR_SPIEN;
101}
#define SPI_CR_SPIEN
(SPI_CR) SPI Enable

References Spi::SPI_CR, and SPI_CR_SPIEN.

◆ spi_enable_interrupt()

void spi_enable_interrupt ( Spi * p_spi,
uint32_t ul_sources )
inlinestatic

Enable SPI interrupts.

Parameters
p_spiPointer to an SPI instance.
ul_sourcesInterrupts to be enabled.

Definition at line 461 of file spi.h.

462{
463 p_spi->SPI_IER = ul_sources;
464}
__O uint32_t SPI_IER
(Spi Offset: 0x14) Interrupt Enable Register

References Spi::SPI_IER.

◆ spi_enable_loopback()

void spi_enable_loopback ( Spi * p_spi)
inlinestatic

Enable loopback mode.

Parameters
p_spiPointer to an SPI instance.

Definition at line 314 of file spi.h.

315{
316 p_spi->SPI_MR |= SPI_MR_LLB;
317}

References Spi::SPI_MR, and SPI_MR_LLB.

◆ spi_enable_mode_fault_detect()

void spi_enable_mode_fault_detect ( Spi * p_spi)
inlinestatic

Enable Mode Fault Detection.

Parameters
p_spiPointer to an SPI instance.

Definition at line 242 of file spi.h.

243{
244 p_spi->SPI_MR &= (~SPI_MR_MODFDIS);
245}

References Spi::SPI_MR, and SPI_MR_MODFDIS.

◆ spi_enable_peripheral_select_decode()

void spi_enable_peripheral_select_decode ( Spi * p_spi)
inlinestatic

Enable Peripheral Select Decode.

Parameters
p_spiPointer to an SPI instance.

Definition at line 206 of file spi.h.

207{
208 p_spi->SPI_MR |= SPI_MR_PCSDEC;
209}

References Spi::SPI_MR, and SPI_MR_PCSDEC.

◆ spi_enable_tx_on_rx_empty()

void spi_enable_tx_on_rx_empty ( Spi * p_spi)
inlinestatic

Enable waiting RX_EMPTY before transfer starts.

Parameters
p_spiPointer to an SPI instance.

Definition at line 278 of file spi.h.

279{
280 p_spi->SPI_MR |= SPI_MR_WDRBT;
281}

References Spi::SPI_MR, and SPI_MR_WDRBT.

◆ spi_get()

uint16_t spi_get ( Spi * p_spi)
inlinestatic

Get one data to a SPI peripheral.

Parameters
p_spiBase address of the SPI instance.
Returns
The data byte

Definition at line 383 of file spi.h.

384{
385 return (p_spi->SPI_RDR & SPI_RDR_RD_Msk);
386}
#define SPI_RDR_RD_Msk
(SPI_RDR) Receive Data
__I uint32_t SPI_RDR
(Spi Offset: 0x08) Receive Data Register

References Spi::SPI_RDR, and SPI_RDR_RD_Msk.

◆ spi_get_mode()

uint32_t spi_get_mode ( Spi * p_spi)
inlinestatic

Get SPI work mode.

Parameters
p_spiPointer to an SPI instance.
Returns
1 for master mode, 0 for slave mode.

Definition at line 154 of file spi.h.

155{
156 if (p_spi->SPI_MR & SPI_MR_MSTR) {
157 return 1;
158 } else {
159 return 0;
160 }
161}
#define SPI_MR_MSTR
(SPI_MR) Master/Slave Mode

References Spi::SPI_MR, and SPI_MR_MSTR.

◆ spi_get_mode_fault_detect_setting()

uint32_t spi_get_mode_fault_detect_setting ( Spi * p_spi)
inlinestatic

Check if mode fault detection is enabled.

Parameters
p_spiPointer to an SPI instance.
Returns
1 for disabled, 0 for enabled.

Definition at line 264 of file spi.h.

265{
266 if (p_spi->SPI_MR & SPI_MR_MODFDIS) {
267 return 1;
268 } else {
269 return 0;
270 }
271}

References Spi::SPI_MR, and SPI_MR_MODFDIS.

◆ spi_get_pdc_base()

Pdc * spi_get_pdc_base ( Spi * p_spi)
inlinestatic

Get PDC registers base address.

Parameters
p_spiPointer to an SPI instance.
Returns
PDC registers base for PDC driver to access.

Definition at line 509 of file spi.h.

510{
511 return (Pdc *)&(p_spi->SPI_RPR);
512}
__IO uint32_t SPI_RPR
(Spi Offset: 0x100) Receive Pointer Register

References Spi::SPI_RPR.

◆ spi_get_peripheral_select_decode_setting()

uint32_t spi_get_peripheral_select_decode_setting ( Spi * p_spi)
inlinestatic

Get Peripheral Select Decode mode.

Parameters
p_spiPointer to an SPI instance.
Returns
1 for decode mode, 0 for direct mode.

Definition at line 228 of file spi.h.

229{
230 if (p_spi->SPI_MR & SPI_MR_PCSDEC) {
231 return 1;
232 } else {
233 return 0;
234 }
235}

References Spi::SPI_MR, and SPI_MR_PCSDEC.

◆ spi_get_peripheral_select_mode()

uint32_t spi_get_peripheral_select_mode ( Spi * p_spi)
inlinestatic

Get Peripheral Select mode.

Parameters
p_spiPointer to an SPI instance.
Returns
1 for Variable mode, 0 for fixed mode.

Definition at line 192 of file spi.h.

193{
194 if (p_spi->SPI_MR & SPI_MR_PS) {
195 return 1;
196 } else {
197 return 0;
198 }
199}
#define SPI_MR_PS
(SPI_MR) Peripheral Select

References Spi::SPI_MR, and SPI_MR_PS.

Referenced by spi_read(), and spi_write().

◆ spi_get_tx_on_rx_empty_setting()

uint32_t spi_get_tx_on_rx_empty_setting ( Spi * p_spi)
inlinestatic

Check if SPI waits RX_EMPTY before transfer starts.

Parameters
p_spiPointer to an SPI instance.
Returns
1 for SPI waits, 0 for no wait.

Definition at line 300 of file spi.h.

301{
302 if (p_spi->SPI_MR & SPI_MR_WDRBT) {
303 return 1;
304 } else {
305 return 0;
306 }
307}

References Spi::SPI_MR, and SPI_MR_WDRBT.

◆ spi_is_enabled()

uint32_t spi_is_enabled ( Spi * p_spi)
inlinestatic

Test if the SPI is enabled.

Parameters
p_spiPointer to an SPI instance.
Returns
1 if the SPI is enabled, otherwise 0.

Definition at line 356 of file spi.h.

357{
358 if (p_spi->SPI_SR & SPI_SR_SPIENS) {
359 return 1;
360 } else {
361 return 0;
362 }
363}
#define SPI_SR_SPIENS
(SPI_SR) SPI Enable Status
__I uint32_t SPI_SR
(Spi Offset: 0x10) Status Register

References Spi::SPI_SR, and SPI_SR_SPIENS.

◆ spi_is_rx_full()

uint32_t spi_is_rx_full ( Spi * p_spi)
inlinestatic

Check if the SPI contains a received character.

Parameters
p_spiPointer to an SPI instance.
Returns
1 if the SPI Receive Holding Register is full, otherwise 0.

Definition at line 429 of file spi.h.

430{
431 if (p_spi->SPI_SR & SPI_SR_RDRF) {
432 return 1;
433 } else {
434 return 0;
435 }
436}
#define SPI_SR_RDRF
(SPI_SR) Receive Data Register Full

References Spi::SPI_SR, and SPI_SR_RDRF.

◆ spi_is_rx_ready()

uint32_t spi_is_rx_ready ( Spi * p_spi)
inlinestatic

Check if all receptions are ready.

Parameters
p_spiPointer to an SPI instance.
Returns
1 if the SPI Receiver is ready, otherwise 0.

Definition at line 445 of file spi.h.

446{
447 if ((p_spi->SPI_SR & (SPI_SR_RDRF | SPI_SR_TXEMPTY))
449 return 1;
450 } else {
451 return 0;
452 }
453}
#define SPI_SR_TXEMPTY
(SPI_SR) Transmission Registers Empty

References Spi::SPI_SR, SPI_SR_RDRF, and SPI_SR_TXEMPTY.

◆ spi_is_tx_empty()

uint32_t spi_is_tx_empty ( Spi * p_spi)
inlinestatic

Check if all transmissions are complete.

Parameters
p_spiPointer to an SPI instance.
Return values
1if transmissions are complete.
0if transmissions are not complete.

Definition at line 396 of file spi.h.

397{
398 if (p_spi->SPI_SR & SPI_SR_TXEMPTY) {
399 return 1;
400 } else {
401 return 0;
402 }
403}

References Spi::SPI_SR, and SPI_SR_TXEMPTY.

◆ spi_is_tx_ready()

uint32_t spi_is_tx_ready ( Spi * p_spi)
inlinestatic

Check if all transmissions are ready.

Parameters
p_spiPointer to an SPI instance.
Return values
1if transmissions are complete.
0if transmissions are not complete.

Definition at line 413 of file spi.h.

414{
415 if (p_spi->SPI_SR & SPI_SR_TDRE) {
416 return 1;
417 } else {
418 return 0;
419 }
420}
#define SPI_SR_TDRE
(SPI_SR) Transmit Data Register Empty

References Spi::SPI_SR, and SPI_SR_TDRE.

◆ spi_put()

void spi_put ( Spi * p_spi,
uint16_t data )
inlinestatic

Put one data to a SPI peripheral.

Parameters
p_spiBase address of the SPI instance.
dataThe data byte to be loaded

Definition at line 372 of file spi.h.

373{
374 p_spi->SPI_TDR = SPI_TDR_TD(data);
375}
#define SPI_TDR_TD(value)
__O uint32_t SPI_TDR
(Spi Offset: 0x0C) Transmit Data Register

References Spi::SPI_TDR, and SPI_TDR_TD.

◆ spi_read_interrupt_mask()

uint32_t spi_read_interrupt_mask ( Spi * p_spi)
inlinestatic

Read SPI interrupt mask.

Parameters
p_spiPointer to an SPI instance.
Returns
The interrupt mask value.

Definition at line 484 of file spi.h.

485{
486 return p_spi->SPI_IMR;
487}
__I uint32_t SPI_IMR
(Spi Offset: 0x1C) Interrupt Mask Register

References Spi::SPI_IMR.

◆ spi_read_status()

uint32_t spi_read_status ( Spi * p_spi)
inlinestatic

Read status register.

Parameters
p_spiPointer to an SPI instance.
Returns
SPI status register value.

Definition at line 344 of file spi.h.

345{
346 return p_spi->SPI_SR;
347}

References Spi::SPI_SR.

◆ spi_reset()

void spi_reset ( Spi * p_spi)
inlinestatic

Reset SPI and set it to Slave mode.

Parameters
p_spiPointer to an SPI instance.

Definition at line 88 of file spi.h.

89{
90 p_spi->SPI_CR = SPI_CR_SWRST;
91}
#define SPI_CR_SWRST
(SPI_CR) SPI Software Reset

References Spi::SPI_CR, and SPI_CR_SWRST.

◆ spi_set_fixed_peripheral_select()

void spi_set_fixed_peripheral_select ( Spi * p_spi)
inlinestatic

Set Fixed Peripheral Select.

Peripheral Chip Select is controlled by SPI_MR.

Parameters
p_spiPointer to an SPI instance.

Definition at line 180 of file spi.h.

181{
182 p_spi->SPI_MR &= (~SPI_MR_PS);
183}

References Spi::SPI_MR, and SPI_MR_PS.

◆ spi_set_lastxfer()

void spi_set_lastxfer ( Spi * p_spi)
inlinestatic

Issue a LASTXFER command.

The next transfer is the last transfer and after that CS is de-asserted.

Parameters
p_spiPointer to an SPI instance.

Definition at line 122 of file spi.h.

123{
124 p_spi->SPI_CR = SPI_CR_LASTXFER;
125}
#define SPI_CR_LASTXFER
(SPI_CR) Last Transfer

References Spi::SPI_CR, and SPI_CR_LASTXFER.

◆ spi_set_master_mode()

void spi_set_master_mode ( Spi * p_spi)
inlinestatic

Set SPI to Master mode.

Parameters
p_spiPointer to an SPI instance.

Definition at line 132 of file spi.h.

133{
134 p_spi->SPI_MR |= SPI_MR_MSTR;
135}

References Spi::SPI_MR, and SPI_MR_MSTR.

◆ spi_set_slave_mode()

void spi_set_slave_mode ( Spi * p_spi)
inlinestatic

Set SPI to Slave mode.

Parameters
p_spiPointer to an SPI instance.

Definition at line 142 of file spi.h.

143{
144 p_spi->SPI_MR &= (~SPI_MR_MSTR);
145}

References Spi::SPI_MR, and SPI_MR_MSTR.

◆ spi_set_variable_peripheral_select()

void spi_set_variable_peripheral_select ( Spi * p_spi)
inlinestatic

Set Variable Peripheral Select.

Peripheral Chip Select can be controlled by SPI_TDR.

Parameters
p_spiPointer to an SPI instance.

Definition at line 169 of file spi.h.

170{
171 p_spi->SPI_MR |= SPI_MR_PS;
172}

References Spi::SPI_MR, and SPI_MR_PS.