STMPE610 touch sensor driver library

Dependents:   TS_Eyes Tokei testUniGraphic_150217 AfficheurTFTAdafruit ... more

Committer:
Rhyme
Date:
Sat Nov 08 06:51:34 2014 +0000
Revision:
1:43990f1c0a8b
Parent:
0:68779c92cffa
Child:
2:ee910b63c077
First version with document

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 1:43990f1c0a8b 1 /**
Rhyme 1:43990f1c0a8b 2 * STMPE610 Touch Sensor
Rhyme 1:43990f1c0a8b 3 *
Rhyme 0:68779c92cffa 4 *
Rhyme 0:68779c92cffa 5 */
Rhyme 0:68779c92cffa 6 #ifndef SPI_STMPE610_H
Rhyme 0:68779c92cffa 7 #define SPI_STMPE610_H
Rhyme 0:68779c92cffa 8
Rhyme 0:68779c92cffa 9 #include "mbed.h"
Rhyme 0:68779c92cffa 10
Rhyme 1:43990f1c0a8b 11
Rhyme 1:43990f1c0a8b 12 /** SPI_STMPE610 Touch Sensor
Rhyme 1:43990f1c0a8b 13 * Example:
Rhyme 1:43990f1c0a8b 14 * @code
Rhyme 1:43990f1c0a8b 15 * #include "mbed.h"
Rhyme 1:43990f1c0a8b 16 * #include "SPI_STMPE610.h"
Rhyme 1:43990f1c0a8b 17 *
Rhyme 1:43990f1c0a8b 18 * #define PIN_MOSI PTD2
Rhyme 1:43990f1c0a8b 19 * #define PIN_MISO PTD3
Rhyme 1:43990f1c0a8b 20 * #define PIN_SCLK PTD1
Rhyme 1:43990f1c0a8b 21 * #define PIN_CS_TSC PTA13
Rhyme 1:43990f1c0a8b 22 * #define PIN_TSC_INTR PTC9
Rhyme 0:68779c92cffa 23 *
Rhyme 1:43990f1c0a8b 24 * SPI_STMPE610 TSC(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TSC) ;
Rhyme 0:68779c92cffa 25 *
Rhyme 1:43990f1c0a8b 26 * int main()
Rhyme 1:43990f1c0a8b 27 * {
Rhyme 1:43990f1c0a8b 28 * uint16_t touched, x, y, z ;
Rhyme 1:43990f1c0a8b 29 * printf("Test SPI STMPE610\n\r") ;
Rhyme 1:43990f1c0a8b 30 * while (true) {
Rhyme 1:43990f1c0a8b 31 * touched = TSC.getRAWPoint(&x, &y, &z) ;
Rhyme 1:43990f1c0a8b 32 * if (touched) {
Rhyme 1:43990f1c0a8b 33 * printf("x = %d, y = %d, z = %d\n\r", x, y, z) ;
Rhyme 1:43990f1c0a8b 34 * }
Rhyme 1:43990f1c0a8b 35 * wait(0.1) ;
Rhyme 1:43990f1c0a8b 36 * }
Rhyme 1:43990f1c0a8b 37 * }
Rhyme 1:43990f1c0a8b 38 * @endcode
Rhyme 0:68779c92cffa 39 */
Rhyme 0:68779c92cffa 40
Rhyme 0:68779c92cffa 41 class SPI_STMPE610
Rhyme 0:68779c92cffa 42 {
Rhyme 0:68779c92cffa 43 public:
Rhyme 0:68779c92cffa 44 /**
Rhyme 0:68779c92cffa 45 * STMPE610 constructor
Rhyme 0:68779c92cffa 46 *
Rhyme 0:68779c92cffa 47 * @param mosi SPI_MOSI pin
Rhyme 0:68779c92cffa 48 * @param miso SPI_MISO pin
Rhyme 0:68779c92cffa 49 * @param sclk SPI_CLK pin
Rhyme 0:68779c92cffa 50 * @param cs SPI_CS pin
Rhyme 0:68779c92cffa 51 */
Rhyme 1:43990f1c0a8b 52
Rhyme 0:68779c92cffa 53 SPI_STMPE610(PinName mosi, PinName miso, PinName sclk, PinName cs) ;
Rhyme 0:68779c92cffa 54
Rhyme 1:43990f1c0a8b 55 /**
Rhyme 1:43990f1c0a8b 56 * Destructor
Rhyme 1:43990f1c0a8b 57 */
Rhyme 0:68779c92cffa 58 ~SPI_STMPE610() ;
Rhyme 0:68779c92cffa 59
Rhyme 0:68779c92cffa 60 /*
Rhyme 0:68779c92cffa 61 * some member functions here (yet to be written)
Rhyme 0:68779c92cffa 62 */
Rhyme 0:68779c92cffa 63
Rhyme 0:68779c92cffa 64 SPI m_spi;
Rhyme 0:68779c92cffa 65 DigitalOut m_cs ;
Rhyme 0:68779c92cffa 66 int _mode ;
Rhyme 0:68779c92cffa 67
Rhyme 0:68779c92cffa 68 void readRegs(int addr, uint8_t *data, int len) ;
Rhyme 0:68779c92cffa 69 void writeRegs(uint8_t *data, int len) ;
Rhyme 0:68779c92cffa 70 uint8_t read8(int addr) ;
Rhyme 0:68779c92cffa 71 void write8(int addr, uint8_t data) ;
Rhyme 0:68779c92cffa 72 uint16_t read16(int addr) ;
Rhyme 0:68779c92cffa 73 void write16(int addr, uint16_t data) ;
Rhyme 0:68779c92cffa 74
Rhyme 1:43990f1c0a8b 75 /**
Rhyme 1:43990f1c0a8b 76 * get RAW value of x, y, z
Rhyme 1:43990f1c0a8b 77 * @param *x raw value of x
Rhyme 1:43990f1c0a8b 78 * @param *y raw value of y
Rhyme 1:43990f1c0a8b 79 * @param *z raw value of z
Rhyme 1:43990f1c0a8b 80 * @return if touched
Rhyme 1:43990f1c0a8b 81 * @note For my device usually the value seems to be between 300 ~ 3000
Rhyme 1:43990f1c0a8b 82 * @note when it fails to acquire value the value of 0 seems to be returned
Rhyme 1:43990f1c0a8b 83 */
Rhyme 0:68779c92cffa 84 int getRAWPoint(uint16_t *x, uint16_t *y, uint16_t *z) ;
Rhyme 0:68779c92cffa 85
Rhyme 0:68779c92cffa 86 private:
Rhyme 0:68779c92cffa 87 } ;
Rhyme 1:43990f1c0a8b 88
Rhyme 0:68779c92cffa 89 #endif /* SPI_STMPE610_H */