汇顶科技GT928:大尺寸10点电容触控芯片技术规格

需积分: 3 1 下载量 14 浏览量 更新于2024-06-13 收藏 1.51MB PDF 举报
"GT928 TP Datasheet - 汇顶科技的大尺寸10点电容触控芯片技术文档" GT928是一款专为大尺寸应用设计的10点电容触控芯片,由汇顶科技制造。该芯片主要用于实现高精度和多点触控功能,适用于各种大屏幕设备,如智能电视、平板电脑和数字标牌等。文档包含了详细的芯片技术规格、设计指南和通信协议。 1. **概述** 文档概述了GT928芯片的主要功能和特性,强调了其在大尺寸触控解决方案中的优势。 2. **产品特点** GT928的特点可能包括高灵敏度、低功耗、抗干扰性强以及支持多种触控模式,如正常模式、绿色模式、手势模式、睡眠模式、接近模式和发送/接收模式。 3. **芯片原理框图** 原理框图展示了芯片内部各个模块的连接关系,包括感应通道、驱动通道、信号处理单元和通信接口等。 4. **管脚定义** 管脚定义部分详细解释了每个引脚的功能,这对于正确连接和配置芯片至关重要。 5. **传感器设计** 这一部分提供了关于传感器布局和参数的要求,包括感应通道和驱动通道的排布、传感器设计参数、触摸按键的设计指导。 6. **I2C通讯** GT928通过I2C接口与主机通信,文档详细描述了数据传输的流程,包括写操作和读操作的步骤。 7. **HOTKNOT模式** HOTKNOT是汇顶科技的一种数据传输技术,类似于NFC,允许两个设备通过接触来交换数据。这部分详细说明了如何启动HOTKNOT模式以及数据传输过程。 8. **功能描述** 功能描述涵盖了GT928的各种工作模式,如正常模式、节能模式、手势识别和睡眠模式等,还包括中断触发方式、睡眠模式的管理、固化配置功能、自动校准机制(如初始化校准和自动温度漂移补偿)以及手和笔状态的切换。 9. **参考电路图** 提供了推荐的电路连接示例,帮助设计者理解如何在实际系统中集成GT928芯片。 10. **其他** 文件中可能还包含了错误校正、故障排查指南和其他重要信息,以确保开发者能够有效且稳定地使用GT928芯片。 "GT928 TP Datasheet"是开发和设计人员了解和使用这款10点电容触控芯片的关键资源,提供详尽的技术细节和应用指南。

对以下代码进行注释并给出可复制代码static void ble_tp_notify_task(void *pvParameters) { int err = -1; char data[244] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09}; while(1) { err = bt_gatt_notify(ble_tp_conn, get_attr(BT_CHAR_BLE_TP_NOT_ATTR_VAL_INDEX), data, (tx_mtu_size - 3)); BT_WARN("ble tp send notify : %d", err); } } static void ble_tp_not_ccc_changed(const struct bt_gatt_attr attr, u16_t value) { int err; BT_WARN("ccc:value=[%d]",value); if(tp_start) { if(value == BT_GATT_CCC_NOTIFY) { if(xTaskCreate(ble_tp_notify_task, (char)"bletp", 256, NULL, TP_PRIO, &ble_tp_task_h) == pdPASS) { created_tp_task = 1; BT_WARN("Create throughput tx task success."); } else { created_tp_task = 0; BT_WARN("Create throughput tx task fail."); } } else { if(created_tp_task) { BT_WARN("Delete throughput tx task."); vTaskDelete(ble_tp_task_h); created_tp_task = 0; } } } else { if(created_tp_task) { BT_WARN("Delete throughput tx task."); vTaskDelete(ble_tp_task_h); created_tp_task = 0; } if(value == BT_GATT_CCC_NOTIFY) { err = bt_gatt_notify(ble_tp_conn, get_attr(BT_CHAR_BLE_TP_NOT_ATTR_VAL_INDEX), "notify", strlen("notify")); BT_WARN("ble tp send indatcate: %d", err); } } } static struct bt_gatt_attr attrs[]= { BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_BLE_TP), BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_TP_RD, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_tp_recv_rd, NULL, NULL), BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_TP_WR, BT_GATT_CHRC_WRITE |BT_GATT_CHRC_WRITE_WITHOUT_RESP, BT_GATT_PERM_WRITE|BT_GATT_PERM_PREPARE_WRITE, NULL, ble_tp_recv_wr, NULL), BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_TP_IND, BT_GATT_CHRC_INDICATE, 0, NULL, NULL, NULL), BT_GATT_CCC(ble_tp_ind_ccc_changed, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE), BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_TP_NOT, BT_GATT_CHRC_NOTIFY, 0, NULL, NULL, NULL), BT_GATT_CCC(ble_tp_not_ccc_changed, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE) };

2023-05-19 上传

修改这个函数,要实现防止连续点按 while (1) { tp_dev.scan(0); if (tp_dev.sta & TP_PRES_DOWN) { //触摸屏被按下 if (tp_dev.x[0] > 0 && tp_dev.x[0] < 130 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480) { while(tp_dev.x[0] > 0 && tp_dev.x[0] < 130 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480){ tp_dev.scan(0); } if (i < 5) { password[i++] = '1'; } } else if (tp_dev.x[0] > 130 && tp_dev.x[0] < 260 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480) { while(tp_dev.x[0] > 130 && tp_dev.x[0] < 260 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480){ tp_dev.scan(0); } if (i < 5) { password[i++] = '2'; } } else if (tp_dev.x[0] > 260 && tp_dev.x[0] < 390 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480) { while(tp_dev.x[0] > 260 && tp_dev.x[0] < 390 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480){ tp_dev.scan(0); } if (i < 5) { password[i++] ='3'; } } else if (tp_dev.x[0] > 390 && tp_dev.x[0] < 520 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480) { while(tp_dev.x[0] > 390 && tp_dev.x[0] < 520 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480){ tp_dev.scan(0); } if (i < 5) { password[i++] = '4'; } } else if (tp_dev.x[0] > 520 && tp_dev.x[0] < 650 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480) { while(tp_dev.x[0] > 520 && tp_dev.x[0] < 650 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480){ tp_dev.scan(0); } if (i > 0) { password[--i] = '\0'; } } else if (tp_dev.x[0] > 650 && tp_dev.x[0] < 800 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480) { while(tp_dev.x[0] > 650 && tp_dev.x[0] < 800 && tp_dev.y[0] > 380 && tp_dev.y[0] < 480){ tp_dev.scan(0); } if (i == 4) { break; //退出密码输入循环 } else { Show_Hz16(300,250,"提示信息:用户名或密码错误",RED,WHITE); } } //显示部分 LCD_ShowString(400,150,400,24,24,password); } }

2023-05-22 上传