 |
Arduino Core for STM32
1.0
|
Go to the documentation of this file.
15 #ifndef _SPI_H_INCLUDED
16 #define _SPI_H_INCLUDED
21 #if defined(STM32F103xB)
24 #define IS_SPI_INSTANCE_ON_APB1(_instance_) ((_instance_) == SPI2)
25 #define IS_SPI_INSTANCE_ON_APB2(_instance_) ((_instance_) == SPI1)
27 #elif defined(STM32F031x6) || defined(STM32F070xB) || defined(STM32F070x6) || defined(STM32F030x6)
31 #define IS_SPI_INSTANCE_ON_APB1(_instance_) ((_instance_) == SPI1)
33 #elif defined(STM32L031xx)
37 #define IS_SPI_INSTANCE_ON_APB2(_instance_) ((_instance_) == SPI1)
39 #elif defined(STM32L432xx)
42 #define IS_SPI_INSTANCE_ON_APB1(_instance_) ((_instance_) == SPI3)
43 #define IS_SPI_INSTANCE_ON_APB2(_instance_) ((_instance_) == SPI1)
46 #error "Definitions for your MCU are not defined."
49 #if defined(HAL_SPI_MODULE_ENABLED) || defined(DOXYGEN_FORCED)
55 #define SPI_HAS_TRANSACTION 1
61 #define SPI_CLOCK_DIV2 SPI_BAUDRATEPRESCALER_2
62 #define SPI_CLOCK_DIV4 SPI_BAUDRATEPRESCALER_4
63 #define SPI_CLOCK_DIV8 SPI_BAUDRATEPRESCALER_8
64 #define SPI_CLOCK_DIV16 SPI_BAUDRATEPRESCALER_16
65 #define SPI_CLOCK_DIV32 SPI_BAUDRATEPRESCALER_32
66 #define SPI_CLOCK_DIV64 SPI_BAUDRATEPRESCALER_64
67 #define SPI_CLOCK_DIV128 SPI_BAUDRATEPRESCALER_128
68 #define SPI_CLOCK_DIV256 SPI_BAUDRATEPRESCALER_256
98 #define SPI_MASTER SPI_MODE_MASTER
99 #define SPI_SLAVE SPI_MODE_SLAVE
143 #ifdef HAL_SPI_ERROR_FRE
145 SPI_ERROR_FRE = HAL_SPI_ERROR_FRE,
244 bool begin(SPI_InitTypeDef &initStruct);
272 return _hspi->State == HAL_SPI_STATE_BUSY_TX ||
_hspi->State == HAL_SPI_STATE_BUSY_TX_RX;
280 return _hspi->State == HAL_SPI_STATE_BUSY_RX ||
_hspi->State == HAL_SPI_STATE_BUSY_TX_RX;
288 return (
_hspi->State == HAL_SPI_STATE_BUSY_TX_RX);
296 return _hspi->State == HAL_SPI_STATE_BUSY_TX ||
_hspi->State == HAL_SPI_STATE_BUSY_TX_RX ||
_hspi->State == HAL_SPI_STATE_BUSY_RX;
304 return (&
_hspi != NULL) && (IS_SPI_ALL_INSTANCE(
_hspi->Instance));
394 bool setHwCS(
bool HardwareCS,
bool OutputCS =
true);
636 virtual uint16_t
transfer(uint16_t data,
bool lastByte =
false);
645 virtual uint16_t
transfer16(uint16_t data,
bool lastByte =
false);
654 virtual uint32_t
transfer32(uint32_t data,
bool lastByte =
false);
665 virtual bool transfer(
void *buf, uint16_t count,
bool lastByte =
false);
674 virtual bool write(uint16_t data,
bool lastByte =
false);
683 virtual bool write16(uint16_t data,
bool lastByte =
false);
692 virtual bool write32(uint32_t data,
bool lastByte =
false);
701 virtual uint16_t
receive(
bool lastByte =
false);
710 virtual uint16_t
receive16(
bool lastByte =
false);
719 virtual uint32_t
receive32(
bool lastByte =
false);
730 virtual bool writeBytes(
const uint8_t * data, uint32_t size,
bool lastByte =
false);
754 virtual bool transferBytes(
const uint8_t * out, uint8_t * in, uint32_t size,
bool lastByte =
false);
778 virtual bool receiveBytes(uint8_t * data, uint32_t size,
bool lastByte =
false);
834 operator bool()
const
836 return (&
_hspi != NULL) && (IS_SPI_ALL_INSTANCE(
_hspi->Instance));
844 return __HAL_SPI_GET_FLAG(
_hspi, SPI_FLAG_RXNE);
853 return _hspi->ErrorCode != HAL_SPI_ERROR_NONE;
871 _hspi->ErrorCode = (
_hspi->ErrorCode & (~clearMask));
989 static uint32_t
getSPIIndex(SPI_TypeDef* instance);
1051 __HAL_SPI_CLEAR_CRCERRFLAG(
_hspi);
1058 __HAL_SPI_CLEAR_OVRFLAG(
_hspi);
1065 __HAL_SPI_CLEAR_MODFFLAG(
_hspi);
1072 #ifdef __HAL_SPI_CLEAR_FREFLAG
1073 __HAL_SPI_CLEAR_FREFLAG(
_hspi);
1100 #if defined(STM32L432xx) || defined(DOXYGEN_FORCED)
1198 uint16_t
transfer(uint16_t data,
bool lastByte =
false)
override;
1208 uint16_t
transfer16(uint16_t data,
bool lastByte =
false)
override;
1218 uint32_t
transfer32(uint32_t data,
bool lastByte =
false)
override;
1228 bool write(uint16_t data,
bool lastByte =
false)
override;
1238 bool write16(uint16_t data,
bool lastByte =
false)
override;
1248 bool write32(uint32_t data,
bool lastByte =
false)
override;
1258 uint16_t
receive(
bool lastByte =
false)
override;
1268 uint16_t
receive16(
bool lastByte =
false)
override;
1278 uint32_t
receive32(
bool lastByte =
false)
override;
1291 bool transferBytes(
const uint8_t * out, uint8_t * in, uint32_t size,
bool lastByte =
false)
override;
1303 bool writeBytes(
const uint8_t * data, uint32_t size,
bool lastByte =
false)
override;
1315 bool receiveBytes(uint8_t * data, uint32_t size,
bool lastByte =
false)
override;
1327 bool transfer(
void *buf, uint16_t count,
bool lastByte =
false)
override;
1352 bool transactionEnabled =
false;
1358 bool receiveEnabled =
false;
1364 bool transmitEnabled =
false;
1369 bool receiveUsed =
false;
1374 bool transmitUsed =
false;
1376 #if (USE_SPI_CRC != 0U)
1377 bool SPI_isMasterAndNSSIsEnabled =
false;
1380 HAL_StatusTypeDef SPI_EndRxTxTransaction(uint32_t Timeout, uint32_t Tickstart);
1381 HAL_StatusTypeDef SPI_EndRxTransaction(uint32_t Timeout, uint32_t Tickstart);
1382 HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(uint32_t Fifo, uint32_t State, uint32_t Timeout, uint32_t Tickstart);
1383 HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(uint32_t Flag, FlagStatus State, uint32_t Timeout, uint32_t Tickstart);
1386 #endif // defined(STM32L432xx) || defined(DOXYGEN_FORCED)
1388 #endif //defined(HAL_SPI_MODULE_ENABLED) || defined(DOXYGEN_FORCED)
1389 #endif //_SPI_H_INCLUDED
void setReceiveDoneCallback(void(*ReceiveDoneCallback_)())
Sets callback function, that will be called when all data using receiveBytesNonBlocking() method were...
Definition: HardwareSPI.h:907
void(* WriteHalfCallback)()
Definition: HardwareSPI.h:1037
bool available()
Checks if any data are available in RX FIFO buffer.
Definition: HardwareSPI.h:843
uint32_t timeout
Timeout interval in ms.
Definition: HardwareSPI.h:1027
virtual uint32_t receive32(bool lastByte=false)
Receives data from SPI periphery.
Definition: HardwareSPI.cpp:943
static void handleWriteDoneCallback(SPI_TypeDef *instance)
Handles WriteDone callback function.
Definition: HardwareSPI.cpp:1151
uint32_t getFrequency()
Calculates SPI frequency from APB frequency and Clock Divider.
Definition: HardwareSPI.cpp:516
uint32_t getCRCPolynomial()
Gets CRC polynomial.
Definition: HardwareSPI.cpp:737
virtual bool receiveBytesNonBlocking(uint8_t *data, uint32_t size, bool lastByte=false)
Receives data from SPI periphery in non-blocking mode using DMA or IT (interrupt) mode.
Definition: HardwareSPI.cpp:1091
bool isHwCS()
Gets, if Chip Select is handled by hardware.
Definition: HardwareSPI.cpp:338
static uint32_t getSPIIndex(SPI_TypeDef *instance)
Gets SPI instance index.
Definition: HardwareSPI.cpp:1313
SPI_HandleTypeDef & getHAL_SPI_Struct()
Returns SPI structure, that is used for handling SPI.
Definition: HardwareSPI.h:1007
const uint8_t SPI_MODE0
CPOL: 0 CPHA: 0.
Definition: HardwareSPI.h:86
virtual SPI_Status beginTransaction(SPISettings settings)
Sets some settings to SPI periphery before transaction.
Definition: HardwareSPI.cpp:348
virtual uint16_t transfer(uint16_t data, bool lastByte=false)
SPI transfer is based on a simultaneous send and receive data.
Definition: HardwareSPI.cpp:755
virtual bool write16(uint16_t data, bool lastByte=false)
Sends data using SPI periphery.
Definition: HardwareSPI.cpp:865
bool begin()
Initialize SPI periphery and it's pins.
Definition: HardwareSPI.cpp:34
static void handleTransferDoneCallback(SPI_TypeDef *instance)
Handles TransferDone callback function.
Definition: HardwareSPI.cpp:1161
uint32_t getSPIClockFreq(void)
Gets periphery SPI Clock Frequency in Hz.
Definition: HardwareSPI.cpp:454
bool setClockDivider(uint32_t clockDiv)
Sets SPI clock divider.
Definition: HardwareSPI.cpp:530
This class is for handling SPI periphery, but is more optimized for speed same as arduino SPI class.
Definition: HardwareSPI.h:1133
static void handleWriteHalfCallback(SPI_TypeDef *instance)
Handles WriteHalf callback function.
Definition: HardwareSPI.cpp:1182
SPI_ErrorCode
Enumerations of SPI Hardware error codes.
Definition: HardwareSPI.h:134
bool write32(uint32_t data, bool lastByte=false) override
Sends data using SPI periphery.
void(* ReceiveDoneCallback)()
Definition: HardwareSPI.h:1036
SPI_ErrorCode getError(void)
Gets error, that happens during begin, end or transaction.
Definition: HardwareSPI.h:861
bool receiveBytes(uint8_t *data, uint32_t size, bool lastByte=false) override
Receives data from SPI periphery in blocking mode.
bool write(uint16_t data, bool lastByte=false) override
Sends data using SPI periphery.
static void handleReceiveDoneCallback(SPI_TypeDef *instance)
Handles ReceiveDone callback function.
Definition: HardwareSPI.cpp:1172
bool isSending()
Checks if data are sending or transferring right now using DMA or IT and if periphery is busy.
Definition: HardwareSPI.h:271
bool flush()
Waits until DMA or IT (nonblocking transaction methods) are timed out and then aborts them.
Definition: HardwareSPI.cpp:1136
const uint8_t SPI_MODE1
CPOL: 0 CPHA: 1.
Definition: HardwareSPI.h:87
Class, that holds SPI settings.
Definition: HardwareSPI.h:181
static void handleReceiveHalfCallback(SPI_TypeDef *instance)
Handles ReceiveHalf callback function.
Definition: HardwareSPI.cpp:1202
virtual SPI_Status endTransaction(void)
This method don't have to be called at the end of the transaction when using HardwareSPI class,...
Definition: HardwareSPI.cpp:366
SPISettings oldSettings
Old SPI setting - to speed up begin transaction.
Definition: HardwareSPI.h:1032
virtual uint32_t transfer32(uint32_t data, bool lastByte=false)
SPI transfer is based on a simultaneous send and receive data.
Definition: HardwareSPI.cpp:797
void setTimeout(uint32_t Timeout)
Sets timeout in milliseconds.
Definition: HardwareSPI.cpp:747
bool enableCRC(bool enable)
Enables CRC.
Definition: HardwareSPI.cpp:655
SPI_Status
Enumerations of SPI status codes.
Definition: HardwareSPI.h:110
SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode)
Definition: HardwareSPI.h:184
uint8_t _dataMode
Definition: HardwareSPI.h:187
@ SPI_ERROR_MODF
MODF (mode fault) error.
Definition: HardwareSPI.h:138
virtual uint16_t receive16(bool lastByte=false)
Receives data from SPI periphery.
Definition: HardwareSPI.cpp:924
virtual bool transferBytes(const uint8_t *out, uint8_t *in, uint32_t size, bool lastByte=false)
Transfers data using SPI periphery in blocking mode, it is sending and receiving data simultaneously.
Definition: HardwareSPI.cpp:971
virtual bool write(uint16_t data, bool lastByte=false)
Sends data using SPI periphery.
Definition: HardwareSPI.cpp:849
void flushRX()
Clears RX FIFO buffer.
Definition: HardwareSPI.cpp:1128
virtual bool receiveBytes(uint8_t *data, uint32_t size, bool lastByte=false)
Receives data from SPI periphery in blocking mode.
Definition: HardwareSPI.cpp:1075
bool hasError(void)
Checks if instance has error.
Definition: HardwareSPI.h:851
SPI_Status endTransaction() override
Disables SPI periphery and checks or sends CRC if enabled.
bool write16(uint16_t data, bool lastByte=false) override
Sends data using SPI periphery.
bool isRxEnabled()
Checks, if SPI periphery can receive data.
Definition: HardwareSPI.cpp:443
bool setFrequency(uint32_t freq)
Calculates SPI clock divider from frequency and sets it.
Definition: HardwareSPI.cpp:479
void(* ErrorCallback)(SPI_ErrorCode)
Definition: HardwareSPI.h:1040
uint32_t _clock
Definition: HardwareSPI.h:185
bool isTImodeEnabled()
Gets if TI mode is enabled.
Definition: HardwareSPI.cpp:646
bool setMode(uint32_t mode)
Sets Master or Slave mode.
Definition: HardwareSPI.cpp:297
void setWriteHalfCallback(void(*WriteHalfCallback_)())
Sets callback function, that will be called when half of data using writeBytesNonBlocking() method we...
Definition: HardwareSPI.h:913
uint16_t receive(bool lastByte=false) override
Receives data from SPI periphery.
bool writeBytes(const uint8_t *data, uint32_t size, bool lastByte=false) override
Sends data using SPI periphery in blocking mode.
uint32_t receive32(bool lastByte=false) override
Receives data from SPI periphery.
bool isCRCenabled()
Gets if CRC is enabled.
Definition: HardwareSPI.cpp:671
bool isTxEnabled()
Checks, if SPI periphery can transmit data.
Definition: HardwareSPI.cpp:448
void(* WriteDoneCallback)()
Definition: HardwareSPI.h:1034
virtual bool writeBytes(const uint8_t *data, uint32_t size, bool lastByte=false)
Sends data using SPI periphery in blocking mode.
Definition: HardwareSPI.cpp:1023
bool setHwCS(bool HardwareCS, bool OutputCS=true)
Sets if Chip Select pin is handled by hardware or by software (calling digitalWrite()).
Definition: HardwareSPI.cpp:327
static HardwareSPI ** getSPIInstances()
Gets array of all created SPI instances (just from this class, not SPI structure).
@ SPI_TIMEOUT
SPI timeout was reached.
Definition: HardwareSPI.h:118
@ SPI_ERR
Error, that happened during ending of transaction.
Definition: HardwareSPI.h:114
static void handleErrorCallback(SPI_TypeDef *instance)
Handles Error callback function.
Definition: HardwareSPI.cpp:1212
@ SPI_ERROR_NONE
No error.
Definition: HardwareSPI.h:136
virtual bool writeBytesNonBlocking(const uint8_t *data, uint32_t size, bool lastByte=false)
Sends data using SPI periphery using DMA or IT (interrupt) mode.
Definition: HardwareSPI.cpp:1039
@ SPI_OK
Transaction was without known error.
Definition: HardwareSPI.h:112
bool isFullDuplex()
Check, if full duplex mode is enabled for this periphery.
Definition: HardwareSPI.cpp:438
HardwareSPI(SPI_HandleTypeDef &hspi)
Constructor.
Definition: HardwareSPI.cpp:21
@ SPI_ERROR_DMA
DMA transfer error.
Definition: HardwareSPI.h:148
void clearFREFlag()
Clears FRE flag from interrupt register.
Definition: HardwareSPI.h:1071
static HardwareSPI * instances[]
Array of all created SPI instances (just from this class, not SPI structure).
Definition: HardwareSPI.h:1091
uint32_t getMode()
Gets, if periphery mode is Master or Slave.
Definition: HardwareSPI.cpp:309
void removeThisFromInstArr()
Removes this instance from instances array.
Definition: HardwareSPI.cpp:1306
uint32_t transfer32(uint32_t data, bool lastByte=false) override
SPI transfer is based on a simultaneous send and receive data.
@ SPI_CRC_DATAWIDTH
CRC size will be automatically aligned to data width, but data width have to be set to 8 or 16.
Definition: HardwareSPI.h:165
bool enableTImode(bool enable)
Enables or disabled TI mode.
Definition: HardwareSPI.cpp:624
bool isDMAconnectedToTx(void)
Checks if DMA channel is connected to SPI Tx and can be used for data writing/transferring.
Definition: HardwareSPI.cpp:289
bool isHwOutputCS()
Gets, if Chip Select handled by hardware is set to output mode.
Definition: HardwareSPI.cpp:343
bool isReceiving()
Checks if data are receiving or transferring right now using DMA or IT and if periphery is busy.
Definition: HardwareSPI.h:279
static uint8_t availableSPIsCount
Available SPI instances count.
Definition: HardwareSPI.h:1096
bool end()
Deinitialization and disabling SPI periphery, it can be used for "sleep mode".
Definition: HardwareSPI.cpp:52
SPI_CRCLength getCRClength()
Gets CRC length.
Definition: HardwareSPI.cpp:714
bool isTransacting()
Checks if data are sending, receiving, transferring right now using DMA or IT and if periphery is bus...
Definition: HardwareSPI.h:295
uint8_t getDataMode()
Gets, what data mode is set.
Definition: HardwareSPI.cpp:399
bool isTransfering()
Checks if data are transferring right now using DMA or IT and if periphery is busy.
Definition: HardwareSPI.h:287
This class is for handling SPI periphery.
Definition: HardwareSPI.h:220
virtual uint16_t transfer16(uint16_t data, bool lastByte=false)
SPI transfer is based on a simultaneous send and receive data.
Definition: HardwareSPI.cpp:776
bool disconnectDMAfromTx()
Disconnects DMA channel from SPI Tx.
Definition: HardwareSPI.cpp:267
bool setDataBits(uint16_t bits)
Sets SPI data width in bits.
Definition: HardwareSPI.cpp:550
@ SPI_BUSY_ERR
SPI periphery is busy.
Definition: HardwareSPI.h:116
uint16_t receive16(bool lastByte=false) override
Receives data from SPI periphery.
const uint8_t SPI_MODE2
CPOL: 1 CPHA: 0.
Definition: HardwareSPI.h:88
bool transferBytes(const uint8_t *out, uint8_t *in, uint32_t size, bool lastByte=false) override
Transfers data using SPI periphery in blocking mode, it is sending and receiving data simultaneously.
@ SPI_CRC_ERR
SPI CRC calculation error (see enableCRC())
Definition: HardwareSPI.h:124
static uint8_t getAvailableSPIsCount()
Gets all available SPIs instances count.
uint8_t _bitOrder
Definition: HardwareSPI.h:186
void setTransferDoneCallback(void(*TransferDoneCallback_)())
Sets callback function, that will be called when all data using transferBytesNonBlocking() method wer...
Definition: HardwareSPI.h:901
void setErrorCallback(void(*ErrorCallback_)(SPI_ErrorCode))
Sets callback function, that will be called when an error has occurred.
Definition: HardwareSPI.h:931
SPI_CRCLength
Enumerations of SPI CRC lengths.
Definition: HardwareSPI.h:160
bool isDMAconnectedToRx(void)
Checks if DMA channel is connected to SPI Rx and can be used for data receiving/transferring.
Definition: HardwareSPI.cpp:280
bool connectDMAtoTx(DMA_HandleTypeDef &DMA_handle)
Use this method to connect DMA channel to SPI Tx programmatically.
Definition: HardwareSPI.cpp:163
@ SPI_ERROR_FLAG
Error on RXNE/TXE/BSY/FTLVL/FRLVL Flag.
Definition: HardwareSPI.h:150
void clearCRCErrorFlag()
Clears CRC error flag from interrupt register.
Definition: HardwareSPI.h:1050
SPI_Status transactionError
Last transaction status.
Definition: HardwareSPI.h:1045
bool setBitOrder(uint8_t bitOrder)
Sets bit order to LSB or MSB.
Definition: HardwareSPI.cpp:415
bool setCRCPolynomial(uint32_t polynomial)
Sets CRC polynomial.
Definition: HardwareSPI.cpp:723
bool instanceExists(void)
Checks if SPI instance exists.
Definition: HardwareSPI.h:303
void setReceiveHalfCallback(void(*ReceiveHalfCallback_)())
Sets callback function, that will be called when half of data using receiveBytesNonBlocking() method ...
Definition: HardwareSPI.h:925
void addThisToInstArr()
Writes new class instance to array of all timer instances.
Definition: HardwareSPI.cpp:1300
This file contains class, that provides hardware CRC calculation.
virtual SPI_Status lastTransactionStatus()
Checks last transaction status.
Definition: HardwareSPI.h:878
virtual uint16_t receive(bool lastByte=false)
Receives data from SPI periphery.
Definition: HardwareSPI.cpp:908
SPISettings()
Definition: HardwareSPI.h:183
bool setDataMode(uint8_t dataMode)
Sets data mode.
Definition: HardwareSPI.cpp:372
virtual bool write32(uint32_t data, bool lastByte=false)
Sends data using SPI periphery.
Definition: HardwareSPI.cpp:884
void clearMODFlag()
Clears MOD flag from interrupt register.
Definition: HardwareSPI.h:1064
void(* TransferDoneCallback)()
Definition: HardwareSPI.h:1035
@ SPI_CRC_2BYTES
CRC will be 16 bits wide.
Definition: HardwareSPI.h:169
@ SPI_CRC_1BYTE
CRC will be 8 bits wide.
Definition: HardwareSPI.h:167
#define MSBFIRST
Most Significant Bit First.
Definition: wirish.h:1012
SPI_HandleTypeDef * _hspi
Pointer to SPI handle structure.
Definition: HardwareSPI.h:1017
uint16_t getDataBits()
Gets set data width in bits.
Definition: HardwareSPI.cpp:613
bool connectDMAtoRx(DMA_HandleTypeDef &DMA_handle)
Use this method to connect DMA channel to SPI Rx programmatically.
Definition: HardwareSPI.cpp:75
void(* ReceiveHalfCallback)()
Definition: HardwareSPI.h:1039
@ SPI_ERROR_OVR
OVR (overrun) error.
Definition: HardwareSPI.h:142
bool setCRClength(SPI_CRCLength length)
Sets CRC length.
Definition: HardwareSPI.cpp:676
static void handleTransferHalfCallback(SPI_TypeDef *instance)
Handles TransferHalf callback function.
Definition: HardwareSPI.cpp:1192
bool disconnectDMAfromRx()
Disconnects DMA channel from SPI Rx.
Definition: HardwareSPI.cpp:252
void setWriteDoneCallback(void(*WriteDoneCallback_)())
Sets callback function, that will be called when all data using writeBytesNonBlocking() method were s...
Definition: HardwareSPI.h:895
void clearError(uint32_t clearMask=0xFFFFFFFFUL)
Gets error, that happens during begin, end or transaction.
Definition: HardwareSPI.h:870
uint32_t getClockDivider()
Gets clock divider.
Definition: HardwareSPI.cpp:545
@ SPI_ERROR_ABORT
Error during SPI Abort procedure.
Definition: HardwareSPI.h:152
void(* TransferHalfCallback)()
Definition: HardwareSPI.h:1038
void clearOVRErrorFlag()
Clears OVR error flag from interrupt register.
Definition: HardwareSPI.h:1057
HardwareSPI_O(SPI_HandleTypeDef &hspi)
Constructor.
Definition: HardwareSPI.h:1138
void setTransferHalfCallback(void(*TransferHalfCallback_)())
Sets callback function, that will be called when half of data using transferBytesNonBlocking() method...
Definition: HardwareSPI.h:919
uint32_t _startMillis
Start time of transferring/receiving/sending data non-blocking.
Definition: HardwareSPI.h:1022
uint8_t getBitOrder()
Gets, if bit order is set to LSB or MSB.
Definition: HardwareSPI.cpp:430
~HardwareSPI()
Destructor.
Definition: HardwareSPI.cpp:25
SPI_Status beginTransaction(SPISettings settings) override
Enables SPI periphery and sets some settings.
virtual bool transferBytesNonBlocking(const uint8_t *out, uint8_t *in, uint32_t size, bool lastByte=false)
Transfers data using SPI periphery using DMA or IT (interrupt) mode, it is sending and receiving data...
Definition: HardwareSPI.cpp:987
const uint8_t SPI_MODE3
CPOL: 1 CPHA: 1.
Definition: HardwareSPI.h:89
uint16_t transfer16(uint16_t data, bool lastByte=false) override
SPI transfer is based on a simultaneous send and receive data.
uint32_t getTimeout()
Gets timeout in milliseconds.
Definition: HardwareSPI.cpp:751
@ SPI_GEN_ERR
SPI generic error.
Definition: HardwareSPI.h:120
uint16_t transfer(uint16_t data, bool lastByte=false) override
SPI transfer is based on a simultaneous send and receive data.
@ SPI_ERR_LOCKED
SPI periphery is locked already.
Definition: HardwareSPI.h:122
@ SPI_ERROR_CRC
CRC error.
Definition: HardwareSPI.h:140