diff options
author | Joel Bodenmann <joel@unormal.org> | 2015-02-01 17:35:18 +0100 |
---|---|---|
committer | Joel Bodenmann <joel@unormal.org> | 2015-02-01 17:35:18 +0100 |
commit | 514d91d6cf01eb1cd44656b16f2d5bc06d4d20a1 (patch) | |
tree | b9cce41551e9acea7e03600a865ce1c81f93286b /boards/base/HY-MiniSTM32V/gmouse_lld_ADS7843_board.h | |
parent | 606eeff79f5f8faae585a48b27f6a06645471355 (diff) | |
download | uGFX-514d91d6cf01eb1cd44656b16f2d5bc06d4d20a1.tar.gz uGFX-514d91d6cf01eb1cd44656b16f2d5bc06d4d20a1.tar.bz2 uGFX-514d91d6cf01eb1cd44656b16f2d5bc06d4d20a1.zip |
Adding HY-MiniSTM32V board support
Diffstat (limited to 'boards/base/HY-MiniSTM32V/gmouse_lld_ADS7843_board.h')
-rw-r--r-- | boards/base/HY-MiniSTM32V/gmouse_lld_ADS7843_board.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/boards/base/HY-MiniSTM32V/gmouse_lld_ADS7843_board.h b/boards/base/HY-MiniSTM32V/gmouse_lld_ADS7843_board.h new file mode 100644 index 00000000..840692d2 --- /dev/null +++ b/boards/base/HY-MiniSTM32V/gmouse_lld_ADS7843_board.h @@ -0,0 +1,98 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/* + * Board file for HY-MiniSTM32V board from HAOYU (China). + * www.powermcu.com or www.hotmcu.com. + */ + +/* + * NOTE: In order to make this work you need to set: + * STM32_SPI_USE_SPI1 TRUE in mcuconf.h + * HAL_USE_SPI TRUE in halconf.h + */ + +#ifndef _GINPUT_LLD_MOUSE_BOARD_H +#define _GINPUT_LLD_MOUSE_BOARD_H + +// Resolution and Accuracy Settings +#define GMOUSE_ADS7843_PEN_CALIBRATE_ERROR 8 +#define GMOUSE_ADS7843_PEN_CLICK_ERROR 6 +#define GMOUSE_ADS7843_PEN_MOVE_ERROR 4 +#define GMOUSE_ADS7843_FINGER_CALIBRATE_ERROR 14 +#define GMOUSE_ADS7843_FINGER_CLICK_ERROR 18 +#define GMOUSE_ADS7843_FINGER_MOVE_ERROR 14 + +// How much extra data to allocate at the end of the GMouse structure for the board's use +#define BOARD_DATA_SIZE 0 + +static const SPIConfig spicfg = { + 0, + GPIOA, + GPIOA_TP_CS, + SPI_CR1_BR_1 | SPI_CR1_BR_0, /* Might be tweaked for faster transfer. */ +}; + +/* + * ADS7843 (clone chip) is connected to SPI1 w/o remap + * TP_CS PA4 + * SPI_SCK PA5 + * SPI_MISO PA6 + * SPI_MOSI PA7 + * TP_IRQ PB6 + */ + +static bool_t init_board(GMouse* m, unsigned driverinstance) { + (void) m; + (void) driverinstance; + + palSetPadMode(GPIOA, 4, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOA, 5, PAL_MODE_STM32_ALTERNATE_PUSHPULL); + palSetPadMode(GPIOA, 6, PAL_MODE_INPUT_PULLUP); + palSetPadMode(GPIOA, 7, PAL_MODE_STM32_ALTERNATE_PUSHPULL); + palSetPadMode(GPIOB, 6, PAL_MODE_INPUT); + + spiStart(&SPID1, &spicfg); + return true; +} + +/* + * PB6 is connected to TP_IRQ (low active). + */ +static inline bool_t getpin_pressed(GMouse* m) { + (void)m; + return (!palReadPad(GPIOB, 6)); +} + +/* + * PA4 is connected to TP_CS (low active): + */ +static inline void aquire_bus(GMouse* m) { + (void)m; + spiAcquireBus(&SPID1); + palClearPad(GPIOA, 4); +} + +static inline void release_bus(GMouse* m) { + (void)m; + palSetPad(GPIOA, 4); + spiReleaseBus(&SPID1); +} + +static inline uint16_t read_value(GMouse* m, uint16_t port) { + (void)m; + static uint8_t txbuf[3] = {0}; + static uint8_t rxbuf[3] = {0}; + uint16_t ret; + + txbuf[0] = port; + spiExchange(&SPID1, 3, txbuf, rxbuf); + ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3); + return ret; +} + +#endif /* _GINPUT_LLD_MOUSE_BOARD_H */ |