电容屏源码兼容版(190422).zip
大小:408.51KB
价格:27积分
下载量:0
评分:
5.0
上传者:weixin_46066669
更新日期:2024-08-14

ST1633I-沁恒微CH554-IC代码

资源文件列表(大概)

文件名
大小
电容屏源码兼容版(190422)/CH554.H
67.09KB
电容屏源码兼容版(190422)/CONFIG.H
1.58KB
电容屏源码兼容版(190422)/CYPRESS.C
4.49KB
电容屏源码兼容版(190422)/CYPRESS.H
913B
电容屏源码兼容版(190422)/CYPRESS.OBJ
43.82KB
电容屏源码兼容版(190422)/Debug.C
9.67KB
电容屏源码兼容版(190422)/Debug.H
2.1KB
电容屏源码兼容版(190422)/Debug.OBJ
46.03KB
电容屏源码兼容版(190422)/DEVICE.H
1.01KB
电容屏源码兼容版(190422)/DEVICE.LIB
61.81KB
电容屏源码兼容版(190422)/FLASH_IC.C
2.07KB
电容屏源码兼容版(190422)/FLASH_IC.H
683B
电容屏源码兼容版(190422)/FLASH_IC.OBJ
44.59KB
电容屏源码兼容版(190422)/FT6236.C
5.84KB
电容屏源码兼容版(190422)/FT6236.H
1.96KB
电容屏源码兼容版(190422)/FT6236.OBJ
44.71KB
电容屏源码兼容版(190422)/GT911.C
7.53KB
电容屏源码兼容版(190422)/GT911.H
3.01KB
电容屏源码兼容版(190422)/GT911.OBJ
44.67KB
电容屏源码兼容版(190422)/HID_TP_CAP.uvgui.lorra
96.33KB
电容屏源码兼容版(190422)/HID_TP_CAP.uvgui.owner
74.52KB
电容屏源码兼容版(190422)/HID_TP_CAP.uvgui.tech
72.54KB
电容屏源码兼容版(190422)/HID_TP_CAP.uvgui.WCH
91.48KB
电容屏源码兼容版(190422)/HID_TP_CAP.uvopt
8.9KB
电容屏源码兼容版(190422)/HID_TP_CAP.uvproj
15.74KB
电容屏源码兼容版(190422)/HID_TP_GT_V100
539.05KB
电容屏源码兼容版(190422)/HID_TP_GT_V100.build_log.htm
3.08KB
电容屏源码兼容版(190422)/HID_TP_GT_V100.hex
33.58KB
电容屏源码兼容版(190422)/HID_TP_GT_V100.lnp
249B
电容屏源码兼容版(190422)/IIC.C
4.56KB
电容屏源码兼容版(190422)/IIC.H
764B
电容屏源码兼容版(190422)/IIC.OBJ
47.59KB
电容屏源码兼容版(190422)/ILI2511.C
7.21KB
电容屏源码兼容版(190422)/ILI2511.H
1.02KB
电容屏源码兼容版(190422)/ILI2511.OBJ
43.88KB
电容屏源码兼容版(190422)/list/
-
电容屏源码兼容版(190422)/list/CYPRESS.lst
8.42KB
电容屏源码兼容版(190422)/list/Debug.lst
15.04KB
电容屏源码兼容版(190422)/list/FLASH_IC.lst
4.41KB
电容屏源码兼容版(190422)/list/FT6236.lst
10.34KB
电容屏源码兼容版(190422)/list/GT911.lst
13.58KB
电容屏源码兼容版(190422)/list/HID_TP_GT_V100.m51
20.31KB
电容屏源码兼容版(190422)/list/IIC.lst
8.74KB
电容屏源码兼容版(190422)/list/ILI2511.lst
12.55KB
电容屏源码兼容版(190422)/list/MAIN.lst
7.53KB
电容屏源码兼容版(190422)/list/STX_Driver_sample.lst
13.84KB
电容屏源码兼容版(190422)/list/STX1633I.lst
16.6KB
电容屏源码兼容版(190422)/MAIN.C
4.14KB
电容屏源码兼容版(190422)/MAIN.OBJ
51.28KB
电容屏源码兼容版(190422)/STX_Driver_sample.__i
98B
电容屏源码兼容版(190422)/STX_Driver_sample.c
7.75KB
电容屏源码兼容版(190422)/STX_Driver_sample.h
1.26KB
电容屏源码兼容版(190422)/STX_Driver_sample.OBJ
56.74KB
电容屏源码兼容版(190422)/STX1633I.__i
80B
电容屏源码兼容版(190422)/STX1633I.C
9.95KB
电容屏源码兼容版(190422)/STX1633I.H
2.5KB
电容屏源码兼容版(190422)/STX1633I.OBJ
62.36KB

