Restructure touch driver read_touch

This commit is contained in:
fvanroie 2021-10-29 00:37:45 +02:00
parent eb9fb22a39
commit 8c10cf6093
16 changed files with 266 additions and 154 deletions

View File

@ -67,10 +67,10 @@ void FT5206_init()
{
LOG_INFO(TAG_DRVR, F("Touch SDA : %d"), TOUCH_SDA);
LOG_INFO(TAG_DRVR, F("Touch SCL : %d"), TOUCH_SCL);
LOG_INFO(TAG_DRVR, F("Touch freq. : %d"), TOUCH_FREQUENCY);
LOG_INFO(TAG_DRVR, F("Touch freq. : %d"), I2C_TOUCH_FREQUENCY);
LOG_INFO(TAG_DRVR, F("Touch address : %02x"), FT5206_address);
Wire1.begin(TOUCH_SDA, TOUCH_SCL, TOUCH_FREQUENCY);
Wire1.begin(TOUCH_SDA, TOUCH_SCL, I2C_TOUCH_FREQUENCY);
scan(Wire1);
touchpanel = new FocalTech_Class();

View File

@ -62,7 +62,7 @@ void FT6336U_init()
LOG_INFO(TAG_DRVR, F("Touch SDA : %d"), TOUCH_SDA);
LOG_INFO(TAG_DRVR, F("Touch SCL : %d"), TOUCH_SCL);
LOG_INFO(TAG_DRVR, F("Touch freq. : %d"), TOUCH_FREQUENCY);
LOG_INFO(TAG_DRVR, F("Touch freq. : %d"), I2C_TOUCH_FREQUENCY);
LOG_INFO(TAG_DRVR, F("Touch address : %x"), I2C_ADDR_FT6336U);
touchpanel = new FT6336U(TOUCH_SDA, TOUCH_SCL, TOUCH_RST, TOUCH_IRQ);

View File

@ -40,7 +40,7 @@ void LovyanGfx::init(int w, int h)
#ifdef USE_DMA_TO_TFT
int dma_channel = 1; // Set the DMA channel (1 or 2. 0=disable)
#else
int dma_channel = 1; // Set the DMA channel (1 or 2. 0=disable)
int dma_channel = 0; // Set the DMA channel (1 or 2. 0=disable)
#endif
uint32_t tft_driver = 0;
@ -73,7 +73,7 @@ else if (tft_driver == 0x7796)
{ // バス制御の設定を行います。
auto bus = (lgfx::v1::Bus_SPI*)tft._bus_instance;
auto cfg = bus->config(); // バス設定用の構造体を取得します。
cfg.spi_host = VSPI_HOST; // 使用するSPIを選択 (VSPI_HOST or HSPI_HOST)
cfg.spi_host = HSPI_HOST; // 使用するSPIを選択 (VSPI_HOST or HSPI_HOST)
cfg.spi_mode = 0; // SPI通信モードを設定 (0 ~ 3)
cfg.freq_write = SPI_FREQUENCY; // 送信時のSPIクロック (最大80MHz, 80MHzを整数で割った値に丸められます)
cfg.freq_read = SPI_READ_FREQUENCY; // 受信時のSPIクロック
@ -137,7 +137,7 @@ else if (tft_driver == 0x7796)
cfg.pin_int = -1; // INTが接続されているピン番号
cfg.bus_shared = true; // 画面と共通のバスを使用している場合 trueを設定
cfg.offset_rotation = 0; // 表示とタッチの向きのが一致しない場合の調整 0~7の値で設定
cfg.spi_host = VSPI_HOST; // 使用するSPIを選択 (HSPI_HOST or VSPI_HOST)
cfg.spi_host = HSPI_HOST; // 使用するSPIを選択 (HSPI_HOST or VSPI_HOST)
cfg.pin_sclk = TFT_SCLK; // SCLKが接続されているピン番号
cfg.pin_mosi = TFT_MOSI; // MOSIが接続されているピン番号
cfg.pin_miso = TFT_MISO; // MISOが接続されているピン番号

View File

@ -18,29 +18,26 @@ extern uint8_t hasp_sleep_state;
#define MINPRESSURE 200
#define MAXPRESSURE 2400
const int XP=TFT_D6,XM=TFT_DC,YP=TFT_WR,YM=TFT_D7; //ID=0x9341
const int TS_LEFT=560,TS_RT=3670,TS_TOP=3850,TS_BOT=580;
int max_x = 4095,max_y=4095;
const int XP = TFT_D6, XM = TFT_DC, YP = TFT_WR, YM = TFT_D7; // ID=0x9341
const int TS_LEFT = 560, TS_RT = 3670, TS_TOP = 3850, TS_BOT = 580;
int max_x = 4095, max_y = 4095;
static TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
static TSPoint tp;
tp = ts.getPoint();
if (tp.z < MINPRESSURE){
data->state = LV_INDEV_STATE_REL;
}else{
data->point.x = map(tp.x,TS_LEFT,TS_RT,0,max_x);
data->point.y = map(tp.y,TS_BOT,TS_TOP,max_y,0);
data->state = LV_INDEV_STATE_PR;
}
// IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
// {
// static TSPoint tp;
// tp = ts.getPoint();
// if(tp.z < MINPRESSURE) {
// data->state = LV_INDEV_STATE_REL;
// } else {
// data->point.x = map(tp.x, TS_LEFT, TS_RT, 0, max_x);
// data->point.y = map(tp.y, TS_BOT, TS_TOP, max_y, 0);
// data->state = LV_INDEV_STATE_PR;
// }
return false;
/*Return `false` because we are not buffering and no more data to read*/
// return false;
}
// return false;
// }
namespace dev {
@ -52,10 +49,20 @@ class AnalogTouch : public BaseTouch {
max_x = w;
max_y = h;
}
IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
return touch_read(indev_driver, data);
static TSPoint tp;
tp = ts.getPoint();
if(tp.z < MINPRESSURE) {
data->state = LV_INDEV_STATE_REL;
} else {
data->point.x = map(tp.x, TS_LEFT, TS_RT, 0, max_x);
data->point.y = map(tp.y, TS_BOT, TS_TOP, max_y, 0);
data->state = LV_INDEV_STATE_PR;
}
return false;
}
};

