45 #include <hal/nrf_spim.h> 77 #define SPI_SYNC_FIFO_DEPTH 4 88 SPI_TRANSFER_DEFAULT = 0,
89 SPI_TRANSFER_CAN_SLEEP = (1 << 0),
95 #define SPI_CS_UNINITIALIZED ((struct spi_cs_t) { .CsUnInitialized = 1 }) 225 extern void SpiWrite(
const struct spi_t *Spi, uint8_t DataToSend);
255 const void *
TxBuffer, uint32_t TxLength,
273 const void *
TxBuffer, uint32_t TxLength,
351 SpiCsWait(
const struct spi_t *Spi,
struct spi_cs_t ChipSelect, uint32_t Baudrate,
struct work_t *Work)
404 static inline uint8_t SpiReadFast(
const struct spi_t *Spi)
406 register NRF_SPI_Type *Usart = Spi->Usart;
408 while (Usart->EVENTS_READY == 0);
409 Usart->EVENTS_READY = 0;
410 return nrf_spi_rxd_get(Usart);
423 static inline void SpiWriteFast(
const struct spi_t *Spi, uint8_t DataToSend)
425 register NRF_SPI_Type *Usart = Spi->Usart;
427 nrf_spi_txd_set(Usart, DataToSend);
442 static inline uint8_t SpiWriteReadFast(
const struct spi_t *Spi, uint8_t DataToSend)
444 register NRF_SPI_Type *Usart = Spi->Usart;
446 nrf_spi_txd_set(Usart, DataToSend);
448 while (Usart->EVENTS_READY == 0);
449 Usart->EVENTS_READY = 0;
450 return nrf_spi_rxd_get(Usart);
457 #endif //DRIVER_SPI_H
uint8_t SpiRead(const struct spi_t *Spi)
Name: SpiRead WARNING: SpiWrite() must be called prior to this function. Waits for data received in R...
void SpiCsRegisterWait(const struct spi_t *Spi, struct work_t *Work)
Name: SpiCsRegisterWait Registers a work to be executed when the SPI block becomes available...
void SpiInit(const struct spi_t *Spi)
Name: SpiInit Initializes SPI based on selected device. Master operation: Baudrate is limited to 0...
struct spi_state_t * State
void SpiDisable(const struct spi_t *Spi)
Name: SpiDisable Disables SPI based on selected device. Called from main program level.
void SpiCsDisable(const struct spi_t *Spi, struct spi_cs_t ChipSelect)
Name: SpiCsDisable Waits for any ongoing transmission to end, flush RX FIFO, disables chip select pin...
Driver for port initialisazion and IO functions for nRF52 uC.
void SpiFlush(const struct spi_t *Spi)
Name: SpiFlush WARNING: SpiCsEnable() must be called prior to this function. Waits for any previously...
void SpiTransferSync(const struct spi_t *Spi, const void *TxBuffer, uint32_t TxLength, void *RxBuffer, uint32_t RxLength, uint32_t Flags)
Name: SpiTransferSync WARNING: SpiCsEnable() must be called prior to this function. Does synchronous data transfer (both transmit and receive).
static bool __attribute__((warn_unused_result)) SpiCsWait(const struct spi_t *Spi
Name: SpiCsWait Enables peripheral clock for USART, updates SPI setting according to ChipSelect...
struct data_buffer_t RxBuffer
spi_async_callback_t Callback
static bool SpiIsBusy(const struct spi_t *Spi)
Name: SpiIsBusy WARNING: SpiCsEnable() must be called prior to this function. Testes if transmitter i...
void SpiInterruptHandler(const struct spi_t *Spi)
Name: SpiInterruptHandler SPI interrupt handler Called from board.c at hardware interrupt context...
The code implements Dummy Headed Doubly Linked Circularlist (DHDLC) primitive.
void(* spi_async_callback_t)(const struct spi_t *Spi, void *CallbackData)
uint8_t Errata58_GPIOTE_ID
Header file for the EVE clock management framework.
struct spi_cs_t ChipSelect
uint8_t SpiWriteRead(const struct spi_t *Spi, uint8_t DataToSend)
Name: SpiWriteRead WARNING: SpiCsEnable() must be called prior to this function. Waits for empty tran...
void SpiWrite(const struct spi_t *Spi, uint8_t DataToSend)
Name: SpiWrite WARNING: SpiCsEnable() must be called prior to this function. Waits for empty transmit...
void SpiCsInit(struct spi_cs_t ChipSelect, uint32_t MaxBaudrate)
Name: SpiCsInit Initializes SPI chip select instance. Called once from main program level before firs...
static bool SpiCsIsActive(const struct spi_t *Spi, struct spi_cs_t ChipSelect)
Name: SpiCsIsActive Checks that the given chip select is active.
bool SpiCsEnable(const struct spi_t *Spi, struct spi_cs_t ChipSelect, uint32_t Baudrate)
Name: SpiCsEnable Enables peripheral clock for USART, updates SPI setting according to ChipSelect...
#define SPI_SYNC_FIFO_DEPTH
struct data_buffer_t TxBuffer
void SpiTransferAsync(const struct spi_t *Spi, const void *TxBuffer, uint32_t TxLength, void *RxBuffer, uint32_t RxLength, spi_async_callback_t Callback, void *CallbackData)
Name: SpiTransferAsync WARNING: SpiCsEnable() must be called prior to this function. Starts asynchronous data transfer (both transmit and receive).