Kinetis SPI driver
This commit is contained in:
parent
638024b549
commit
bc65ee4513
|
@ -105,11 +105,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.
|
* @brief SPI notification callback type.
|
||||||
*
|
*
|
||||||
|
@ -119,77 +114,23 @@ typedef struct SPIDriver SPIDriver;
|
||||||
typedef void (*spicallback_t)(SPIDriver *spip);
|
typedef void (*spicallback_t)(SPIDriver *spip);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Driver configuration structure.
|
* @brief Low level fields of the SPI configuration structure.
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
#define spi_lld_config_fields \
|
||||||
/**
|
/* @brief SPI initialization data. */ \
|
||||||
* @brief Operation complete callback or @p NULL.
|
|
||||||
*/
|
|
||||||
spicallback_t end_cb;
|
|
||||||
/* End of the mandatory fields.*/
|
|
||||||
/**
|
|
||||||
* @brief The chip select line port - when not using pcs.
|
|
||||||
*/
|
|
||||||
ioportid_t ssport;
|
|
||||||
/**
|
|
||||||
* @brief The chip select line pad number - when not using pcs.
|
|
||||||
*/
|
|
||||||
uint16_t sspad;
|
|
||||||
/**
|
|
||||||
* @brief SPI initialization data.
|
|
||||||
*/
|
|
||||||
uint32_t tar0;
|
uint32_t tar0;
|
||||||
} SPIConfig;
|
|
||||||
|
|
||||||
/**
|
#define spi_lld_driver_fields \
|
||||||
* @brief Structure representing a SPI driver.
|
/* @brief Pointer to the SPIx registers block. */ \
|
||||||
*/
|
SPI_TypeDef *spi; \
|
||||||
struct SPIDriver {
|
/* @brief Number of bytes/words of data to transfer. */ \
|
||||||
/**
|
size_t count; \
|
||||||
* @brief Driver state.
|
/* @brief Word size in bytes. */ \
|
||||||
*/
|
size_t word_size; \
|
||||||
spistate_t state;
|
/* @brief Pointer to the buffer with data to send. */ \
|
||||||
/**
|
const uint8_t *txbuf; \
|
||||||
* @brief Current configuration data.
|
/* @brief Pointer to the buffer to put received 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__)
|
|
||||||
/**
|
|
||||||
* @brief Mutex protecting the bus.
|
|
||||||
*/
|
|
||||||
mutex_t mutex;
|
|
||||||
#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 SPIx registers block.
|
|
||||||
*/
|
|
||||||
SPI_TypeDef *spi;
|
|
||||||
/**
|
|
||||||
* @brief Number of bytes/words of data to transfer.
|
|
||||||
*/
|
|
||||||
size_t count;
|
|
||||||
/**
|
|
||||||
* @brief Word size in bytes.
|
|
||||||
*/
|
|
||||||
size_t word_size;
|
|
||||||
/**
|
|
||||||
* @brief Pointer to the buffer with data to send.
|
|
||||||
*/
|
|
||||||
const uint8_t *txbuf;
|
|
||||||
/**
|
|
||||||
* @brief Pointer to the buffer to put received data.
|
|
||||||
*/
|
|
||||||
uint8_t *rxbuf;
|
uint8_t *rxbuf;
|
||||||
};
|
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Driver macros. */
|
/* Driver macros. */
|
||||||
|
|
Loading…
Reference in New Issue