View File

@ -22,65 +22,34 @@ extern uint8_t hasp_sleep_state;
FT6336U* ft6336u_touch;
// Read touch points
HASP_ATTRIBUTE_FAST_MEM bool FT6336U_getXY(int16_t* touchX, int16_t* touchY)
{
if(ft6336u_touch->read_touch_number() == 1) {
*touchX = ft6336u_touch->read_touch1_x();
*touchY = ft6336u_touch->read_touch1_y();
return true;
} else {
return false;
}
}
// HASP_ATTRIBUTE_FAST_MEM bool FT6336U_getXY(int16_t* touchX, int16_t* touchY)
// {
// if(ft6336u_touch->read_touch_number() == 1) {
// *touchX = ft6336u_touch->read_touch1_x();
// *touchY = ft6336u_touch->read_touch1_y();
// return true;
// } else {
// return false;
// }
// }
IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
// IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
// {
if(ft6336u_touch->read_touch_number() == 1) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
// if(ft6336u_touch->read_touch_number() == 1) {
// if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->point.x = ft6336u_touch->read_touch1_x();
data->point.y = ft6336u_touch->read_touch1_y();
data->state = LV_INDEV_STATE_PR;
// data->point.x = ft6336u_touch->read_touch1_x();
// data->point.y = ft6336u_touch->read_touch1_y();
// data->state = LV_INDEV_STATE_PR;
} else {
data->state = LV_INDEV_STATE_REL;
}
// } else {
// data->state = LV_INDEV_STATE_REL;
// }
/*Return `false` because we are not buffering and no more data to read*/
return false;
}
static inline void FT6336U_drv_init()
{
LOG_INFO(TAG_DRVR, F("Touch SDA : %d"), TOUCH_SDA);
LOG_INFO(TAG_DRVR, F("Touch SCL : %d"), TOUCH_SCL);
LOG_INFO(TAG_DRVR, F("Touch freq. : %d"), TOUCH_FREQUENCY);
LOG_INFO(TAG_DRVR, F("Touch address : %x"), I2C_ADDR_FT6336U);
ft6336u_touch = new FT6336U(TOUCH_SDA, TOUCH_SCL, TOUCH_RST, TOUCH_IRQ);
ft6336u_touch->begin();
// From: M5Core2/src/M5Touch.cpp
// By default, the FT6336 will pulse the INT line for every touch
// event. But because it shares the Wire1 TwoWire/I2C with other
// devices, we cannot easily create an interrupt service routine to
// handle these events. So instead, we set the INT wire to polled mode,
// so it simply goes low as long as there is at least one valid touch.
// ft6336u_touch->writeByte(0xA4, 0x00);
Wire1.beginTransmission(I2C_ADDR_FT6336U);
Wire1.write(0xA4); // address
Wire1.write(0x00); // data
Wire1.endTransmission();
touch_scan(Wire1);
if(ft6336u_touch->read_chip_id() != 0) {
LOG_INFO(TAG_DRVR, F("FT6336U touch driver started chipid: %d"), ft6336u_touch->read_chip_id());
} else {
LOG_ERROR(TAG_DRVR, F("FT6336U touch driver failed to start"));
}
}
// /*Return `false` because we are not buffering and no more data to read*/
// return false;
// }
namespace dev {
@ -89,18 +58,42 @@ class TouchFt6336u : public BaseTouch {
public:
void init(int w, int h)
{
FT6336U_drv_init();
LOG_INFO(TAG_DRVR, F("Touch SDA : %d"), TOUCH_SDA);
LOG_INFO(TAG_DRVR, F("Touch SCL : %d"), TOUCH_SCL);
LOG_INFO(TAG_DRVR, F("Touch freq. : %d"), I2C_TOUCH_FREQUENCY);
LOG_INFO(TAG_DRVR, F("Touch address : %x"), I2C_ADDR_FT6336U);
ft6336u_touch = new FT6336U(TOUCH_SDA, TOUCH_SCL, TOUCH_RST, TOUCH_IRQ);
ft6336u_touch->begin();
// From: M5Core2/src/M5Touch.cpp
// By default, the FT6336 will pulse the INT line for every touch
// event. But because it shares the Wire1 TwoWire/I2C with other
// devices, we cannot easily create an interrupt service routine to
// handle these events. So instead, we set the INT wire to polled mode,
// so it simply goes low as long as there is at least one valid touch.
// ft6336u_touch->writeByte(0xA4, 0x00);
Wire1.beginTransmission(I2C_ADDR_FT6336U);
Wire1.write(0xA4); // address
Wire1.write(0x00); // data
Wire1.endTransmission();
touch_scan(Wire1);
if(ft6336u_touch->read_chip_id() != 0) {
LOG_INFO(TAG_DRVR, F("FT6336U touch driver started chipid: %d"), ft6336u_touch->read_chip_id());
} else {
LOG_ERROR(TAG_DRVR, F("FT6336U touch driver failed to start"));
}
}
IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
int16_t touchX;
int16_t touchY;
if(FT6336U_getXY(&touchX, &touchY)) {
if(ft6336u_touch->read_touch_number() == 1) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->point.x = touchX;
data->point.y = touchY;
data->point.x = ft6336u_touch->read_touch1_x();
data->point.y = ft6336u_touch->read_touch1_y();
data->state = LV_INDEV_STATE_PR;
} else {

View File

@ -38,28 +38,28 @@ IRAM_ATTR void GT911_setXY(int8_t contacts, GTPoint* points)
// }
}
IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
// LOG_VERBOSE(TAG_GUI, F("Contacts: %d"), GT911_num_touches);
static GTPoint points[5];
// IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
// {
// // LOG_VERBOSE(TAG_GUI, F("Contacts: %d"), GT911_num_touches);
// static GTPoint points[5];
if(touch.readInput((uint8_t*)&points) > 0) {
// if(touch.readInput((uint8_t*)&points) > 0) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
// if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->point.x = points[0].x;
data->point.y = points[0].y;
data->state = LV_INDEV_STATE_PR;
// data->point.x = points[0].x;
// data->point.y = points[0].y;
// data->state = LV_INDEV_STATE_PR;
} else {
data->state = LV_INDEV_STATE_REL;
}
// } else {
// data->state = LV_INDEV_STATE_REL;
// }
touch.loop(); // reset IRQ
// touch.loop(); // reset IRQ
/*Return `false` because we are not buffering and no more data to read*/
return false;
}
// /*Return `false` because we are not buffering and no more data to read*/
// return false;
// }
namespace dev {
@ -68,7 +68,25 @@ class TouchGt911 : public BaseTouch {
public:
IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
return touch_read(indev_driver, data);
// LOG_VERBOSE(TAG_GUI, F("Contacts: %d"), GT911_num_touches);
static GTPoint points[5];
if(touch.readInput((uint8_t*)&points) > 0) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->point.x = points[0].x;
data->point.y = points[0].y;
data->state = LV_INDEV_STATE_PR;
} else {
data->state = LV_INDEV_STATE_REL;
}
touch.loop(); // reset IRQ
/*Return `false` because we are not buffering and no more data to read*/
return false;
}
void init(int w, int h)

View File

@ -0,0 +1,80 @@
/* MIT License - Copyright (c) 2019-2021 Francis Van Roie
For full license information read the LICENSE file in the project folder */
#ifndef HASP_LOVYANGFX_TOUCH_DRIVER_H
#define HASP_LOVYANGFX_TOUCH_DRIVER_H
#ifdef ARDUINO
#include "Arduino.h"
#include "touch_driver.h" // base class
#include "dev/device.h" // for haspTft
#include "drv/tft/tft_driver.h"
#include "../../hasp/hasp.h" // for hasp_sleep_state
extern uint8_t hasp_sleep_state;
// IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
// {
// if(haspTft.tft.getTouch((uint16_t*)&data->point.x, (uint16_t*)&data->point.y, 300)) {
// if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
// data->state = LV_INDEV_STATE_PR;
// } else {
// data->state = LV_INDEV_STATE_REL;
// }
// /*Return `false` because we are not buffering and no more data to read*/
// return false;
// }
namespace dev {
class TouchLovyanGfx : public BaseTouch {
public:
static IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
int16_t touchX = 0;
int16_t touchY = 0;
if(haspTft.tft.getTouch((uint16_t*)&touchX, (uint16_t*)&touchY, 300)) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->point.x = touchX;
data->point.y = touchY;
data->state = LV_INDEV_STATE_PR;
} else {
data->state = LV_INDEV_STATE_REL;
}
/*Return `false` because we are not buffering and no more data to read*/
return false;
}
void calibrate(uint16_t* calData)
{
haspTft.tft.fillScreen(TFT_BLACK);
haspTft.tft.setCursor(20, 0);
haspTft.tft.setTextFont(1);
haspTft.tft.setTextSize(1);
haspTft.tft.setTextColor(TFT_WHITE, TFT_BLACK);
// tft.println(PSTR("Touch corners as indicated"));
haspTft.tft.setTextFont(1);
delay(500);
haspTft.tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15);
haspTft.tft.setTouch(calData);
}
};
} // namespace dev
using dev::TouchLovyanGfx;
extern dev::TouchLovyanGfx haspTouch;
#endif // ARDUINO
#endif // HASP_LOVYANGFX_TOUCH_DRIVER_H

