Skip to content

Commit de85918

Browse files
committed
Edgi_Talk_Extend_Screen添加单点触摸
1 parent 6441dfb commit de85918

File tree

6 files changed

+465
-24
lines changed

6 files changed

+465
-24
lines changed

libraries/Common/board/ports/display_panels/drv_touch.c

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ static int16_t pre_y[ST7102_MAX_TOUCH] = {-1, -1, -1, -1, -1};
9898
static int16_t pre_w[ST7102_MAX_TOUCH] = {-1, -1, -1, -1, -1};
9999
static rt_uint8_t s_tp_dowm[ST7102_MAX_TOUCH];
100100
static struct rt_touch_data *read_data;
101+
static rt_size_t s_touch_read_len = 0;
102+
103+
#define ST7102_READ_BUF_MAX (8 * ST7102_MAX_TOUCH)
104+
#define ST7102_READ_LEN_FALLBACK1 32
105+
#define ST7102_READ_LEN_FALLBACK2 16
101106

102107
static void ST7102_touch_up(void *buf, int8_t id)
103108
{
@@ -154,6 +159,7 @@ static rt_size_t ST7102_read_point(struct rt_touch_device *touch, void *buf, rt_
154159
rt_pin_write(LED_RED, PIN_HIGH);
155160
rt_uint8_t touch_num = 0;
156161
rt_uint8_t cmd[2];
162+
rt_size_t max_points = ST7102_MAX_TOUCH;
157163

158164
int16_t input_x = 0;
159165
int16_t input_y = 0;
@@ -167,14 +173,49 @@ static rt_size_t ST7102_read_point(struct rt_touch_device *touch, void *buf, rt_
167173
cmd[0] = (rt_uint8_t)((ST7102_Read_Start_Position >> 8) & 0xFF);
168174
cmd[1] = (rt_uint8_t)(ST7102_Read_Start_Position & 0xFF);
169175

170-
if (ST7102_read_regs(&ST7102_client, cmd, 2, read_buf, 8 * ST7102_MAX_TOUCH) != RT_EOK)
176+
if (s_touch_read_len == 0)
177+
{
178+
s_touch_read_len = ST7102_READ_BUF_MAX;
179+
}
180+
181+
if (ST7102_read_regs(&ST7102_client, cmd, 2, read_buf, s_touch_read_len) != RT_EOK)
182+
{
183+
rt_size_t fallback_len = 0;
184+
185+
if (s_touch_read_len > ST7102_READ_LEN_FALLBACK1)
186+
{
187+
fallback_len = ST7102_READ_LEN_FALLBACK1;
188+
}
189+
else if (s_touch_read_len > ST7102_READ_LEN_FALLBACK2)
190+
{
191+
fallback_len = ST7102_READ_LEN_FALLBACK2;
192+
}
193+
194+
if ((fallback_len > 0) && (ST7102_read_regs(&ST7102_client, cmd, 2, read_buf, fallback_len) == RT_EOK))
195+
{
196+
s_touch_read_len = fallback_len;
197+
}
198+
else
199+
{
200+
LOG_D("read point failed\n");
201+
read_num = 0;
202+
goto exit_;
203+
}
204+
}
205+
206+
if (s_touch_read_len <= 0x09)
171207
{
172-
LOG_D("read point failed\n");
173208
read_num = 0;
174209
goto exit_;
175210
}
176211

177-
for (count = 0; count < ST7102_MAX_TOUCH; count++)
212+
max_points = ((s_touch_read_len - 0x0A) / 7) + 1;
213+
if (max_points > ST7102_MAX_TOUCH)
214+
{
215+
max_points = ST7102_MAX_TOUCH;
216+
}
217+
218+
for (count = 0; count < max_points; count++)
178219
{
179220
if (read_buf[0x09 + count * 7] > 0 && read_buf[0] == 0x08)
180221
{
@@ -202,6 +243,11 @@ static rt_size_t ST7102_read_point(struct rt_touch_device *touch, void *buf, rt_
202243
ST7102_touch_up(buf, count);
203244
}
204245
}
246+
247+
for (; count < ST7102_MAX_TOUCH; count++)
248+
{
249+
ST7102_touch_up(buf, count);
250+
}
205251
rt_memcpy(Last_read_buf, read_buf, 8 * ST7102_MAX_TOUCH);
206252
exit_:
207253
return touch_num;

libraries/M55_Config/Kconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,10 @@ menu "On-chip Peripheral Drivers"
116116
if BSP_USING_SOFT_I2C1
117117
config BSP_SOFT_I2C1_SCL_PIN
118118
int "I2C1 SCL PIN number"
119-
default 25
119+
default 105
120120
config BSP_SOFT_I2C1_SDA_PIN
121121
int "I2C1 SDA PIN number"
122-
default 107
122+
default 106
123123
endif
124124
endif
125125

@@ -199,7 +199,7 @@ menu "On-chip Peripheral Drivers"
199199
select RT_USING_LCD
200200
select RT_USING_TOUCH
201201
select RT_TOUCH_PIN_IRQ
202-
select BSP_USING_I2C
202+
select BSP_USING_I2C1
203203
select BSP_USING_SOFT_I2C1
204204
default n
205205
if BSP_USING_LCD

projects/Edgi_Talk_CherryUSB/Edgi_Talk_Extend_Screen/.config

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,10 @@ CONFIG_RT_USING_PIN=y
152152
# CONFIG_RT_USING_SDIO is not set
153153
# CONFIG_RT_USING_SPI is not set
154154
# CONFIG_RT_USING_WDT is not set
155-
# CONFIG_RT_USING_AUDIO is not set
155+
CONFIG_RT_USING_AUDIO=y
156+
CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_SIZE=4096
157+
CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_COUNT=2
158+
CONFIG_RT_AUDIO_RECORD_PIPE_SIZE=2048
156159
# CONFIG_RT_USING_SENSOR is not set
157160
CONFIG_RT_USING_TOUCH=y
158161
CONFIG_RT_TOUCH_PIN_IRQ=y
@@ -1172,7 +1175,7 @@ CONFIG_RT_CHERRYUSB_DEVICE_DWC2_INFINEON=y
11721175
# CONFIG_RT_CHERRYUSB_DEVICE_PUSB2 is not set
11731176
# CONFIG_RT_CHERRYUSB_DEVICE_NRF5X is not set
11741177
CONFIG_RT_CHERRYUSB_DEVICE_CDC_ACM=y
1175-
# CONFIG_RT_CHERRYUSB_DEVICE_HID is not set
1178+
CONFIG_RT_CHERRYUSB_DEVICE_HID=y
11761179
# CONFIG_RT_CHERRYUSB_DEVICE_MSC is not set
11771180
# CONFIG_RT_CHERRYUSB_DEVICE_AUDIO is not set
11781181
# CONFIG_RT_CHERRYUSB_DEVICE_VIDEO is not set
@@ -1190,9 +1193,13 @@ CONFIG_CONFIG_USBDEV_MSC_MAX_BUFSIZE=512
11901193
# CONFIG_CONFIG_USBDEV_CDC_ECM_USING_LWIP is not set
11911194
CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_NONE=y
11921195
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM is not set
1196+
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_HID_KEYBOARD is not set
1197+
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_HID_MOUSE is not set
1198+
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_HID_CUSTOM is not set
11931199
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_WINUSBV1 is not set
11941200
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_WINUSBV2 is not set
11951201
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_WINUSBV2_CDC is not set
1202+
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_WEBUSB_HID is not set
11961203
# CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_DISPLAY is not set
11971204
# CONFIG_RT_CHERRYUSB_HOST is not set
11981205

@@ -1222,8 +1229,8 @@ CONFIG_BSP_USING_GPIO=y
12221229
CONFIG_BSP_USING_I2C=y
12231230
# CONFIG_BSP_USING_HW_I2C0 is not set
12241231
CONFIG_BSP_USING_SOFT_I2C1=y
1225-
CONFIG_BSP_SOFT_I2C1_SCL_PIN=25
1226-
CONFIG_BSP_SOFT_I2C1_SDA_PIN=107
1232+
CONFIG_BSP_SOFT_I2C1_SCL_PIN=105
1233+
CONFIG_BSP_SOFT_I2C1_SDA_PIN=106
12271234
CONFIG_BSP_USING_UART=y
12281235
# CONFIG_BSP_USING_UART1 is not set
12291236
CONFIG_BSP_USING_UART2=y

projects/Edgi_Talk_CherryUSB/Edgi_Talk_Extend_Screen/applications/usb_display/SConscript

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@ src = Glob('*.c')
88

99
cherryusb_root = os.path.join(RTT_ROOT, '..', 'libraries', 'components', 'CherryUSB-1.6.0')
1010
common_usb = os.path.join(RTT_ROOT, '..', 'libraries', 'Common', 'board', 'ports', 'usb')
11+
common_display_panels = os.path.join(RTT_ROOT, '..', 'libraries', 'Common', 'board', 'ports', 'display_panels')
1112

1213
path = [
1314
cwd,
1415
cherryusb_root,
1516
os.path.join(cherryusb_root, 'core'),
1617
os.path.join(cherryusb_root, 'common'),
18+
os.path.join(cherryusb_root, 'class', 'hid'),
1719
os.path.join(cherryusb_root, 'class', 'vendor', 'display'),
1820
os.path.join(cherryusb_root, 'third_party', 'cherrymp'),
1921
common_usb,
22+
common_display_panels,
2023
]
2124

2225
group = DefineGroup('usb_display', src, depend=['RT_USING_CHERRYUSB', 'RT_CHERRYUSB_DEVICE'], CPPPATH=path)

0 commit comments

Comments
 (0)