added touchpad support
This commit is contained in:
parent
7a6b2dc0de
commit
08511c7839
60
touchpad.c
Executable file
60
touchpad.c
Executable file
@ -0,0 +1,60 @@
|
||||
#include "touchpad.h"
|
||||
|
||||
static void spicb(SPIDriver *spip);
|
||||
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(void) {
|
||||
spiStart(&SPID1, &spicfg);
|
||||
}
|
||||
|
||||
void tpWriteData(uint8_t data) {
|
||||
uint16_t tx = 0xAA;
|
||||
|
||||
SET_CS(0);
|
||||
spiSend(&SPID1, 1, &tx);
|
||||
SET_CS(1);
|
||||
}
|
||||
|
||||
uint16_t tpReadData(void) {
|
||||
|
||||
}
|
||||
|
||||
uint16_t tpReadX(void) {
|
||||
uint8_t txbuf[1];
|
||||
uint8_t rxbuf[2];
|
||||
uint16_t x;
|
||||
|
||||
txbuf[0] = 0x90;
|
||||
SET_CS(0);
|
||||
spiSend(&SPID1, 1, txbuf);
|
||||
spiReceive(&SPID1, 2, rxbuf);
|
||||
SET_CS(1);
|
||||
|
||||
x = rxbuf[0] << 4;
|
||||
x |= rxbuf[1] >> 4;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
uint16_t tpReadY(void) {
|
||||
uint8_t txbuf[1];
|
||||
uint8_t rxbuf[2];
|
||||
uint16_t y;
|
||||
|
||||
txbuf[0] = 0xd0;
|
||||
SET_CS(0);
|
||||
spiSend(&SPID1, 1, txbuf);
|
||||
spiReceive(&SPID1, 2, rxbuf);
|
||||
SET_CS(1);
|
||||
|
||||
y = rxbuf[0] << 4;
|
||||
y |= rxbuf[1] >> 4;
|
||||
|
||||
return y;
|
||||
}
|
||||
|
15
touchpad.h
Executable file
15
touchpad.h
Executable file
@ -0,0 +1,15 @@
|
||||
#ifndef TOUCHPAD_H
|
||||
#define TOUCHPAD_H
|
||||
|
||||
#include "ch.h"
|
||||
#include "hal.h"
|
||||
|
||||
#define SET_CS(a) (TP_PORT->BSRR = 1 << (TP_CS + (a ? 0 : 16)))
|
||||
|
||||
void tpInit(void);
|
||||
void tpWriteData(uint8_t data);
|
||||
uint16_t tpReadData(void);
|
||||
uint16_t tpReadX(void);
|
||||
uint16_t tpReadY(void);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user