View File

@ -25,33 +25,33 @@ extern uint8_t hasp_sleep_state;
static Adafruit_STMPE610 stmpe610_touchpanel = Adafruit_STMPE610(TOUCH_CS);
bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
data->state = LV_INDEV_STATE_REL;
// bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
// {
// data->state = LV_INDEV_STATE_REL;
// while touched, but the state is released => read next point
while(data->state == LV_INDEV_STATE_REL && stmpe610_touchpanel.touched()) {
// // while touched, but the state is released => read next point
// while(data->state == LV_INDEV_STATE_REL && stmpe610_touchpanel.touched()) {
TS_Point point = stmpe610_touchpanel.getPoint();
Log.trace(TAG_DRVR, F("STMPE610: x=%i y=%i z=%i"), point.x, point.y, point.z);
// TS_Point point = stmpe610_touchpanel.getPoint();
// Log.trace(TAG_DRVR, F("STMPE610: x=%i y=%i z=%i"), point.x, point.y, point.z);
if(point.z && point.x < 4096 && point.y < 4096) { // valid reading
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->state = LV_INDEV_STATE_PR;
// if(point.z && point.x < 4096 && point.y < 4096) { // valid reading
// if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
// data->state = LV_INDEV_STATE_PR;
#if HX8357D_DRIVER == 1
data->point.x = map(point.x, TS_MINX, TS_MAXX, TFT_WIDTH, 0);
data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT);
#else
data->point.x = map(point.x, TS_MINX, TS_MAXX, 0, TFT_WIDTH);
data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT);
#endif
}
}
// #if HX8357D_DRIVER == 1
// data->point.x = map(point.x, TS_MINX, TS_MAXX, TFT_WIDTH, 0);
// data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT);
// #else
// data->point.x = map(point.x, TS_MINX, TS_MAXX, 0, TFT_WIDTH);
// data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT);
// #endif
// }
// }
/*Return `false` because we are not buffering and no more data to read*/
return false;
}
// /*Return `false` because we are not buffering and no more data to read*/
// return false;
// }
namespace dev {
@ -60,7 +60,30 @@ class TouchStmpe610 : public BaseTouch {
public:
IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
return touch_read(indev_driver, data);
data->state = LV_INDEV_STATE_REL;
// while touched, but the state is released => read next point
while(data->state == LV_INDEV_STATE_REL && stmpe610_touchpanel.touched()) {
TS_Point point = stmpe610_touchpanel.getPoint();
Log.trace(TAG_DRVR, F("STMPE610: x=%i y=%i z=%i"), point.x, point.y, point.z);
if(point.z && point.x < 4096 && point.y < 4096) { // valid reading
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->state = LV_INDEV_STATE_PR;
#if HX8357D_DRIVER == 1
data->point.x = map(point.x, TS_MINX, TS_MAXX, TFT_WIDTH, 0);
data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT);
#else
data->point.x = map(point.x, TS_MINX, TS_MAXX, 0, TFT_WIDTH);
data->point.y = map(point.y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT);
#endif
}
}
/*Return `false` because we are not buffering and no more data to read*/
return false;
}
void init(int w, int h)

