NRF SPI driver fix
This commit is contained in:
parent
de7bb19599
commit
8282de4134
|
@ -79,19 +79,6 @@
|
||||||
/* Driver data structures and types. */
|
/* Driver data structures and types. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Type of a structure representing an SPI driver.
|
|
||||||
*/
|
|
||||||
typedef struct SPIDriver SPIDriver;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief SPI notification callback type.
|
|
||||||
*
|
|
||||||
* @param[in] spip pointer to the @p SPIDriver object triggering the
|
|
||||||
* callback
|
|
||||||
*/
|
|
||||||
typedef void (*spicallback_t)(SPIDriver *spip);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SPI frequency
|
* @brief SPI frequency
|
||||||
*/
|
*/
|
||||||
|
@ -106,97 +93,36 @@ typedef enum {
|
||||||
} spifreq_t;
|
} spifreq_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Driver configuration structure.
|
* @brief Low level fields of the SPI configuration structure.
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
#define spi_lld_config_fields \
|
||||||
/**
|
/* @brief The frequency of the SPI peripheral */ \
|
||||||
* @brief Operation complete callback or @p NULL.
|
spifreq_t freq; \
|
||||||
*/
|
/* @brief The SCK pad */ \
|
||||||
spicallback_t end_cb;
|
uint16_t sckpad; \
|
||||||
/**
|
/* @brief The MOSI pad */ \
|
||||||
* @brief The frequency of the SPI peripheral
|
uint16_t mosipad; \
|
||||||
*/
|
/* @brief The MOSI pad */ \
|
||||||
spifreq_t freq;
|
uint16_t misopad; \
|
||||||
/**
|
/* @brief Shift out least significant bit first */ \
|
||||||
* @brief The SCK pad
|
uint8_t lsbfirst; \
|
||||||
*/
|
/* @brief SPI mode */ \
|
||||||
uint16_t sckpad;
|
uint8_t mode; \
|
||||||
/**
|
|
||||||
* @brief The MOSI pad
|
|
||||||
*/
|
|
||||||
uint16_t mosipad;
|
|
||||||
/**
|
|
||||||
* @brief The MOSI pad
|
|
||||||
*/
|
|
||||||
uint16_t misopad;
|
|
||||||
/* End of the mandatory fields.*/
|
|
||||||
/**
|
|
||||||
* @brief The chip select line pad number.
|
|
||||||
*/
|
|
||||||
uint16_t sspad;
|
|
||||||
/**
|
|
||||||
* @brief Shift out least significant bit first
|
|
||||||
*/
|
|
||||||
uint8_t lsbfirst;
|
|
||||||
/**
|
|
||||||
* @brief SPI mode
|
|
||||||
*/
|
|
||||||
uint8_t mode;
|
|
||||||
} SPIConfig;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Structure representing a SPI driver.
|
* @brief Low level fields of the SPI driver structure.
|
||||||
*/
|
|
||||||
struct SPIDriver {
|
|
||||||
/**
|
|
||||||
* @brief Driver state.
|
|
||||||
*/
|
|
||||||
spistate_t state;
|
|
||||||
/**
|
|
||||||
* @brief Current configuration data.
|
|
||||||
*/
|
|
||||||
const SPIConfig *config;
|
|
||||||
#if SPI_USE_WAIT || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief Waiting thread.
|
|
||||||
*/
|
|
||||||
thread_reference_t thread;
|
|
||||||
#endif /* SPI_USE_WAIT */
|
|
||||||
#if SPI_USE_MUTUAL_EXCLUSION || defined(__DOXYGEN__)
|
|
||||||
#if CH_CFG_USE_MUTEXES || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief Mutex protecting the bus.
|
|
||||||
*/
|
|
||||||
mutex_t mutex;
|
|
||||||
#elif CH_CFG_USE_SEMAPHORES
|
|
||||||
semaphore_t semaphore;
|
|
||||||
#endif
|
|
||||||
#endif /* SPI_USE_MUTUAL_EXCLUSION */
|
|
||||||
#if defined(SPI_DRIVER_EXT_FIELDS)
|
|
||||||
SPI_DRIVER_EXT_FIELDS
|
|
||||||
#endif
|
|
||||||
/* End of the mandatory fields.*/
|
|
||||||
/**
|
|
||||||
* @brief Pointer to the SPI port.
|
|
||||||
*/
|
|
||||||
NRF_SPI_Type *port;
|
|
||||||
/**
|
|
||||||
* @brief Number of bytes yet to be received.
|
|
||||||
*/
|
|
||||||
uint32_t rxcnt;
|
|
||||||
/**
|
|
||||||
* @brief Receive pointer or @p NULL.
|
|
||||||
*/
|
|
||||||
void *rxptr;
|
|
||||||
/**
|
|
||||||
* @brief Number of bytes yet to be transmitted.
|
|
||||||
*/
|
|
||||||
uint32_t txcnt;
|
|
||||||
/**
|
|
||||||
* @brief Transmit pointer or @p NULL.
|
|
||||||
*/
|
*/
|
||||||
|
#define spi_lld_driver_fields \
|
||||||
|
/* @brief Pointer to the SPI port. */ \
|
||||||
|
NRF_SPI_Type *port; \
|
||||||
|
/* @brief Number of bytes yet to be received. */ \
|
||||||
|
uint32_t rxcnt; \
|
||||||
|
/* @brief Receive pointer or @p NULL. */ \
|
||||||
|
void *rxptr; \
|
||||||
|
/* @brief Number of bytes yet to be transmitted. */ \
|
||||||
|
uint32_t txcnt; \
|
||||||
|
/* @brief Transmit pointer or @p NULL. */ \
|
||||||
const void *txptr;
|
const void *txptr;
|
||||||
};
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Driver macros. */
|
/* Driver macros. */
|
||||||
|
|
Loading…
Reference in New Issue