资源内容介绍

ST1633I-沁恒微CH554-IC代码
/********************************** (C) COPYRIGHT ******************************** File Name : ST1633I.C* Author : GJ* Version : V2.00* Date : 2018-7-10 * Description : 电容触摸IC触摸IC驱动*******************************************************************************/#include "STX1633I.H"const UINT16 ST1633I_TPX_TBL[10]={ST_TP0_REG,ST_TP1_REG,ST_TP2_REG,ST_TP3_REG,ST_TP4_REG,ST_TP5_REG,ST_TP6_REG,ST_TP7_REG, ST_TP8_REG, ST_TP9_REG, };/******************************************************************************** Function Name : ST1633I_WR_Reg* Description : 向ST1633I写入一次数据* Input : reg:起始寄存器地址 buf:数据缓缓存区 len:写数据长度* Output : None* Return : 0,成功;1,失败.*******************************************************************************/static UINT8 ST1633I_WR_Reg(UINT8 reg,UINT8 *buf,UINT8 len){UINT8 i;UINT8 ret=0;IIC_Start(); IIC_Send_Byte(ST_CMD_WR); //发送写命令 IIC_Wait_Ack();IIC_Send_Byte(reg); //发送高8位地址IIC_Wait_Ack();for(i=0;i<len;i++){ IIC_Send_Byte(buf[i]); //发数据ret=IIC_Wait_Ack();if(ret)break; }IIC_Stop();//产生一个停止条件 return ret; }/******************************************************************************** Function Name : ST1633I_RD_Reg* Description : 从ST1633I读出一次数据* Input : reg:起始寄存器地址 buf:数据缓缓存区 len:读数据长度 * Output : None* Return : None*******************************************************************************/static void ST1633I_RD_Reg(UINT8 reg,UINT8 *buf,UINT8 len){UINT8 i; IIC_Start(); IIC_Send_Byte(ST_CMD_WR); IIC_Wait_Ack(); IIC_Send_Byte(reg); IIC_Wait_Ack(); IIC_Stop(); IIC_Start();IIC_Send_Byte(ST_CMD_RD); IIC_Wait_Ack(); for(i=0;i<len;i++) { buf[i]=IIC_Read_Byte(i==(len-1)?0:1); } IIC_Stop();} void ST_GetStatusInfo(void){ST1633I_RD_Reg(STATUS_REG,&ShareBuf[0],1); printf("Status Code:");switch(ShareBuf[0]&0x0F){case 0x00:printf("Normal\r\n");break;case 0x01:printf("Init\r\n");break;case 0x02:printf("ERROR\r\n");break;case 0x03:printf("Auto Tuning\r\n");break;case 0x04:printf("Idle\r\n");break;case 0x05:printf("Power Down\r\n");break;case 0x06:printf("Boot ROM\r\n");break;case 0x07:printf("Waiting to execute Sub-AP\r\n");break;case 0x08:printf("Pre-SmartWakeup\r\n");break;case 0x09:printf("SmartWakeup\r\n");break;default:printf("Reserverd!\r\n");}printf("Error Code:");switch((ShareBuf[0]&0xF0)>>4){case 0x00:printf("No error\r\n");break;case 0x01:printf("Invalid Address\r\n");break;case 0x02:printf("Invalid Value\r\n");break;case 0x03:printf("Invalid Platform\r\n");break;case 0x04:printf("Dev Not Found\r\n");break;case 0x05:printf("Stack Overflow\r\n");break;case 0x06:printf("Invalid Firmware Parameter Table\r\n");break;case 0x07:printf("Invalid Secondary Touch Firmware\r\n");break;default:printf("Reserverd!\r\n");}}/******************************************************************************* * Function Name : ST_GetPanelInfo * Description : 使用命令码从控制器读取X、Y分辨率。 * Input : None * Output : None * Return : None *******************************************************************************/void ST_GetPanelInfo(void){// 读取XY分辨率高字节寄存器ST1633I_RD_Reg(XY_RESOLUTION_HIGH, ShareBuf, 3);// 组合X轴分辨率,高3位在分辨率高字节的第4到6位,低8位在x_lowCTP_Info.x_max_pos =(((UINT16)(ShareBuf[0] & (X_RES_H_BMSK << X_RES_H_SHFT)) << 4) | ShareBuf[1]); // 组合Y轴分辨率,高2位在分辨率高字节的第0到2位(即0x07),低8位在y_lowCTP_Info.y_max_pos = (((UINT16)(ShareBuf[0] & Y_RES_H_BMSK) << 8) | ShareBuf[2]);//printf("XY_RESOLUTION_HIGH:%2x\n",(UINT16)ShareBuf[0]);//printf("X_RESOLUTION_LOW:%2x\n",(UINT16)ShareBuf[1]);//printf("Y_RESOLUTION_LOW:%2x\n",(UINT16)ShareBuf[2]);printf("cpt x:%d y:%d\n",CTP_Info.x_max_pos,CTP_Info.y_max_pos);ST1633I_RD_Reg(FIRMWARE_VERSION,ShareBuf,1);printf("ver:%d\n",ShareBuf[0]);ST1633I_RD_Reg(FIRMWARE_REVISION_3, ShareBuf, 4);printf("fw revision = %d %d %d %d\n", (UINT16)ShareBuf[0],(UINT16)ShareBuf[1],(UINT16)ShareBuf[2], (UINT16)ShareBuf[3]);}/******************************************************************************** Function Name : ST1633I_Init* Description : 触摸板初始化,获取ID,确认是否工作,TP的初始化接口,IC上电后会自动初始化,一般不需要特殊实现* Input : None* Output : None* Return : None*******************************************************************************/void ST1633I_Init(void){MAX_POINT = 6; I2c_Init();#if DE_PRINTFprintf("ST init\n");#endif// 配置触摸屏控制器的中断和复位引脚CTP_INT(1);CTP_RST(0);// 等待一段时间后释放复位mDelaymS(50);CTP_RST(1);mDelaymS(200); // 必须要延时100多msST_GetStatusInfo();ST1633I_RD_Reg(STATUS_REG,&ShareBuf[0],1); //如果没有任何状态异常,就说明没有问题,成功初始化while((ShareBuf[0]&0xF0)!=0){ST1633I_RD_Reg(STATUS_REG,&ShareBuf[0],1); printf("初始化...ing\r\n");}printf("Error Code:%d\r\n",(ShareBuf[0]&0xF0));printf("ST init OK!\r\n");ST_GetPanelInfo();Get_Config_Info();CTP_Info.X_Resolution = 4096 / (float)CTP_Info.x_max_pos;CTP_Info.Y_Resolution = 4096 / (float)CTP_Info.y_max_pos;#if DE_PRINTFprintf("cpt x:%d y:%d\n",CTP_Info.x_max_pos,CTP_Info.y_max_pos);printf("ratio: %f %f\n",CTP_Info.X_Resolution,CTP_Info.Y_Resolution);#endif}// 根据寄存器地址获取触摸点ID的函数UINT16 GetTouchPointID(UINT8 regAddress) { switch (regAddress) { case ST_TP0_REG: return 0; case ST_TP1_REG: return 1; case ST_TP2_REG: return 2; case ST_TP3_REG: return 3; case ST_TP4_REG: return 4; case ST_TP5_REG: return 5; case ST_TP6_REG: return 6; case ST_TP7_REG: return 7; case ST_TP8_REG: return 8; case ST_TP9_REG: return 9; default: return 255; // 如果地址不匹配任何已知寄存器,返回一个无效的ID }}/******************************************************************************** Function Name : ST1633I_Touch_Check* Description : 按键检测与上传* Input : None* Output : None* Return : None*******************************************************************************/UINT8 ST1633I_Touch_Check( void ){if( CTP_Info.IRQ_Flag == 1 ){if( ST1633I_Scan() == 1 ){Absolute_Up_Pack( &TP, CTP_Info.Press_Flag ); }CTP_Info.IRQ_Flag = 0;EX0 = 1;}return 0;}/******************************************************************************** Function Name : ST1633I_Scan* Description : 扫描触摸屏(采用查询方式)* Input : None* Output : None* Return : 0,触屏无触摸;1,触屏有触摸*******************************************************************************/UINT8 ST1633I_Scan( void ){ // 初始化用于存储触摸点数量的变量 UINT16 id ; //当前这次ID位域 UINT16 i; UINT8 point_num; UINT16 point_id; UINT16 valid; // 读取触摸屏控制器中注册表的值,获取当前触摸点的数量 ST1633I_RD_Reg(MAX_NUM_TOUCHES,&point_num,1); id = 0; printf("point_num:%d\r\n",(UINT16)point_num);printf("MAX_POINT:%d\r\n",(UINT16)MAX_POINT); // 根据触摸点的数量进行处理,确保不超过最大支持的触摸点数量 if(point_num > MAX_POINT) point_num = MAX_POINT; // 遍历每个触摸点,读取并处理其信息 for( i = 0; i != point_num; i++ ) { // 从控制器中读取触摸点的具体�

用户评论 (0)

发表评论

captcha