You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
#ifndef _SPI_H_ |
|
#define _SPI_H_ |
|
|
|
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <string.h> |
|
#include <stdint.h> |
|
#include <fcntl.h> |
|
#include <unistd.h> |
|
#include <pthread.h> |
|
#include <sys/ioctl.h> |
|
#include <linux/spi/spidev.h> |
|
|
|
#define SPI_DEVICE "/dev/spidev0.0" |
|
#define SPI_MODULE SPI_MODE_1 |
|
#define SPI_MAX_SPEED ( 25 * 1000 * 1000) |
|
#define SPI_NBITS 8 |
|
#define SPI_FIRST 0 |
|
#define SPI_BUFFER_NUM 1024 |
|
|
|
|
|
class Spi |
|
{ |
|
public : |
|
Spi(char *para_dev = SPI_DEVICE , int para_mode = SPI_MODULE , int para_max_speed = SPI_MAX_SPEED , int para_nbits = SPI_NBITS , int para_first = SPI_FIRST) ; |
|
~Spi() ; |
|
void spiMutexLock() ; |
|
void spiMutexUnlock() ; |
|
void printTxBuffer() ; |
|
void printRxBuffer() ; |
|
int getTxLength() ; |
|
int getRxLength() ; |
|
uint8_t* getTxBuffer() ; |
|
uint8_t* getRxBuffer() ; |
|
|
|
void printTxBuffer(uint8_t *para_tx_buffer , int para_tx_len) ; |
|
void printRxBuffer(uint8_t *para_rx_buffer , int para_rx_len) ; |
|
|
|
int singleWriteSpi(unsigned char *para_tx_buffer , int para_tx_len) ; |
|
int singleReadSpi(unsigned char *para_rx_buffer , int para_rx_len) ; |
|
int writeSpi(unsigned char *para_tx_buffer , int para_tx_len) ; |
|
int readSpi( unsigned char *para_rx_buffer , int para_rx_len) ; |
|
int readWriteSpi(unsigned char *para_tx_buffer , unsigned char *para_rx_buffer , int para_tx_len , int para_rx_len ) ; |
|
private : |
|
int spi_fd ; |
|
int mode ; |
|
int max_speed ; |
|
int nbits ; |
|
int first ; |
|
int ret ; |
|
pthread_mutex_t spi_mutex ; |
|
|
|
uint8_t tx_buffer[SPI_BUFFER_NUM] ; |
|
uint8_t rx_buffer[SPI_BUFFER_NUM] ; |
|
} ; |
|
|
|
|
|
|
|
|
|
|
|
#endif |