#include "touchpad.h" #include "glcd.h" static struct cal cal = { 1, 1, 0, 0 }; static const SPIConfig spicfg = { NULL, GPIOC, TP_CS, SPI_CR1_SPE | SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0, }; void tpInit(SPIDriver *spip) { spiStart(spip, &spicfg); } static __inline uint16_t readX(void) { uint8_t txbuf[1]; uint8_t rxbuf[2]; uint16_t x; txbuf[0] = 0xd0; SET_CS(0); spiSend(&SPID1, 1, txbuf); spiReceive(&SPID1, 2, rxbuf); SET_CS(1); x = rxbuf[0] << 4; x |= rxbuf[1] >> 4; return x; } static __inline uint16_t readY(void) { uint8_t txbuf[1]; uint8_t rxbuf[2]; uint16_t y; txbuf[0] = 0x90; SET_CS(0); spiSend(&SPID1, 1, txbuf); spiReceive(&SPID1, 2, rxbuf); SET_CS(1); y = rxbuf[0] << 4; y |= rxbuf[1] >> 4; return y; } uint8_t tpIRQ(void) { return (!palReadPad(TP_PORT, TP_IRQ)); } static uint16_t tpReadRealX(void) { uint32_t results = 0; uint16_t i, x; for(i=0; i