mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-15 10:58:54 +00:00
解决上电和长期运行屏幕触摸无效的问题
This commit is contained in:
@@ -259,7 +259,7 @@ static rt_size_t gt911_read_point(struct rt_touch_device *touch, void *buf,
|
||||
cmd[1] = (rt_uint8_t)(GT911_READ_STATUS & 0xFF);
|
||||
|
||||
if (gt911_read_regs(>911_client, cmd, &point_status, 1) != RT_EOK) {
|
||||
LOG_D("read point failed\n");
|
||||
LOG_E("read point failed\n");
|
||||
read_num = 0;
|
||||
goto exit_;
|
||||
}
|
||||
@@ -290,7 +290,7 @@ static rt_size_t gt911_read_point(struct rt_touch_device *touch, void *buf,
|
||||
/* read point num is touch_num */
|
||||
if (gt911_read_regs(>911_client, cmd, read_buf,
|
||||
read_num * GT911_POINT_INFO_NUM) != RT_EOK) {
|
||||
LOG_D("read point failed\n");
|
||||
LOG_E("read point failed\n");
|
||||
read_num = 0;
|
||||
goto exit_;
|
||||
}
|
||||
@@ -350,7 +350,7 @@ exit_:
|
||||
write_buf[0] = (rt_uint8_t)((GT911_READ_STATUS >> 8) & 0xFF);
|
||||
write_buf[1] = (rt_uint8_t)(GT911_READ_STATUS & 0xFF);
|
||||
write_buf[2] = 0x00;
|
||||
gt911_write_reg(>911_client, write_buf, 3);
|
||||
gt911_write_reg(>911_client, write_buf, 3);//读完后把0x814E寄存器清为0
|
||||
|
||||
return read_num;
|
||||
}
|
||||
@@ -495,31 +495,53 @@ static int rt_hw_gt911_init(const char *name, struct rt_touch_config *cfg)
|
||||
rt_memset((void *)touch_device, 0, sizeof(struct rt_touch_device));
|
||||
|
||||
/* hw init*/
|
||||
// // rst output 0
|
||||
// rt_pin_mode(*(rt_uint8_t *)cfg->user_data, PIN_MODE_OUTPUT);
|
||||
// rt_pin_write(*(rt_uint8_t *)cfg->user_data, PIN_LOW);
|
||||
// rt_thread_delay(10);
|
||||
|
||||
// // irq output 0
|
||||
// rt_pin_mode(cfg->irq_pin.pin, PIN_MODE_OUTPUT);
|
||||
// rt_pin_write(cfg->irq_pin.pin, PIN_LOW);
|
||||
|
||||
// rt_thread_delay(2);
|
||||
// // rst output 1
|
||||
// rt_pin_mode(*(rt_uint8_t *)cfg->user_data, PIN_MODE_OUTPUT);
|
||||
// rt_pin_write(*(rt_uint8_t *)cfg->user_data, PIN_HIGH);
|
||||
|
||||
// rt_thread_delay(5);
|
||||
// // // rst input
|
||||
// // rt_pin_mode(*(rt_uint8_t *)cfg->user_data, PIN_MODE_INPUT);
|
||||
|
||||
// //irq output 0
|
||||
// rt_pin_mode(cfg->irq_pin.pin, PIN_MODE_OUTPUT);
|
||||
// rt_pin_write(cfg->irq_pin.pin, PIN_LOW);
|
||||
|
||||
// rt_thread_delay(50);
|
||||
|
||||
// rt_pin_mode(cfg->irq_pin.pin, PIN_MODE_INPUT);
|
||||
|
||||
//把RST、INT拉低,延时10ms,把RST拉高(>5ms),就可以把IIC地址设为0xBA/0xBB
|
||||
rt_thread_delay(20);//硬件RC电路采用的10k 1uf 复位需要10ms以上
|
||||
|
||||
// rst output 0
|
||||
rt_pin_mode(*(rt_uint8_t *)cfg->user_data, PIN_MODE_OUTPUT);
|
||||
rt_pin_write(*(rt_uint8_t *)cfg->user_data, PIN_LOW);
|
||||
rt_thread_delay(10);
|
||||
|
||||
// irq output 0
|
||||
rt_pin_mode(cfg->irq_pin.pin, PIN_MODE_OUTPUT);
|
||||
rt_pin_write(cfg->irq_pin.pin, PIN_LOW);
|
||||
|
||||
rt_thread_delay(2);
|
||||
rt_thread_delay(50);
|
||||
|
||||
// rst output 1
|
||||
rt_pin_mode(*(rt_uint8_t *)cfg->user_data, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(*(rt_uint8_t *)cfg->user_data, PIN_MODE_OUTPUT);
|
||||
rt_pin_write(*(rt_uint8_t *)cfg->user_data, PIN_HIGH);
|
||||
|
||||
rt_thread_delay(200);// irq output 0 >50ms维持不变
|
||||
|
||||
rt_thread_delay(5);
|
||||
// // rst input
|
||||
// rt_pin_mode(*(rt_uint8_t *)cfg->user_data, PIN_MODE_INPUT);
|
||||
//irq input 0
|
||||
rt_pin_mode(cfg->irq_pin.pin, PIN_MODE_INPUT);//改成输入
|
||||
|
||||
//irq output 0
|
||||
rt_pin_mode(cfg->irq_pin.pin, PIN_MODE_OUTPUT);
|
||||
rt_pin_write(cfg->irq_pin.pin, PIN_LOW);
|
||||
|
||||
rt_thread_delay(50);
|
||||
|
||||
rt_pin_mode(cfg->irq_pin.pin, PIN_MODE_INPUT);
|
||||
|
||||
gt911_client.bus =
|
||||
(struct rt_i2c_bus_device *)rt_device_find(cfg->dev_name);
|
||||
|
||||
Reference in New Issue
Block a user