View File

@ -14,19 +14,19 @@
#include "../../hasp/hasp.h" // for hasp_sleep_state
extern uint8_t hasp_sleep_state;
IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
if(haspTft.tft.getTouch((uint16_t*)&data->point.x, (uint16_t*)&data->point.y, 300)) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->state = LV_INDEV_STATE_PR;
// IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
// {
// if(haspTft.tft.getTouch((uint16_t*)&data->point.x, (uint16_t*)&data->point.y, 300)) {
// if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
// data->state = LV_INDEV_STATE_PR;
} else {
data->state = LV_INDEV_STATE_REL;
}
// } else {
// data->state = LV_INDEV_STATE_REL;
// }
/*Return `false` because we are not buffering and no more data to read*/
return false;
}
// /*Return `false` because we are not buffering and no more data to read*/
// return false;
// }
namespace dev {
@ -35,16 +35,9 @@ class TouchTftEspi : public BaseTouch {
public:
IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
int16_t touchX = 0;
int16_t touchY = 0;
if(haspTft.tft.getTouch((uint16_t*)&touchX, (uint16_t*)&touchY, 300)) {
if(haspTft.tft.getTouch((uint16_t*)&data->point.x, (uint16_t*)&data->point.y, 300)) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->point.x = touchX;
data->point.y = touchY;
data->state = LV_INDEV_STATE_PR;
data->state = LV_INDEV_STATE_PR;
} else {
data->state = LV_INDEV_STATE_REL;
}

View File

@ -30,7 +30,7 @@ build_flags =
-D TOUCH_SCL=22
-D TOUCH_IRQ=27
-D TOUCH_RST=-1 ; not used
-D TOUCH_FREQUENCY=400000
-D I2C_TOUCH_FREQUENCY=400000
-D SPI_FREQUENCY=40000000
-D SPI_READ_FREQUENCY=20000000
;endregion

View File

@ -33,7 +33,7 @@ build_flags =
-D TOUCH_SCL=0
-D TOUCH_IRQ=-1 ; not connected
-D TOUCH_RST=-1 ; not used, connected to 3.3V on FCP pin10
-D TOUCH_FREQUENCY=400000
-D I2C_TOUCH_FREQUENCY=400000
-D LED_RED=26
-D LED_GREEN=32
-D LED_BLUE=33

View File

@ -31,7 +31,7 @@ build_flags =
-D TOUCH_SCL=22
-D TOUCH_IRQ=39
-D TOUCH_RST=-1 ; Managed by AXP_IO4
-D TOUCH_FREQUENCY=400000
-D I2C_TOUCH_FREQUENCY=400000
;endregion
;region -- Library options -------------------------------

View File

@ -35,7 +35,7 @@ build_flags =
-D TOUCH_SCL=27
-D TOUCH_IRQ=0
-D TOUCH_RST=-1
-D TOUCH_FREQUENCY=400000
-D I2C_TOUCH_FREQUENCY=400000
;endregion
;region -- Library options -------------------------------

View File

@ -39,7 +39,6 @@ build_flags =
-D TOUCH_SDA=21
-D TOUCH_SCL=22
-D I2C_TOUCH_FREQUENCY=400000
-D TOUCH_FREQUENCY=400000
;endregion
;region -- Hasp build options ----------------------------

View File

@ -32,7 +32,7 @@ build_flags =
-D TOUCH_SCL=19
-D TOUCH_IRQ=-1 ; not connected
-D TOUCH_RST=-1 ; not used, connected to 3.3V
-D TOUCH_FREQUENCY=400000
-D I2C_TOUCH_FREQUENCY=400000
;endregion
;region -- Library options -------------------------------

View File

@ -46,7 +46,6 @@ build_flags =
-D TOUCH_SCL=22
-D TOUCH_IRQ=5
-D TOUCH_RST=23
;-D TOUCH_FREQUENCY=400000
-D I2C_TOUCH_FREQUENCY=400000
-D SPI_FREQUENCY=40000000
-D SPI_READ_FREQUENCY=20000000