
fix Security breach found by Tencent Blade Team please refer to security advisory - CVE-2020-11068
110 lines
2.4 KiB
C
110 lines
2.4 KiB
C
/*!
|
|
* \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__
|