/********************************************************************************* * Copyright: (C) 2019 LingYun IoT System Studio * All rights reserved. * * Filename: spidev.h * Description: This file is spidev user space API. * * Version: 1.0.0(2019年08月19日) * Author: Guo Wenxue * ChangeLog: 1, Release initial version on "2019年08月19日 23时18分54秒" * ********************************************************************************/ #ifndef _SPIDEV_H_ #define _SPIDEV_H_ #include #include #include #include #include #include #include #define DEVNAME_LEN 64 #define DEF_SPI_BPW 8 /* bits per word */ #define DEF_SPI_SPEED 500 /* unit kHZ */ #define DEF_SPI_MODE SPI_CPHA //#define SPI_DEBUG #ifdef SPI_DEBUG #define spi_dbg(format,args...) printf(format, ##args) #else #define spi_dbg(format,args...) do{} while(0); #endif typedef struct spidev_s { char devname[DEVNAME_LEN]; int fd; uint8_t bits; /* bits per word */ uint32_t speed; /* max speed in HZ */ uint32_t delay; /* delay usecs */ /* mode: SPI_CPHA,SPI_CPOL => * SPI_CS_HIGH | SPI_LSB_FIRST | SPI_3WIRE | SPI_LOOP | SPI_NO_CS * | SPI_READY | SPI_TX_DUAL | SPI_TX_QUAD | SPI_RX_DUAL | SPI_RX_QUAD */ uint32_t mode; } spidev_t; /* initialise and open spidev context * NOTE: $speed unit is KHz */ extern int spi_init(spidev_t *spi, char *spidev, uint8_t bpw, uint32_t speed, uint32_t delay, uint32_t mode); /* read size bytes from SPI slave */ extern int spi_read(spidev_t *spi, char *buf, int size); /* write nbytes to SPI slave */ extern int spi_write(spidev_t *spi, char *data, int nbytes); /* write nbytes and read nbytes to/from SPI slave */ extern int spi_rdwr(spidev_t *spi, char *data, char *rbuf, int nbytes); /* terminate and close spidev context */ extern int spi_term(spidev_t *spi); #endif /* ----- #ifndef _SPIDEV_H_ ----- */