Clean up the driver directory structure by moving all board specific files into the boards sub-structure.
This commit is contained in:
parent
dc2d5be606
commit
555257933a
28 changed files with 768 additions and 914 deletions
BIN
boards/addons/gdisp/ED060SC4_example_schematics.png
Normal file
BIN
boards/addons/gdisp/ED060SC4_example_schematics.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 298 KiB |
|
@ -4,87 +4,87 @@
|
||||||
*
|
*
|
||||||
* http://ugfx.org/license.html
|
* http://ugfx.org/license.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_firebull_stm32f103.h
|
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_firebull_stm32f103.h
|
||||||
* @brief GINPUT ouch low level driver source for the ADS7843 on the FireBull STM32F103-FB board.
|
* @brief GINPUT ouch low level driver source for the ADS7843 on the FireBull STM32F103-FB board.
|
||||||
*
|
*
|
||||||
* @defgroup Mouse Mouse
|
* @defgroup Mouse Mouse
|
||||||
* @ingroup GINPUT
|
* @ingroup GINPUT
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
#define _GINPUT_LLD_MOUSE_BOARD_H
|
#define _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
|
|
||||||
static const SPIConfig spicfg = {
|
static const SPIConfig spicfg = {
|
||||||
NULL,
|
NULL,
|
||||||
GPIOC,
|
GPIOC,
|
||||||
6,
|
6,
|
||||||
/* SPI_CR1_BR_2 |*/ SPI_CR1_BR_1 | SPI_CR1_BR_0,
|
/* SPI_CR1_BR_2 |*/ SPI_CR1_BR_1 | SPI_CR1_BR_0,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialise the board for the touch.
|
* @brief Initialise the board for the touch.
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void init_board(void) {
|
static inline void init_board(void) {
|
||||||
spiStart(&SPID1, &spicfg);
|
spiStart(&SPID1, &spicfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check whether the surface is currently touched
|
* @brief Check whether the surface is currently touched
|
||||||
* @return TRUE if the surface is currently touched
|
* @return TRUE if the surface is currently touched
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline bool_t getpin_pressed(void) {
|
static inline bool_t getpin_pressed(void) {
|
||||||
return (!palReadPad(GPIOC, 4));
|
return (!palReadPad(GPIOC, 4));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Aquire the bus ready for readings
|
* @brief Aquire the bus ready for readings
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void aquire_bus(void) {
|
static inline void aquire_bus(void) {
|
||||||
spiAcquireBus(&SPID1);
|
spiAcquireBus(&SPID1);
|
||||||
//TOUCHSCREEN_SPI_PROLOGUE();
|
//TOUCHSCREEN_SPI_PROLOGUE();
|
||||||
palClearPad(GPIOC, 6);
|
palClearPad(GPIOC, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Release the bus after readings
|
* @brief Release the bus after readings
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void release_bus(void) {
|
static inline void release_bus(void) {
|
||||||
palSetPad(GPIOC, 6);
|
palSetPad(GPIOC, 6);
|
||||||
spiReleaseBus(&SPID1);
|
spiReleaseBus(&SPID1);
|
||||||
//TOUCHSCREEN_SPI_EPILOGUE();
|
//TOUCHSCREEN_SPI_EPILOGUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read a value from touch controller
|
* @brief Read a value from touch controller
|
||||||
* @return The value read from the controller
|
* @return The value read from the controller
|
||||||
*
|
*
|
||||||
* params[in] port The controller port to read.
|
* params[in] port The controller port to read.
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline uint16_t read_value(uint16_t port) {
|
static inline uint16_t read_value(uint16_t port) {
|
||||||
static uint8_t txbuf[3] = {0};
|
static uint8_t txbuf[3] = {0};
|
||||||
static uint8_t rxbuf[3] = {0};
|
static uint8_t rxbuf[3] = {0};
|
||||||
uint16_t ret;
|
uint16_t ret;
|
||||||
|
|
||||||
txbuf[0] = port;
|
txbuf[0] = port;
|
||||||
|
|
||||||
spiExchange(&SPID1, 3, txbuf, rxbuf);
|
spiExchange(&SPID1, 3, txbuf, rxbuf);
|
||||||
|
|
||||||
ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3);
|
ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
||||||
/** @} */
|
/** @} */
|
|
@ -4,87 +4,87 @@
|
||||||
*
|
*
|
||||||
* http://ugfx.org/license.html
|
* http://ugfx.org/license.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_olimex_stm32_e407.h
|
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_olimex_stm32_e407.h
|
||||||
* @brief GINPUT Touch low level driver source for the ADS7843 on an Olimex STM32E407.
|
* @brief GINPUT Touch low level driver source for the ADS7843 on an Olimex STM32E407.
|
||||||
*
|
*
|
||||||
* @defgroup Mouse Mouse
|
* @defgroup Mouse Mouse
|
||||||
* @ingroup GINPUT
|
* @ingroup GINPUT
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
#define _GINPUT_LLD_MOUSE_BOARD_H
|
#define _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
|
|
||||||
static const SPIConfig spicfg = {
|
static const SPIConfig spicfg = {
|
||||||
NULL,
|
NULL,
|
||||||
GPIOG,
|
GPIOG,
|
||||||
10,
|
10,
|
||||||
/* SPI_CR1_BR_2 |*/ SPI_CR1_BR_1 | SPI_CR1_BR_0,
|
/* SPI_CR1_BR_2 |*/ SPI_CR1_BR_1 | SPI_CR1_BR_0,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialise the board for the touch.
|
* @brief Initialise the board for the touch.
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void init_board(void) {
|
static inline void init_board(void) {
|
||||||
spiStart(&SPID2, &spicfg);
|
spiStart(&SPID2, &spicfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check whether the surface is currently touched
|
* @brief Check whether the surface is currently touched
|
||||||
* @return TRUE if the surface is currently touched
|
* @return TRUE if the surface is currently touched
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline bool_t getpin_pressed(void) {
|
static inline bool_t getpin_pressed(void) {
|
||||||
return (!palReadPad(GPIOG, 0));
|
return (!palReadPad(GPIOG, 0));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Aquire the bus ready for readings
|
* @brief Aquire the bus ready for readings
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void aquire_bus(void) {
|
static inline void aquire_bus(void) {
|
||||||
spiAcquireBus(&SPID2);
|
spiAcquireBus(&SPID2);
|
||||||
//TOUCHSCREEN_SPI_PROLOGUE();
|
//TOUCHSCREEN_SPI_PROLOGUE();
|
||||||
palClearPad(GPIOG, 10);
|
palClearPad(GPIOG, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Release the bus after readings
|
* @brief Release the bus after readings
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void release_bus(void) {
|
static inline void release_bus(void) {
|
||||||
palSetPad(GPIOG, 10);
|
palSetPad(GPIOG, 10);
|
||||||
spiReleaseBus(&SPID2);
|
spiReleaseBus(&SPID2);
|
||||||
//TOUCHSCREEN_SPI_EPILOGUE();
|
//TOUCHSCREEN_SPI_EPILOGUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read a value from touch controller
|
* @brief Read a value from touch controller
|
||||||
* @return The value read from the controller
|
* @return The value read from the controller
|
||||||
*
|
*
|
||||||
* params[in] port The controller port to read.
|
* params[in] port The controller port to read.
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline uint16_t read_value(uint16_t port) {
|
static inline uint16_t read_value(uint16_t port) {
|
||||||
static uint8_t txbuf[3] = {0};
|
static uint8_t txbuf[3] = {0};
|
||||||
static uint8_t rxbuf[3] = {0};
|
static uint8_t rxbuf[3] = {0};
|
||||||
uint16_t ret;
|
uint16_t ret;
|
||||||
|
|
||||||
txbuf[0] = port;
|
txbuf[0] = port;
|
||||||
|
|
||||||
spiExchange(&SPID2, 3, txbuf, rxbuf);
|
spiExchange(&SPID2, 3, txbuf, rxbuf);
|
||||||
|
|
||||||
ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3);
|
ret = (rxbuf[1] << 5) | (rxbuf[2] >> 3);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
||||||
/** @} */
|
/** @} */
|
|
@ -4,148 +4,148 @@
|
||||||
*
|
*
|
||||||
* http://ugfx.org/license.html
|
* http://ugfx.org/license.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h
|
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h
|
||||||
* @brief GINPUT Touch low level driver source for the MCU on the example board.
|
* @brief GINPUT Touch low level driver source for the MCU on the example board.
|
||||||
*
|
*
|
||||||
* @defgroup Mouse Mouse
|
* @defgroup Mouse Mouse
|
||||||
* @ingroup GINPUT
|
* @ingroup GINPUT
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
#define _GINPUT_LLD_MOUSE_BOARD_H
|
#define _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
|
|
||||||
static const ADCConfig ADCC = {
|
static const ADCConfig ADCC = {
|
||||||
.vref = ADC_VREF_CFG_AVDD_AVSS,
|
.vref = ADC_VREF_CFG_AVDD_AVSS,
|
||||||
.stime = 15,
|
.stime = 15,
|
||||||
.irq = EIC_IRQ_ADC,
|
.irq = EIC_IRQ_ADC,
|
||||||
.base = _ADC10_BASE_ADDRESS,
|
.base = _ADC10_BASE_ADDRESS,
|
||||||
};
|
};
|
||||||
static struct ADCDriver ADCD;
|
static struct ADCDriver ADCD;
|
||||||
|
|
||||||
#define YNEG 13 // U
|
#define YNEG 13 // U
|
||||||
#define XNEG 15 // R
|
#define XNEG 15 // R
|
||||||
#define XPOS 12 // L
|
#define XPOS 12 // L
|
||||||
#define YPOS 11 // D
|
#define YPOS 11 // D
|
||||||
|
|
||||||
#define ADC_MAX 1023
|
#define ADC_MAX 1023
|
||||||
|
|
||||||
#define TOUCH_THRESHOULD 50
|
#define TOUCH_THRESHOULD 50
|
||||||
|
|
||||||
static const ADCConversionGroup ADC_X_CG = {
|
static const ADCConversionGroup ADC_X_CG = {
|
||||||
.circular = FALSE,
|
.circular = FALSE,
|
||||||
.num_channels = 1,
|
.num_channels = 1,
|
||||||
.channels = 1 << XNEG,
|
.channels = 1 << XNEG,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const ADCConversionGroup ADC_Y_CG = {
|
static const ADCConversionGroup ADC_Y_CG = {
|
||||||
.circular = FALSE,
|
.circular = FALSE,
|
||||||
.num_channels = 1,
|
.num_channels = 1,
|
||||||
.channels = 1 << YPOS,
|
.channels = 1 << YPOS,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialise the board for the touch.
|
* @brief Initialise the board for the touch.
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void init_board(void) {
|
static inline void init_board(void) {
|
||||||
adcObjectInit(&ADCD);
|
adcObjectInit(&ADCD);
|
||||||
adcStart(&ADCD, &ADCC);
|
adcStart(&ADCD, &ADCC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check whether the surface is currently touched
|
* @brief Check whether the surface is currently touched
|
||||||
* @return TRUE if the surface is currently touched
|
* @return TRUE if the surface is currently touched
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline bool_t getpin_pressed(void) {
|
static inline bool_t getpin_pressed(void) {
|
||||||
adcsample_t samples[2] = {0, };
|
adcsample_t samples[2] = {0, };
|
||||||
|
|
||||||
// Set X+ to ground
|
// Set X+ to ground
|
||||||
palSetPadMode(IOPORTB, XPOS, PAL_MODE_OUTPUT);
|
palSetPadMode(IOPORTB, XPOS, PAL_MODE_OUTPUT);
|
||||||
palClearPad(IOPORTB, XPOS);
|
palClearPad(IOPORTB, XPOS);
|
||||||
|
|
||||||
// Set Y- to VCC
|
// Set Y- to VCC
|
||||||
palSetPadMode(IOPORTB, YNEG, PAL_MODE_OUTPUT);
|
palSetPadMode(IOPORTB, YNEG, PAL_MODE_OUTPUT);
|
||||||
palSetPad(IOPORTB, YNEG);
|
palSetPad(IOPORTB, YNEG);
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, XNEG, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(IOPORTB, XNEG, PAL_MODE_INPUT_ANALOG);
|
||||||
palSetPadMode(IOPORTB, YPOS, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(IOPORTB, YPOS, PAL_MODE_INPUT_ANALOG);
|
||||||
|
|
||||||
adcConvert(&ADCD, &ADC_X_CG, &samples[0], 1);
|
adcConvert(&ADCD, &ADC_X_CG, &samples[0], 1);
|
||||||
adcConvert(&ADCD, &ADC_Y_CG, &samples[1], 1);
|
adcConvert(&ADCD, &ADC_Y_CG, &samples[1], 1);
|
||||||
|
|
||||||
return (ADC_MAX - (samples[1] - samples[0])) > TOUCH_THRESHOULD;
|
return (ADC_MAX - (samples[1] - samples[0])) > TOUCH_THRESHOULD;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Aquire the bus ready for readings
|
* @brief Aquire the bus ready for readings
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void aquire_bus(void) {
|
static inline void aquire_bus(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Release the bus after readings
|
* @brief Release the bus after readings
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void release_bus(void) {
|
static inline void release_bus(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read an x value from touch controller
|
* @brief Read an x value from touch controller
|
||||||
* @return The value read from the controller
|
* @return The value read from the controller
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline uint16_t read_x_value(void) {
|
static inline uint16_t read_x_value(void) {
|
||||||
adcsample_t sample;
|
adcsample_t sample;
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, XPOS, PAL_MODE_OUTPUT);
|
palSetPadMode(IOPORTB, XPOS, PAL_MODE_OUTPUT);
|
||||||
palSetPad(IOPORTB, XPOS);
|
palSetPad(IOPORTB, XPOS);
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, XNEG, PAL_MODE_OUTPUT);
|
palSetPadMode(IOPORTB, XNEG, PAL_MODE_OUTPUT);
|
||||||
palClearPad(IOPORTB, XNEG);
|
palClearPad(IOPORTB, XNEG);
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, YNEG, PAL_MODE_INPUT);
|
palSetPadMode(IOPORTB, YNEG, PAL_MODE_INPUT);
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, YPOS, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(IOPORTB, YPOS, PAL_MODE_INPUT_ANALOG);
|
||||||
|
|
||||||
adcConvert(&ADCD, &ADC_Y_CG, &sample, 1);
|
adcConvert(&ADCD, &ADC_Y_CG, &sample, 1);
|
||||||
|
|
||||||
return ADC_MAX - sample;
|
return ADC_MAX - sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read an y value from touch controller
|
* @brief Read an y value from touch controller
|
||||||
* @return The value read from the controller
|
* @return The value read from the controller
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline uint16_t read_y_value(void) {
|
static inline uint16_t read_y_value(void) {
|
||||||
adcsample_t sample;
|
adcsample_t sample;
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, YNEG, PAL_MODE_OUTPUT);
|
palSetPadMode(IOPORTB, YNEG, PAL_MODE_OUTPUT);
|
||||||
palClearPad(IOPORTB, YNEG);
|
palClearPad(IOPORTB, YNEG);
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, YPOS, PAL_MODE_OUTPUT);
|
palSetPadMode(IOPORTB, YPOS, PAL_MODE_OUTPUT);
|
||||||
palSetPad(IOPORTB, YPOS);
|
palSetPad(IOPORTB, YPOS);
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, XPOS, PAL_MODE_INPUT);
|
palSetPadMode(IOPORTB, XPOS, PAL_MODE_INPUT);
|
||||||
|
|
||||||
palSetPadMode(IOPORTB, XNEG, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(IOPORTB, XNEG, PAL_MODE_INPUT_ANALOG);
|
||||||
|
|
||||||
adcConvert(&ADCD, &ADC_X_CG, &sample, 1);
|
adcConvert(&ADCD, &ADC_X_CG, &sample, 1);
|
||||||
|
|
||||||
return ADC_MAX - sample;
|
return ADC_MAX - sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
||||||
/** @} */
|
/** @} */
|
|
@ -1,152 +1,152 @@
|
||||||
/*
|
/*
|
||||||
* This file is subject to the terms of the GFX License. If a copy of
|
* 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:
|
* the license was not distributed with this file, you can obtain one at:
|
||||||
*
|
*
|
||||||
* http://ugfx.org/license.html
|
* http://ugfx.org/license.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h
|
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h
|
||||||
* @brief GINPUT Touch low level driver source for the MCU on the example board.
|
* @brief GINPUT Touch low level driver source for the MCU on the example board.
|
||||||
*
|
*
|
||||||
* @defgroup Mouse Mouse
|
* @defgroup Mouse Mouse
|
||||||
* @ingroup GINPUT
|
* @ingroup GINPUT
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
#define _GINPUT_LLD_MOUSE_BOARD_H
|
#define _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
|
|
||||||
#define ADC_NUM_CHANNELS 2
|
#define ADC_NUM_CHANNELS 2
|
||||||
#define ADC_BUF_DEPTH 1
|
#define ADC_BUF_DEPTH 1
|
||||||
|
|
||||||
static const ADCConversionGroup adc_y_config = {
|
static const ADCConversionGroup adc_y_config = {
|
||||||
FALSE,
|
FALSE,
|
||||||
ADC_NUM_CHANNELS,
|
ADC_NUM_CHANNELS,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
0, 0,
|
0, 0,
|
||||||
ADC_SQR1_NUM_CH(ADC_NUM_CHANNELS),
|
ADC_SQR1_NUM_CH(ADC_NUM_CHANNELS),
|
||||||
0,
|
0,
|
||||||
ADC_SQR3_SQ2_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN13)
|
ADC_SQR3_SQ2_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN13)
|
||||||
};
|
};
|
||||||
|
|
||||||
static const ADCConversionGroup adc_x_config = {
|
static const ADCConversionGroup adc_x_config = {
|
||||||
FALSE,
|
FALSE,
|
||||||
ADC_NUM_CHANNELS,
|
ADC_NUM_CHANNELS,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
0, 0,
|
0, 0,
|
||||||
ADC_SQR1_NUM_CH(ADC_NUM_CHANNELS),
|
ADC_SQR1_NUM_CH(ADC_NUM_CHANNELS),
|
||||||
0,
|
0,
|
||||||
ADC_SQR3_SQ2_N(ADC_CHANNEL_IN10) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11)
|
ADC_SQR3_SQ2_N(ADC_CHANNEL_IN10) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11)
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialise the board for the touch.
|
* @brief Initialise the board for the touch.
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void init_board(void) {
|
static inline void init_board(void) {
|
||||||
adcStart(&ADCD1, NULL);
|
adcStart(&ADCD1, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check whether the surface is currently touched
|
* @brief Check whether the surface is currently touched
|
||||||
* @return TRUE if the surface is currently touched
|
* @return TRUE if the surface is currently touched
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline bool_t getpin_pressed(void) {
|
static inline bool_t getpin_pressed(void) {
|
||||||
palSetPadMode(GPIOC, 0, PAL_MODE_INPUT_PULLDOWN);
|
palSetPadMode(GPIOC, 0, PAL_MODE_INPUT_PULLDOWN);
|
||||||
palSetPadMode(GPIOC, 1, PAL_MODE_INPUT);
|
palSetPadMode(GPIOC, 1, PAL_MODE_INPUT);
|
||||||
palSetPadMode(GPIOC, 2, PAL_MODE_INPUT);
|
palSetPadMode(GPIOC, 2, PAL_MODE_INPUT);
|
||||||
palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palSetPad(GPIOC, 3);
|
palSetPad(GPIOC, 3);
|
||||||
|
|
||||||
return palReadPad(GPIOC, 0);
|
return palReadPad(GPIOC, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Aquire the bus ready for readings
|
* @brief Aquire the bus ready for readings
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void aquire_bus(void) {
|
static inline void aquire_bus(void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Release the bus after readings
|
* @brief Release the bus after readings
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline void release_bus(void) {
|
static inline void release_bus(void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read an x value from touch controller
|
* @brief Read an x value from touch controller
|
||||||
* @return The value read from the controller
|
* @return The value read from the controller
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline uint16_t read_x_value(void) {
|
static inline uint16_t read_x_value(void) {
|
||||||
uint16_t val1, val2;
|
uint16_t val1, val2;
|
||||||
adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH];
|
adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH];
|
||||||
|
|
||||||
palSetPadMode(GPIOC, 0, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(GPIOC, 0, PAL_MODE_INPUT_ANALOG);
|
||||||
palSetPadMode(GPIOC, 1, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(GPIOC, 1, PAL_MODE_INPUT_ANALOG);
|
||||||
palSetPadMode(GPIOC, 2, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetPadMode(GPIOC, 2, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
|
|
||||||
palSetPad(GPIOC, 2);
|
palSetPad(GPIOC, 2);
|
||||||
palClearPad(GPIOC, 3);
|
palClearPad(GPIOC, 3);
|
||||||
gfxSleepMilliseconds(1);
|
gfxSleepMilliseconds(1);
|
||||||
adcConvert(&ADCD1, &adc_x_config, samples, ADC_BUF_DEPTH);
|
adcConvert(&ADCD1, &adc_x_config, samples, ADC_BUF_DEPTH);
|
||||||
val1 = ((samples[0] + samples[1])/2);
|
val1 = ((samples[0] + samples[1])/2);
|
||||||
|
|
||||||
palClearPad(GPIOC, 2);
|
palClearPad(GPIOC, 2);
|
||||||
palSetPad(GPIOC, 3);
|
palSetPad(GPIOC, 3);
|
||||||
gfxSleepMilliseconds(1);
|
gfxSleepMilliseconds(1);
|
||||||
adcConvert(&ADCD1, &adc_x_config, samples, ADC_BUF_DEPTH);
|
adcConvert(&ADCD1, &adc_x_config, samples, ADC_BUF_DEPTH);
|
||||||
val2 = ((samples[0] + samples[1])/2);
|
val2 = ((samples[0] + samples[1])/2);
|
||||||
|
|
||||||
return ((val1+((1<<12)-val2))/4);
|
return ((val1+((1<<12)-val2))/4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read an y value from touch controller
|
* @brief Read an y value from touch controller
|
||||||
* @return The value read from the controller
|
* @return The value read from the controller
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline uint16_t read_y_value(void) {
|
static inline uint16_t read_y_value(void) {
|
||||||
uint16_t val1, val2;
|
uint16_t val1, val2;
|
||||||
adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH];
|
adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH];
|
||||||
|
|
||||||
palSetPadMode(GPIOC, 2, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(GPIOC, 2, PAL_MODE_INPUT_ANALOG);
|
||||||
palSetPadMode(GPIOC, 3, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(GPIOC, 3, PAL_MODE_INPUT_ANALOG);
|
||||||
palSetPadMode(GPIOC, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetPadMode(GPIOC, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palSetPadMode(GPIOC, 1, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetPadMode(GPIOC, 1, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
|
|
||||||
palSetPad(GPIOC, 1);
|
palSetPad(GPIOC, 1);
|
||||||
palClearPad(GPIOC, 0);
|
palClearPad(GPIOC, 0);
|
||||||
gfxSleepMilliseconds(1);
|
gfxSleepMilliseconds(1);
|
||||||
adcConvert(&ADCD1, &adc_y_config, samples, ADC_BUF_DEPTH);
|
adcConvert(&ADCD1, &adc_y_config, samples, ADC_BUF_DEPTH);
|
||||||
val1 = ((samples[0] + samples[1])/2);
|
val1 = ((samples[0] + samples[1])/2);
|
||||||
|
|
||||||
palClearPad(GPIOC, 1);
|
palClearPad(GPIOC, 1);
|
||||||
palSetPad(GPIOC, 0);
|
palSetPad(GPIOC, 0);
|
||||||
gfxSleepMilliseconds(1);
|
gfxSleepMilliseconds(1);
|
||||||
adcConvert(&ADCD1, &adc_y_config, samples, ADC_BUF_DEPTH);
|
adcConvert(&ADCD1, &adc_y_config, samples, ADC_BUF_DEPTH);
|
||||||
val2 = ((samples[0] + samples[1])/2);
|
val2 = ((samples[0] + samples[1])/2);
|
||||||
|
|
||||||
return ((val1+((1<<12)-val2))/4);
|
return ((val1+((1<<12)-val2))/4);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
||||||
/** @} */
|
/** @} */
|
|
@ -4,123 +4,123 @@
|
||||||
*
|
*
|
||||||
* http://ugfx.org/license.html
|
* http://ugfx.org/license.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file drivers/ginput/touch/STMPE811/ginput_lld_mouse_board_embest_dmstf4bb.h
|
* @file drivers/ginput/touch/STMPE811/ginput_lld_mouse_board_embest_dmstf4bb.h
|
||||||
* @brief GINPUT Touch low level driver source for the STMPE811 on the Embest DM-STF4BB board.
|
* @brief GINPUT Touch low level driver source for the STMPE811 on the Embest DM-STF4BB board.
|
||||||
*
|
*
|
||||||
* @defgroup Mouse Mouse
|
* @defgroup Mouse Mouse
|
||||||
* @ingroup GINPUT
|
* @ingroup GINPUT
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
#ifndef _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
#define _GINPUT_LLD_MOUSE_BOARD_H
|
#define _GINPUT_LLD_MOUSE_BOARD_H
|
||||||
|
|
||||||
static const I2CConfig i2ccfg = {
|
static const I2CConfig i2ccfg = {
|
||||||
OPMODE_I2C,
|
OPMODE_I2C,
|
||||||
400000,
|
400000,
|
||||||
FAST_DUTY_CYCLE_2,
|
FAST_DUTY_CYCLE_2,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialise the board for the touch.
|
* @brief Initialise the board for the touch.
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static void init_board(void)
|
static void init_board(void)
|
||||||
{
|
{
|
||||||
palSetPadMode(GPIOC, 13, PAL_MODE_INPUT | PAL_STM32_PUDR_FLOATING); /* TP IRQ */
|
palSetPadMode(GPIOC, 13, PAL_MODE_INPUT | PAL_STM32_PUDR_FLOATING); /* TP IRQ */
|
||||||
palSetPadMode(GPIOB, 8, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN); /* SCL */
|
palSetPadMode(GPIOB, 8, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN); /* SCL */
|
||||||
palSetPadMode(GPIOB, 9, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN); /* SDA */
|
palSetPadMode(GPIOB, 9, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN); /* SDA */
|
||||||
|
|
||||||
i2cStart(&I2CD1, &i2ccfg);
|
i2cStart(&I2CD1, &i2ccfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check whether an interrupt is raised
|
* @brief Check whether an interrupt is raised
|
||||||
* @return TRUE if there is an interrupt signal present
|
* @return TRUE if there is an interrupt signal present
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static inline bool_t getpin_irq(void) {
|
static inline bool_t getpin_irq(void) {
|
||||||
return (!(palReadPad(GPIOC, 13)));
|
return (!(palReadPad(GPIOC, 13)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Write a value into a certain register
|
* @brief Write a value into a certain register
|
||||||
*
|
*
|
||||||
* @param[in] reg The register address
|
* @param[in] reg The register address
|
||||||
* @param[in] n The amount of bytes (one or two)
|
* @param[in] n The amount of bytes (one or two)
|
||||||
* @param[in] val The value
|
* @param[in] val The value
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static void write_reg(uint8_t reg, uint8_t n, uint16_t val)
|
static void write_reg(uint8_t reg, uint8_t n, uint16_t val)
|
||||||
{
|
{
|
||||||
uint8_t txbuf[3];
|
uint8_t txbuf[3];
|
||||||
|
|
||||||
i2cAcquireBus(&I2CD1);
|
i2cAcquireBus(&I2CD1);
|
||||||
|
|
||||||
txbuf[0] = reg;
|
txbuf[0] = reg;
|
||||||
|
|
||||||
if (n == 1) {
|
if (n == 1) {
|
||||||
txbuf[1] = val;
|
txbuf[1] = val;
|
||||||
i2cMasterTransmitTimeout(&I2CD1, STMPE811_ADDR, txbuf, 2, NULL, 0, MS2ST(STMPE811_TIMEOUT));
|
i2cMasterTransmitTimeout(&I2CD1, STMPE811_ADDR, txbuf, 2, NULL, 0, MS2ST(STMPE811_TIMEOUT));
|
||||||
} else if (n == 2) {
|
} else if (n == 2) {
|
||||||
txbuf[1] = ((val & 0xFF00) >> 8);
|
txbuf[1] = ((val & 0xFF00) >> 8);
|
||||||
txbuf[2] = (val & 0x00FF);
|
txbuf[2] = (val & 0x00FF);
|
||||||
i2cMasterTransmitTimeout(&I2CD1, STMPE811_ADDR, txbuf, 3, NULL, 0, MS2ST(STMPE811_TIMEOUT));
|
i2cMasterTransmitTimeout(&I2CD1, STMPE811_ADDR, txbuf, 3, NULL, 0, MS2ST(STMPE811_TIMEOUT));
|
||||||
}
|
}
|
||||||
|
|
||||||
i2cReleaseBus(&I2CD1);
|
i2cReleaseBus(&I2CD1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read the value of a certain register
|
* @brief Read the value of a certain register
|
||||||
*
|
*
|
||||||
* @param[in] reg The register address
|
* @param[in] reg The register address
|
||||||
* @param[in] n The amount of bytes (one or two)
|
* @param[in] n The amount of bytes (one or two)
|
||||||
*
|
*
|
||||||
* @return Data read from device (one byte or two depending on n param)
|
* @return Data read from device (one byte or two depending on n param)
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
static uint16_t read_reg(uint8_t reg, uint8_t n)
|
static uint16_t read_reg(uint8_t reg, uint8_t n)
|
||||||
{
|
{
|
||||||
uint8_t txbuf[1], rxbuf[2];
|
uint8_t txbuf[1], rxbuf[2];
|
||||||
uint16_t ret;
|
uint16_t ret;
|
||||||
|
|
||||||
rxbuf[0] = 0;
|
rxbuf[0] = 0;
|
||||||
rxbuf[1] = 0;
|
rxbuf[1] = 0;
|
||||||
|
|
||||||
i2cAcquireBus(&I2CD1);
|
i2cAcquireBus(&I2CD1);
|
||||||
|
|
||||||
txbuf[0] = reg;
|
txbuf[0] = reg;
|
||||||
i2cMasterTransmitTimeout(&I2CD1, STMPE811_ADDR, txbuf, 1, rxbuf, n, MS2ST(STMPE811_TIMEOUT));
|
i2cMasterTransmitTimeout(&I2CD1, STMPE811_ADDR, txbuf, 1, rxbuf, n, MS2ST(STMPE811_TIMEOUT));
|
||||||
|
|
||||||
if (n == 1) {
|
if (n == 1) {
|
||||||
ret = rxbuf[0];
|
ret = rxbuf[0];
|
||||||
} else if (n == 2) {
|
} else if (n == 2) {
|
||||||
ret = ((rxbuf[0] << 8) | (rxbuf[1] & 0xFF));
|
ret = ((rxbuf[0] << 8) | (rxbuf[1] & 0xFF));
|
||||||
}
|
}
|
||||||
|
|
||||||
i2cReleaseBus(&I2CD1);
|
i2cReleaseBus(&I2CD1);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void read_reg_n(uint8_t reg, uint8_t n, uint8_t *rxbuf)
|
static void read_reg_n(uint8_t reg, uint8_t n, uint8_t *rxbuf)
|
||||||
{
|
{
|
||||||
uint8_t txbuf[1];
|
uint8_t txbuf[1];
|
||||||
|
|
||||||
i2cAcquireBus(&I2CD1);
|
i2cAcquireBus(&I2CD1);
|
||||||
|
|
||||||
txbuf[0] = reg;
|
txbuf[0] = reg;
|
||||||
i2cMasterTransmitTimeout(&I2CD1, STMPE811_ADDR, txbuf, 1, rxbuf, n, MS2ST(STMPE811_TIMEOUT));
|
i2cMasterTransmitTimeout(&I2CD1, STMPE811_ADDR, txbuf, 1, rxbuf, n, MS2ST(STMPE811_TIMEOUT));
|
||||||
|
|
||||||
i2cReleaseBus(&I2CD1);
|
i2cReleaseBus(&I2CD1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
|
||||||
/** @} */
|
/** @} */
|
|
@ -1,59 +1,59 @@
|
||||||
/*
|
/*
|
||||||
* This file is subject to the terms of the GFX License. If a copy of
|
* 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:
|
* the license was not distributed with this file, you can obtain one at:
|
||||||
*
|
*
|
||||||
* http://ugfx.org/license.html
|
* http://ugfx.org/license.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file drivers/tdisp/HD44780/tdisp_lld_board_olimex_e407.h
|
* @file drivers/tdisp/HD44780/tdisp_lld_board_olimex_e407.h
|
||||||
* @brief TDISP driver subsystem board interface for the HD44780 display
|
* @brief TDISP driver subsystem board interface for the HD44780 display
|
||||||
*
|
*
|
||||||
* @addtogroup TDISP
|
* @addtogroup TDISP
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TDISP_LLD_BOARD_H
|
#ifndef _TDISP_LLD_BOARD_H
|
||||||
#define _TDISP_LLD_BOARD_H
|
#define _TDISP_LLD_BOARD_H
|
||||||
|
|
||||||
/* Configure these to match the hardware connections on your board */
|
/* Configure these to match the hardware connections on your board */
|
||||||
#define BUS_4BITS FALSE
|
#define BUS_4BITS FALSE
|
||||||
#define PORT_DATA GPIOG
|
#define PORT_DATA GPIOG
|
||||||
#define PORT_CTRL GPIOE
|
#define PORT_CTRL GPIOE
|
||||||
#define PIN_RS 0
|
#define PIN_RS 0
|
||||||
#define PIN_RW 1
|
#define PIN_RW 1
|
||||||
#define PIN_EN 2
|
#define PIN_EN 2
|
||||||
|
|
||||||
static void init_board(void) {
|
static void init_board(void) {
|
||||||
palSetGroupMode(PORT_CTRL, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetGroupMode(PORT_CTRL, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palSetGroupMode(PORT_DATA, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetGroupMode(PORT_DATA, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palClearPad(PORT_CTRL, PIN_RW);
|
palClearPad(PORT_CTRL, PIN_RW);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void writeToLCD(uint8_t data) {
|
static void writeToLCD(uint8_t data) {
|
||||||
palWritePort(PORT_DATA, data);
|
palWritePort(PORT_DATA, data);
|
||||||
palSetPad(PORT_CTRL, PIN_EN);
|
palSetPad(PORT_CTRL, PIN_EN);
|
||||||
gfxSleepMicroseconds(1);
|
gfxSleepMicroseconds(1);
|
||||||
palClearPad(PORT_CTRL, PIN_EN);
|
palClearPad(PORT_CTRL, PIN_EN);
|
||||||
gfxSleepMicroseconds(5);
|
gfxSleepMicroseconds(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_cmd(uint8_t data) {
|
static void write_cmd(uint8_t data) {
|
||||||
palClearPad(PORT_CTRL, PIN_RS);
|
palClearPad(PORT_CTRL, PIN_RS);
|
||||||
#if BUS_4BITS
|
#if BUS_4BITS
|
||||||
writeToLCD(data>>4);
|
writeToLCD(data>>4);
|
||||||
#endif
|
#endif
|
||||||
writeToLCD(data);
|
writeToLCD(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_data(uint8_t data) {
|
static void write_data(uint8_t data) {
|
||||||
palSetPad(PORT_CTRL, PIN_RS);
|
palSetPad(PORT_CTRL, PIN_RS);
|
||||||
#if BUS_4BITS
|
#if BUS_4BITS
|
||||||
writeToLCD(data>>4);
|
writeToLCD(data>>4);
|
||||||
#endif
|
#endif
|
||||||
writeToLCD(data);
|
writeToLCD(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _TDISP_LLD_BOARD_H */
|
#endif /* _TDISP_LLD_BOARD_H */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -1,122 +1,122 @@
|
||||||
/*
|
/*
|
||||||
* This file is subject to the terms of the GFX License. If a copy of
|
* 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:
|
* the license was not distributed with this file, you can obtain one at:
|
||||||
*
|
*
|
||||||
* http://ugfx.org/license.html
|
* http://ugfx.org/license.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file drivers/tdisp/HD44780/tdisp_lld_board_st_stm32f4_discovery.h
|
* @file drivers/tdisp/HD44780/tdisp_lld_board_st_stm32f4_discovery.h
|
||||||
* @brief TDISP driver subsystem board interface for the HD44780 display
|
* @brief TDISP driver subsystem board interface for the HD44780 display
|
||||||
*
|
*
|
||||||
* @addtogroup TDISP
|
* @addtogroup TDISP
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _TDISP_LLD_BOARD_H
|
#ifndef _TDISP_LLD_BOARD_H
|
||||||
#define _TDISP_LLD_BOARD_H
|
#define _TDISP_LLD_BOARD_H
|
||||||
|
|
||||||
/* Configure these to match the hardware connections on your board */
|
/* Configure these to match the hardware connections on your board */
|
||||||
#define BUS_4BITS TRUE
|
#define BUS_4BITS TRUE
|
||||||
|
|
||||||
/* Configure the bitoffset in the dataport so they match with the
|
/* Configure the bitoffset in the dataport so they match with the
|
||||||
* hardware pins. An offset of 0 means bit0 stays at bit0 of the dataport.
|
* hardware pins. An offset of 0 means bit0 stays at bit0 of the dataport.
|
||||||
* If the offset is set to 3, bit0 of the nibble will be positioned at
|
* If the offset is set to 3, bit0 of the nibble will be positioned at
|
||||||
* P[A..G]3 of the hardware-port.
|
* P[A..G]3 of the hardware-port.
|
||||||
*/
|
*/
|
||||||
#define hardware_offset 3
|
#define hardware_offset 3
|
||||||
|
|
||||||
/* The port where the data is sent to. In the
|
/* The port where the data is sent to. In the
|
||||||
* low-leveldriver het hardware_offset is taken
|
* low-leveldriver het hardware_offset is taken
|
||||||
* into account. If for example the hardware_offset
|
* into account. If for example the hardware_offset
|
||||||
* is set to 3, then de data will be sent to
|
* is set to 3, then de data will be sent to
|
||||||
* PE3, PE4, PE5 en PE6, if the dataport where GPIOE.
|
* PE3, PE4, PE5 en PE6, if the dataport where GPIOE.
|
||||||
*/
|
*/
|
||||||
#define PORT_DATA GPIOE
|
#define PORT_DATA GPIOE
|
||||||
|
|
||||||
/* The port used to controle the controle lines of
|
/* The port used to controle the controle lines of
|
||||||
* the display.
|
* the display.
|
||||||
*/
|
*/
|
||||||
#define PORT_CTRL GPIOD
|
#define PORT_CTRL GPIOD
|
||||||
/* Pin to controle the R/S-line of the display */
|
/* Pin to controle the R/S-line of the display */
|
||||||
#define PIN_RS 0
|
#define PIN_RS 0
|
||||||
/* Pin to controle the EN-line of the display */
|
/* Pin to controle the EN-line of the display */
|
||||||
#define PIN_EN 1
|
#define PIN_EN 1
|
||||||
/* Pin to controle the R/W-pin of the display.
|
/* Pin to controle the R/W-pin of the display.
|
||||||
* If reading of the display is not used disable
|
* If reading of the display is not used disable
|
||||||
* reading in the gfxconf.h and put a dummy value here
|
* reading in the gfxconf.h and put a dummy value here
|
||||||
* as it will not be used.
|
* as it will not be used.
|
||||||
*/
|
*/
|
||||||
#define PIN_RW 7
|
#define PIN_RW 7
|
||||||
|
|
||||||
|
|
||||||
static void init_board(void) {
|
static void init_board(void) {
|
||||||
/* Initialize the ports for data and controle-lines */
|
/* Initialize the ports for data and controle-lines */
|
||||||
palSetGroupMode(PORT_CTRL, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetGroupMode(PORT_CTRL, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palSetGroupMode(PORT_DATA, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetGroupMode(PORT_DATA, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
/* Set alle controle pins to low */
|
/* Set alle controle pins to low */
|
||||||
palClearPad(PORT_CTRL, PIN_RS);
|
palClearPad(PORT_CTRL, PIN_RS);
|
||||||
palClearPad(PORT_CTRL, PIN_EN);
|
palClearPad(PORT_CTRL, PIN_EN);
|
||||||
#if TDISP_NEED_READ
|
#if TDISP_NEED_READ
|
||||||
palClearPad(PORT_CTRL, PIN_RW);
|
palClearPad(PORT_CTRL, PIN_RW);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is the low-level routine for sending the bits
|
/* This is the low-level routine for sending the bits
|
||||||
* to the LCD-display. This routine shifts
|
* to the LCD-display. This routine shifts
|
||||||
* the bits so they match the hardware port.
|
* the bits so they match the hardware port.
|
||||||
*/
|
*/
|
||||||
static void writeToLCD(uint8_t data) {
|
static void writeToLCD(uint8_t data) {
|
||||||
palWritePort(PORT_DATA, data<<hardware_offset);
|
palWritePort(PORT_DATA, data<<hardware_offset);
|
||||||
palSetPad(PORT_CTRL, PIN_EN);
|
palSetPad(PORT_CTRL, PIN_EN);
|
||||||
gfxSleepMicroseconds(1);
|
gfxSleepMicroseconds(1);
|
||||||
palClearPad(PORT_CTRL, PIN_EN);
|
palClearPad(PORT_CTRL, PIN_EN);
|
||||||
/* wait a little while so that de display can process the data */
|
/* wait a little while so that de display can process the data */
|
||||||
gfxSleepMicroseconds(5);
|
gfxSleepMicroseconds(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Writes a command to the display. The
|
/* Writes a command to the display. The
|
||||||
* RS-line is pulled low and than the
|
* RS-line is pulled low and than the
|
||||||
* data is send.
|
* data is send.
|
||||||
*/
|
*/
|
||||||
static void write_cmd(uint8_t data) {
|
static void write_cmd(uint8_t data) {
|
||||||
palClearPad(PORT_CTRL, PIN_RS);
|
palClearPad(PORT_CTRL, PIN_RS);
|
||||||
#if BUS_4BITS
|
#if BUS_4BITS
|
||||||
/* first send the high-nibble */
|
/* first send the high-nibble */
|
||||||
writeToLCD(data>>4);
|
writeToLCD(data>>4);
|
||||||
#endif
|
#endif
|
||||||
/* send the low-nibble */
|
/* send the low-nibble */
|
||||||
#if BUS_4BITS
|
#if BUS_4BITS
|
||||||
/* in 4-bit mode the high-nibble is zeroed out */
|
/* in 4-bit mode the high-nibble is zeroed out */
|
||||||
writeToLCD(data & 0x0F);
|
writeToLCD(data & 0x0F);
|
||||||
#else
|
#else
|
||||||
writeToLCD(data);
|
writeToLCD(data);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// static void write_initcmd(uint8_t data) {
|
// static void write_initcmd(uint8_t data) {
|
||||||
// write_cmd(data);
|
// write_cmd(data);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/* Write data to the display. The
|
/* Write data to the display. The
|
||||||
* RS-line is pulled high and than the
|
* RS-line is pulled high and than the
|
||||||
* data is send.
|
* data is send.
|
||||||
*/
|
*/
|
||||||
static void write_data(uint8_t data) {
|
static void write_data(uint8_t data) {
|
||||||
palSetPad(PORT_CTRL, PIN_RS);
|
palSetPad(PORT_CTRL, PIN_RS);
|
||||||
#if BUS_4BITS
|
#if BUS_4BITS
|
||||||
/* first send the high-nibble */
|
/* first send the high-nibble */
|
||||||
writeToLCD(data>>4);
|
writeToLCD(data>>4);
|
||||||
#endif
|
#endif
|
||||||
/* send the low-nibble */
|
/* send the low-nibble */
|
||||||
#if BUS_4BITS
|
#if BUS_4BITS
|
||||||
/* in 4-bit mode the high-nibble is zeroed out */
|
/* in 4-bit mode the high-nibble is zeroed out */
|
||||||
writeToLCD(data & 0x0F);
|
writeToLCD(data & 0x0F);
|
||||||
#else
|
#else
|
||||||
writeToLCD(data);
|
writeToLCD(data);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _TDISP_LLD_BOARD_H */
|
#endif /* _TDISP_LLD_BOARD_H */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -1,130 +0,0 @@
|
||||||
/*
|
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file drivers/gdisp/ILI9341/board_ILI9341_mikromedia.h
|
|
||||||
* @brief GDISP Graphics Driver subsystem low level driver source for the ILI9341 display.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _GDISP_LLD_BOARD_H
|
|
||||||
#define _GDISP_LLD_BOARD_H
|
|
||||||
|
|
||||||
// For a multiple display configuration we would put all this in a structure and then
|
|
||||||
// set g->board to that structure.
|
|
||||||
#define SET_CS palSetPad(GPIOE, GPIOE_LCD_CS);
|
|
||||||
#define CLR_CS palClearPad(GPIOE, GPIOE_LCD_CS);
|
|
||||||
#define SET_RS palSetPad(GPIOE, GPIOE_LCD_RS);
|
|
||||||
#define CLR_RS palClearPad(GPIOE, GPIOE_LCD_RS);
|
|
||||||
#define SET_WR palSetPad(GPIOE, GPIOE_PMWR);
|
|
||||||
#define CLR_WR palClearPad(GPIOE, GPIOE_PMWR);
|
|
||||||
#define SET_RD palSetPad(GPIOE, GPIOE_PMRD);
|
|
||||||
#define CLR_RD palClearPad(GPIOE, GPIOE_PMRD);
|
|
||||||
|
|
||||||
static inline void init_board(GDisplay *g) {
|
|
||||||
|
|
||||||
// As we are not using multiple displays we set g->board to NULL as we don't use it.
|
|
||||||
g->board = 0;
|
|
||||||
|
|
||||||
switch(g->controllerdisplay) {
|
|
||||||
case 0: // Set up for Display 0
|
|
||||||
/* Configure the pins to a well know state */
|
|
||||||
SET_RS;
|
|
||||||
SET_RD;
|
|
||||||
SET_WR;
|
|
||||||
CLR_CS;
|
|
||||||
|
|
||||||
/* Hardware reset */
|
|
||||||
palSetPad(GPIOE, GPIOE_LCD_RST);
|
|
||||||
chThdSleepMilliseconds(100);
|
|
||||||
palClearPad(GPIOE, GPIOE_LCD_RST);
|
|
||||||
chThdSleepMilliseconds(100);
|
|
||||||
palSetPad(GPIOE, GPIOE_LCD_RST);
|
|
||||||
chThdSleepMilliseconds(100);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void post_init_board(GDisplay *g) {
|
|
||||||
(void) g;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void setpin_reset(GDisplay *g, bool_t state) {
|
|
||||||
(void) g;
|
|
||||||
if(state) {
|
|
||||||
// reset lcd
|
|
||||||
palClearPad(GPIOE, GPIOE_LCD_RST);
|
|
||||||
} else {
|
|
||||||
palSetPad(GPIOE, GPIOE_LCD_RST);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void set_backlight(GDisplay *g, uint8_t percent) {
|
|
||||||
(void) g;
|
|
||||||
// TODO: can probably pwm this
|
|
||||||
if(percent) {
|
|
||||||
// turn back light on
|
|
||||||
palSetPad(GPIOE, GPIOE_LCD_BLED);
|
|
||||||
} else {
|
|
||||||
// turn off
|
|
||||||
palClearPad(GPIOE, GPIOE_LCD_BLED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void acquire_bus(GDisplay *g) {
|
|
||||||
(void) g;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void release_bus(GDisplay *g) {
|
|
||||||
(void) g;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Short delay
|
|
||||||
*
|
|
||||||
* @param[in] dly Length of delay
|
|
||||||
*
|
|
||||||
* @notapi
|
|
||||||
*/
|
|
||||||
static inline void ili9341_delay(uint16_t dly) {
|
|
||||||
static uint16_t i;
|
|
||||||
for(i = 0; i < dly; i++)
|
|
||||||
asm("nop");
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void write_index(GDisplay *g, uint16_t index) {
|
|
||||||
(void) g;
|
|
||||||
palWriteGroup(GPIOE, 0x00FF, 0, index);
|
|
||||||
CLR_RS; CLR_WR; ili9341_delay(1); SET_WR; ili9341_delay(1); SET_RS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void write_data(GDisplay *g, uint16_t data) {
|
|
||||||
(void) g;
|
|
||||||
palWriteGroup(GPIOE, 0x00FF, 0, data);
|
|
||||||
CLR_WR; ili9341_delay(1); SET_WR; ili9341_delay(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void setreadmode(GDisplay *g) {
|
|
||||||
(void) g;
|
|
||||||
// change pin mode to digital input
|
|
||||||
palSetGroupMode(GPIOE, PAL_WHOLE_PORT, 0, PAL_MODE_INPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void setwritemode(GDisplay *g) {
|
|
||||||
(void) g;
|
|
||||||
// change pin mode back to digital output
|
|
||||||
palSetGroupMode(GPIOE, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint16_t read_data(GDisplay *g) {
|
|
||||||
CLR_RD;
|
|
||||||
value = palReadPort(GPIOE);
|
|
||||||
value = palReadPort(GPIOE);
|
|
||||||
SET_RD;
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _GDISP_LLD_BOARD_H */
|
|
|
@ -21,15 +21,7 @@
|
||||||
|
|
||||||
#include "ginput/lld/mouse.h"
|
#include "ginput/lld/mouse.h"
|
||||||
|
|
||||||
#if defined(GINPUT_MOUSE_USE_CUSTOM_BOARD) && GINPUT_MOUSE_USE_CUSTOM_BOARD
|
#include "ginput_lld_mouse_board.h"
|
||||||
#include "ginput_lld_mouse_board.h"
|
|
||||||
#elif defined(BOARD_OLIMEX_STM32_LCD)
|
|
||||||
#include "ginput_lld_mouse_board_olimex_stm32_lcd.h"
|
|
||||||
#elif defined(BOARD_OLIMEX_PIC32MX_LCD)
|
|
||||||
#include "ginput_lld_mouse_board_olimex_pic32mx_lcd.h"
|
|
||||||
#else
|
|
||||||
#include "ginput_lld_mouse_board.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static uint16_t sampleBuf[7];
|
static uint16_t sampleBuf[7];
|
||||||
static coord_t lastx, lasty;
|
static coord_t lastx, lasty;
|
||||||
|
|
|
@ -17,15 +17,7 @@
|
||||||
|
|
||||||
#if GFX_USE_TDISP /*|| defined(__DOXYGEN__)*/
|
#if GFX_USE_TDISP /*|| defined(__DOXYGEN__)*/
|
||||||
|
|
||||||
/* check first if the user has defined his/her own lowlevel-board file */
|
#include "tdisp_lld_board.h"
|
||||||
#if defined(TDISP_USE_CUSTOM_BOARD) && TDISP_USE_CUSTOM_BOARD
|
|
||||||
/* Include the user supplied board definitions */
|
|
||||||
#include "tdisp_lld_board.h"
|
|
||||||
#elif defined(BOARD_OLIMEX_STM32_E407)
|
|
||||||
#include "tdisp_lld_board_olimex_e407.h"
|
|
||||||
#elif defined(BOARD_ST_STM32F4_DISCOVERY)
|
|
||||||
#include "tdisp_lld_board_example.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Controller Specific Properties */
|
/* Controller Specific Properties */
|
||||||
#define CUSTOM_CHAR_COUNT 8
|
#define CUSTOM_CHAR_COUNT 8
|
||||||
|
|
Loading…
Add table
Reference in a new issue