123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- /**************************************************************************//**
- * @file spi.h
- * @brief N9H30 SPI driver header file
- *
- * @note
- * SPDX-License-Identifier: Apache-2.0
- * Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
- *****************************************************************************/
- #ifndef __NU_SPI_H__
- #define __NU_SPI_H__
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /** @addtogroup N9H30_Device_Driver N9H30 Device Driver
- @{
- */
- /** @addtogroup N9H30_SPI_Driver SPI Driver
- @{
- */
- /** @addtogroup N9H30_SPI_EXPORTED_CONSTANTS SPI Exported Constants
- @{
- */
- /// @cond HIDDEN_SYMBOLS
- #define CNTRL 0x00 /*!< Control Register Address */
- #define DIVIDER 0x04 /*!< Divider Register Address */
- #define SSR 0x08 /*!< Slave Select Register Address */
- #define RX0 0x10 /*!< Receive Register 0 Address */
- #define RX1 0x14 /*!< Receive Register 1 Address */
- #define RX2 0x18 /*!< Receive Register 2 Address */
- #define RX3 0x1C /*!< Receive Register 3 Address */
- #define TX0 0x10 /*!< Transfer Register 0 Address */
- #define TX1 0x14 /*!< Transfer Register 1 Address */
- #define TX2 0x18 /*!< Transfer Register 2 Address */
- #define TX3 0x1C /*!< Transfer Register 3 Address */
- #define SPI_INPUT_CLOCK (sysGetClock(SYS_PCLK)*1000000) /* Unit: Hz */
- /// @endcond HIDDEN_SYMBOLS
- #define SPI_NUMBER 2 /*!< 2 spi interfaces */
- #define SPI_NO_ERR 0 /*!< No error */
- #define SPI_ERR_NODEV -1 /*!< Wrong device id */
- #define SPI_ERR_BUSY -2 /*!< Interface is busy */
- #define SPI_ERR_IO -3 /*!< IO control error for not opened interface */
- #define SPI_ERR_ARG -4 /*!< Wrong argument in IO control */
- #define SPI_IOC_TRIGGER 0 /*!< Trigger SPI interface */
- #define SPI_IOC_SET_INTERRUPT 1 /*!< Enable/disable interrupt ,arguments could be \ref SPI_DISABLE_INTERRUPT and \ref SPI_ENABLE_INTERRUPT */
- #define SPI_IOC_SET_SPEED 2 /*!< Set SPI clock speed */
- #define SPI_IOC_SET_DUAL_QUAD_MODE 3 /*!< Enable/disable Quad/Dual mode ,arguments could be \ref SPI_DISABLE_DUAL_QUAD, \ref SPI_DUAL_MODE, \ref SPI_QUAD_MODE*/
- #define SPI_IOC_SET_DUAL_QUAD_DIR 4 /*!< Set Quad/Dual mode direction ,arguments could be \ref SPI_DUAL_QUAD_INPUT, \ref SPI_DUAL_QUAD_OUTPUT */
- #define SPI_IOC_SET_LSB_MSB 5 /*!< Set MSB/LSB ,arguments could be \ref SPI_MSB, \ref SPI_LSB */
- #define SPI_IOC_SET_TX_NUM 6 /*!< Set transfer number */
- #define SPI_IOC_SET_TX_BITLEN 7 /*!< Set transfer bit number */
- #define SPI_IOC_SET_MODE 8 /*!< Set SPI mode ,arguments could be \ref SPI_MODE_0, \ref SPI_MODE_1, \ref SPI_MODE_2, \ref SPI_MODE_3 */
- #define SPI_IOC_ENABLE_SS 9 /*!< Enable slave select pin */
- #define SPI_IOC_DISABLE_SS 10 /*!< Disable slave select pin */
- #define SPI_IOC_SET_AUTOSS 11 /*!< Enable/disable auto slave select function ,arguments could be \ref SPI_DISABLE_AUTOSS, \ref SPI_ENABLE_AUTOSS */
- #define SPI_IOC_SET_SS_ACTIVE_LEVEL 12 /*!< Set slave select active level ,arguments could be \ref SPI_SS_ACTIVE_LOW, \ref SPI_SS_ACTIVE_HIGH */
- #define SPI_DISABLE_INTERRUPT 0 /*!< Disable interrupt */
- #define SPI_ENABLE_INTERRUPT 1 /*!< Enable interrupt */
- #define SPI_DISABLE_DUAL_QUAD 0 /*!< Disable quad and dual mode */
- #define SPI_DUAL_MODE 1 /*!< Enable dual mode */
- #define SPI_QUAD_MODE 2 /*!< Enable quad mode */
- #define SPI_DUAL_QUAD_INPUT 0 /*!< Set dual/quad mode io direction to input */
- #define SPI_DUAL_QUAD_OUTPUT 1 /*!< Set dual/quad mode io direction to output */
- #define SPI_MSB 0 /*!< Enable MSB */
- #define SPI_LSB 1 /*!< Enable LSB */
- #define SPI_MODE_0 0 /*!< Set to SPI mode 0 */
- #define SPI_MODE_1 1 /*!< Set to SPI mode 1 */
- #define SPI_MODE_2 2 /*!< Set to SPI mode 2 */
- #define SPI_MODE_3 3 /*!< Set to SPI mode 3 */
- #define SPI_SS_SS0 0 /*!< Select SS0 */
- #define SPI_SS_SS1 1 /*!< Select SS1 */
- #define SPI_SS_BOTH 2 /*!< Select both SS0/SS1 */
- #define SPI_DISABLE_AUTOSS 0 /*!< Disable auto slave select function */
- #define SPI_ENABLE_AUTOSS 1 /*!< Enable auto slave select function */
- #define SPI_SS_ACTIVE_LOW 0 /*!< Set active level of slave select to low */
- #define SPI_SS_ACTIVE_HIGH 1 /*!< Set active level of slave select to high */
- /*@}*/ /* end of group N9H30_SPI_EXPORTED_CONSTANTS */
- /** @addtogroup N9H30_SPI_EXPORTED_FUNCTIONS SPI Exported Functions
- @{
- */
- int32_t spiInit(int32_t fd);
- int32_t spiIoctl(int32_t fd, uint32_t cmd, uint32_t arg0, uint32_t arg1);
- int spiOpen(int32_t fd);
- uint8_t spiGetBusyStatus(int32_t fd);
- uint32_t spiRead(int32_t fd, uint8_t buff_id);
- void spiWrite(int32_t fd, uint8_t buff_id, uint32_t data);
- /*@}*/ /* end of group N9H30_SPI_EXPORTED_FUNCTIONS */
- /*@}*/ /* end of group N9H30_SPI_Driver */
- /*@}*/ /* end of group N9H30_Device_Driver */
- #ifdef __cplusplus
- }
- #endif
- #endif //__NU_SPI_H__
- /*** (C) COPYRIGHT 2018 Nuvoton Technology Corp. ***/
|