|
- /*!
- * \file spi-board.h
- *
- * \brief SPI driver implementation
- *
- * \copyright Revised BSD License, see section \ref LICENSE.
- *
- * \code
- * ______ _
- * / _____) _ | |
- * ( (____ _____ ____ _| |_ _____ ____| |__
- * \____ \| ___ | (_ _) ___ |/ ___) _ \
- * _____) ) ____| | | || |_| ____( (___| | | |
- * (______/|_____)_|_|_| \__)_____)\____)_| |_|
- * (C)2013-2017 Semtech
- *
- * \endcode
- *
- * \author Miguel Luis ( Semtech )
- *
- * \author Gregory Cristian ( Semtech )
- */
- #ifndef __SPI_H__
- #define __SPI_H__
-
- #ifdef __cplusplus
- extern "C"
- {
- #endif
-
- #include "gpio.h"
-
- /*!
- * SPI peripheral ID
- */
- typedef enum
- {
- SPI_1,
- SPI_2,
- }SpiId_t;
-
- /*!
- * SPI object type definition
- */
- typedef struct Spi_s
- {
- SpiId_t SpiId;
- Gpio_t Mosi;
- Gpio_t Miso;
- Gpio_t Sclk;
- Gpio_t Nss;
- }Spi_t;
-
- /*!
- * \brief Initializes the SPI object and MCU peripheral
- *
- * \remark When NSS pin is software controlled set the pin name to NC otherwise
- * set the pin name to be used.
- *
- * \param [IN] obj SPI object
- * \param [IN] mosi SPI MOSI pin name to be used
- * \param [IN] miso SPI MISO pin name to be used
- * \param [IN] sclk SPI SCLK pin name to be used
- * \param [IN] nss SPI NSS pin name to be used
- */
- void SpiInit( Spi_t *obj, SpiId_t spiId, PinNames mosi, PinNames miso, PinNames sclk, PinNames nss );
-
- /*!
- * \brief De-initializes the SPI object and MCU peripheral
- *
- * \param [IN] obj SPI object
- */
- void SpiDeInit( Spi_t *obj );
-
- /*!
- * \brief Configures the SPI peripheral
- *
- * \remark Slave mode isn't currently handled
- *
- * \param [IN] obj SPI object
- * \param [IN] bits Number of bits to be used. [8 or 16]
- * \param [IN] cpol Clock polarity
- * \param [IN] cpha Clock phase
- * \param [IN] slave When set the peripheral acts in slave mode
- */
- void SpiFormat( Spi_t *obj, int8_t bits, int8_t cpol, int8_t cpha, int8_t slave );
-
- /*!
- * \brief Sets the SPI speed
- *
- * \param [IN] obj SPI object
- * \param [IN] hz SPI clock frequency in hz
- */
- void SpiFrequency( Spi_t *obj, uint32_t hz );
-
- /*!
- * \brief Sends outData and receives inData
- *
- * \param [IN] obj SPI object
- * \param [IN] outData Byte to be sent
- * \retval inData Received byte.
- */
- uint16_t SpiInOut( Spi_t *obj, uint16_t outData );
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif // __SPI_H__
|