高级会员

- 积分
- 579
- 金钱
- 579
- 注册时间
- 2019-8-4
- 在线时间
- 187 小时
|
4金钱
u8 GT9147_Init(void)
{
u8 temp[5];
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); //使能PF端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; // PF11端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOF, &GPIO_InitStructure);//PF11推挽输出
GPIO_SetBits(GPIOF,GPIO_Pin_1);//上拉
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // PB2端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_Init(GPIOF, &GPIO_InitStructure);//PF10上拉输入
GPIO_SetBits(GPIOF,GPIO_Pin_10);//上拉
CT_IIC_Init(); //初始化电容屏的I2C总线
GT_RST=0; //复位
delay_ms(10);
GT_RST=1; //释放复位
delay_ms(10);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // PB2端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //下拉输入 问题1
GPIO_Init(GPIOF, &GPIO_InitStructure);//PF10下拉输入
GPIO_ResetBits(GPIOF,GPIO_Pin_10);//下拉
delay_ms(100);
GT9147_RD_Reg(GT_PID_REG,temp,4); //读取产品ID
temp[4]=0;
printf("CTP ID:%s\r\n",temp); //打印ID
if(strcmp((char*)temp,"9147")==0) //ID==9147
{
temp[0]=0X02;
GT9147_WR_Reg(GT_CTRL_REG,temp,1);//软复位GT9147
GT9147_RD_Reg(GT_CFGS_REG,temp,1);//读取GT_CFGS_REG寄存器
if(temp[0]<0X60)//默认版本比较低,需要更新flash配置 问题2
{
printf("Default Ver:%d\r\n",temp[0]);
GT9147_Send_Cfg(1);//更新并保存配置
}
delay_ms(10);
temp[0]=0X00;
GT9147_WR_Reg(GT_CTRL_REG,temp,1); //结束复位
return 0;
}
return 1;
}
问题1 INT先上拉再下拉输入,这在干嘛
问题2 更新配置的条件是什么,这行看不懂
|
最佳答案
查看完整内容[请看2#楼]
INT先输出高,上拉也是高。
然后在复位以后,9147读取INT,如果是高,则0X28,29,地址就确认了。
至于复位后,INT脚上拉下拉都不影响了。
读取数据的时候,我们没用到INT脚。
|