OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3606|回复: 9

F103 开发板GT9147初始化函数的一点疑问

[复制链接]

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
发表于 2019-10-24 10:40:55 | 显示全部楼层 |阅读模式
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脚。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-10-24 10:40:56 | 显示全部楼层
taomao 发表于 2019-10-25 07:42
1.  GPIO_SetBits(GPIOF,GPIO_Pin_1);这里打错了吧,RST脚接的是PF11呀,
2.时序图上说的是INT先输出高 ...

INT先输出高,上拉也是高。
然后在复位以后,9147读取INT,如果是高,则0X28,29,地址就确认了。
至于复位后,INT脚上拉下拉都不影响了。
读取数据的时候,我们没用到INT脚。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-10-25 02:36:07 | 显示全部楼层
1,数据手册要求,和ID有关系。
2,估计有更新版本的时候,才更新。
另外,你可以直接用这个代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
 楼主| 发表于 2019-10-25 07:42:53 | 显示全部楼层

1.  GPIO_SetBits(GPIOF,GPIO_Pin_1);这里打错了吧,RST脚接的是PF11呀,
2.时序图上说的是INT先输出高,再浮空输入呀

1. GPIO_SetBits(GPIOF,GPIO_Pin_1);这里打错了吧,RST脚接的是PF11呀,

1.  GPIO_SetBits(GPIOF,GPIO_Pin_1);这里打错了吧,RST脚接的是PF11呀,

2.时序图上说的是INT先输出高,再浮空输入呀

2.时序图上说的是INT先输出高,再浮空输入呀
回复

使用道具 举报

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
 楼主| 发表于 2019-10-25 07:44:21 | 显示全部楼层
正点原子 发表于 2019-10-25 02:36
1,数据手册要求,和ID有关系。
2,估计有更新版本的时候,才更新。
另外,你可以直接用这个代码。

请指教
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-10-28 02:45:04 | 显示全部楼层
taomao 发表于 2019-10-25 07:42
1.  GPIO_SetBits(GPIOF,GPIO_Pin_1);这里打错了吧,RST脚接的是PF11呀,
2.时序图上说的是INT先输出高 ...

INT先输出高,上拉也是高。
然后在复位以后,9147读取INT,如果是高,则0X28,29,地址就确认了。
至于复位后,INT脚上拉下拉都不影响了。
读取数据的时候,我们没用到INT脚。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
 楼主| 发表于 2019-10-28 08:01:11 | 显示全部楼层
正点原子 发表于 2019-10-28 02:45
INT先输出高,上拉也是高。
然后在复位以后,9147读取INT,如果是高,则0X28,29,地址就确认了。
至于 ...

至于复位后,INT脚上拉下拉都不影响了。

这句话不太明白,既然没有影响,为何还要设置INT的状态,还有那个PF1是不是打错了,就第一个问题,麻烦解释一下
回复

使用道具 举报

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
 楼主| 发表于 2019-10-28 08:01:37 | 显示全部楼层
正点原子 发表于 2019-10-28 02:45
INT先输出高,上拉也是高。
然后在复位以后,9147读取INT,如果是高,则0X28,29,地址就确认了。
至于 ...

至于复位后,INT脚上拉下拉都不影响了。

这句话不太明白,既然没有影响,为何还要设置INT的状态,还有那个PF1是不是打错了,就第一个问题,麻烦解释一下
回复

使用道具 举报

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
 楼主| 发表于 2019-10-28 08:04:04 | 显示全部楼层
正点原子 发表于 2019-10-28 02:45
INT先输出高,上拉也是高。
然后在复位以后,9147读取INT,如果是高,则0X28,29,地址就确认了。
至于 ...

至于复位后,INT脚上拉下拉都不影响了。

这句话不太明白,既然没有影响,为何还要设置INT的状态,还有那个PF1是不是打错了,就第一个问题,麻烦解释一下
回复

使用道具 举报

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2019-9-7
在线时间
14 小时
发表于 2020-6-28 22:09:43 | 显示全部楼层
GPIO_SetBits(GPIOF,GPIO_Pin_1);这里打错了吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-1 04:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表