155 lines
4.0 KiB
C
155 lines
4.0 KiB
C
/** @file spi.h
|
|
* @brief SPI Driver Definition File
|
|
* @date 29.May.2013
|
|
* @version 03.05.02
|
|
*
|
|
* (c) Texas Instruments 2009-2013, All rights reserved.
|
|
*/
|
|
|
|
|
|
#ifndef __SPI_H__
|
|
#define __SPI_H__
|
|
|
|
#include "reg_spi.h"
|
|
|
|
/** @enum chipSelect
|
|
* @brief Transfer Group Chip Select
|
|
*/
|
|
enum spiChipSelect
|
|
{
|
|
SPI_CS_NONE = 0xFFU,
|
|
SPI_CS_0 = 0xFEU,
|
|
SPI_CS_1 = 0xFDU,
|
|
SPI_CS_2 = 0xFBU,
|
|
SPI_CS_3 = 0xF7U,
|
|
SPI_CS_4 = 0xEFU,
|
|
SPI_CS_5 = 0xDFU,
|
|
SPI_CS_6 = 0xBFU,
|
|
SPI_CS_7 = 0x7FU
|
|
};
|
|
|
|
/** @enum spiPinSelect
|
|
* @brief spi Pin Select
|
|
*/
|
|
enum spiPinSelect
|
|
{
|
|
SPI_PIN_CS0 = 0U,
|
|
SPI_PIN_CS1 = 1U,
|
|
SPI_PIN_CS2 = 2U,
|
|
SPI_PIN_CS3 = 3U,
|
|
SPI_PIN_CS4 = 4U,
|
|
SPI_PIN_CS5 = 5U,
|
|
SPI_PIN_CS6 = 6U,
|
|
SPI_PIN_CS7 = 7U,
|
|
SPI_PIN_ENA = 8U,
|
|
SPI_PIN_CLK = 9U,
|
|
SPI_PIN_SIMO = 10U,
|
|
SPI_PIN_SOMI = 11U,
|
|
SPI_PIN_SIMO_1 = 17U,
|
|
SPI_PIN_SIMO_2 = 18U,
|
|
SPI_PIN_SIMO_3 = 19U,
|
|
SPI_PIN_SIMO_4 = 20U,
|
|
SPI_PIN_SIMO_5 = 21U,
|
|
SPI_PIN_SIMO_6 = 22U,
|
|
SPI_PIN_SIMO_7 = 23U,
|
|
SPI_PIN_SOMI_1 = 25U,
|
|
SPI_PIN_SOMI_2 = 26U,
|
|
SPI_PIN_SOMI_3 = 27U,
|
|
SPI_PIN_SOMI_4 = 28U,
|
|
SPI_PIN_SOMI_5 = 29U,
|
|
SPI_PIN_SOMI_6 = 30U,
|
|
SPI_PIN_SOMI_7 = 31U
|
|
};
|
|
|
|
/** @enum dataformat
|
|
* @brief SPI dataformat register select
|
|
*/
|
|
typedef enum dataformat
|
|
{
|
|
SPI_FMT_0 = 0U,
|
|
SPI_FMT_1 = 1U,
|
|
SPI_FMT_2 = 2U,
|
|
SPI_FMT_3 = 3U
|
|
}SPIDATAFMT_t;
|
|
|
|
/** @struct spiDAT1RegConfig
|
|
* @brief SPI data register configuration
|
|
*/
|
|
typedef struct spiDAT1RegConfig
|
|
{
|
|
boolean CS_HOLD;
|
|
boolean WDEL;
|
|
SPIDATAFMT_t DFSEL;
|
|
uint8 CSNR;
|
|
}spiDAT1_t;
|
|
|
|
/** @enum SpiTxRxDataStatus
|
|
* @brief SPI Data Status
|
|
*/
|
|
typedef enum SpiTxRxDataStatus
|
|
{
|
|
SPI_READY = 0U,
|
|
SPI_PENDING = 1U,
|
|
SPI_COMPLETED = 2U
|
|
}SpiDataStatus_t;
|
|
|
|
/* USER CODE BEGIN (0) */
|
|
/* USER CODE END */
|
|
|
|
/**
|
|
* @defgroup SPI SPI
|
|
* @brief Serial Peripheral Interface Module.
|
|
*
|
|
* SPI is a high-speed synchronous serial input/output port that allows a serial bit stream of
|
|
* programmed length (2 to 16 bits) to be shifted in and out of the device at a programmed bit-transfer rate.
|
|
*
|
|
* Related Files
|
|
* - reg_spi.h
|
|
* - spi.h
|
|
* - spi.c
|
|
* @addtogroup SPI
|
|
* @{
|
|
*/
|
|
|
|
/* SPI Interface Functions */
|
|
void spiInit(void);
|
|
void spiSetFunctional(spiBASE_t *spi, uint32 port);
|
|
void spiEnableNotification(spiBASE_t *spi, uint32 flags);
|
|
void spiDisableNotification(spiBASE_t *spi, uint32 flags);
|
|
uint32 spiTransmitData(spiBASE_t *spi, spiDAT1_t *dataconfig_t, uint32 blocksize, uint16 * srcbuff);
|
|
void spiSendData(spiBASE_t *spi, spiDAT1_t *dataconfig_t, uint32 blocksize, uint16 * srcbuff);
|
|
uint32 spiReceiveData(spiBASE_t *spi, spiDAT1_t *dataconfig_t, uint32 blocksize, uint16 * destbuff);
|
|
void spiGetData(spiBASE_t *spi, spiDAT1_t *dataconfig_t, uint32 blocksize, uint16 * destbuff);
|
|
uint32 spiTransmitAndReceiveData(spiBASE_t *spi, spiDAT1_t *dataconfig_t, uint32 blocksize, uint16 * srcbuff, uint16 * destbuff);
|
|
void spiSendAndGetData(spiBASE_t *spi, spiDAT1_t *dataconfig_t, uint32 blocksize, uint16 * srcbuff, uint16 * destbuff);
|
|
void spiEnableLoopback(spiBASE_t *spi, loopBackType_t Loopbacktype);
|
|
void spiDisableLoopback(spiBASE_t *spi);
|
|
SpiDataStatus_t SpiTxStatus(spiBASE_t *spi);
|
|
SpiDataStatus_t SpiRxStatus(spiBASE_t *spi);
|
|
|
|
/** @fn void spiNotification(spiBASE_t *spi, uint32 flags)
|
|
* @brief Interrupt callback
|
|
* @param[in] spi - Spi module base address
|
|
* @param[in] flags - Copy of error interrupt flags
|
|
*
|
|
* This is a callback that is provided by the application and is called upon
|
|
* an interrupt. The parameter passed to the callback is a copy of the
|
|
* interrupt flag register.
|
|
*/
|
|
void spiNotification(spiBASE_t *spi, uint32 flags);
|
|
|
|
/** @fn void spiEndNotification(spiBASE_t *spi)
|
|
* @brief Interrupt callback for End of TX or RX data length.
|
|
* @param[in] spi - Spi module base address
|
|
*
|
|
* This is a callback that is provided by the application and is called upon
|
|
* an interrupt at the End of TX or RX data length.
|
|
*/
|
|
void spiEndNotification(spiBASE_t *spi);
|
|
|
|
/**@}*/
|
|
/* USER CODE BEGIN (1) */
|
|
/* USER CODE END */
|
|
|
|
#endif
|