找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4352|回复: 0
收起左侧

移植正点原子触摸屏实验

[复制链接]
ID:512434 发表于 2019-12-30 21:15 | 显示全部楼层 |阅读模式
      本帖是为了记录我把正点原子触摸屏移植到自己做的STM板子上,移植前我是参考的野火和正点原子的触摸屏实验视频教程。我自己做的板子和野火正点原子的芯片都是一样的,都是STM32F103的芯片,但是就算芯片一样,我移植的时候也是费了很大的劲。
       我先看的是野火的触摸屏实验教程,可是我原理大概看懂了之后发现还是对触摸屏实验似懂非懂,所以我就去看了正点原子的视频,正点原子触摸屏实验比野火的简单了许多(我自己的理解),所以我就准备移植正点原子的触摸屏实验。我先把正点原子的触摸屏驱动拷贝到我的工程里,我的STM开发板已经打通了液晶的驱动,我再液晶的工程上新建了一个touch文件夹里面存放了正点原子的触摸屏驱动。对正点原子驱动的更改主要如下。
//电阻/电容屏芯片连接引脚          
#define PEN                  PAin(8)                // INT
#define DOUT                 PBin(14)                 //  MISO
#define TDIN                 PBout(15)            // MOSI
#define TCLK                 PBout(13)            //  SCLK
#define TCS                  PBout(12)            //  CS


这一步主要是更改Touch。h文件中的我自己开发板芯片连接的GPIO引脚。

//触摸屏初始化                      
//返回值:0,没有进行校准
//       1,进行过校准
u8 TP_Init(void)
{       
        if(lcddev_id==0X5510)                                //4.3寸电容触摸屏//************************************************************************
        {

                return 0;
        }else if(lcddev_id==0X1963)                        //7寸电容触摸屏
        {

                return 0;
        }else
        {
          GPIO_InitTypeDef  GPIO_InitStructure;

                //注意,时钟使能之后,对GPIO的操作才有效
                //所以上拉之前,必须使能时钟.才能实现真正的上拉输出
                   
                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, ENABLE);         //使能PB,PF端口时钟
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;                                 // PB1端口配置
                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                 GPIO_Init(GPIOB, &GPIO_InitStructure);//B1推挽输出
                 GPIO_SetBits(GPIOB,GPIO_Pin_13);//上拉
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;                                 // PB2端口配置
                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                  //上拉输入
                 GPIO_Init(GPIOB, &GPIO_InitStructure);//B2上拉输入
                 GPIO_SetBits(GPIOB,GPIO_Pin_14);//上拉               
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_15;                                 // F9,PF11端口配置
                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                 GPIO_Init(GPIOB, &GPIO_InitStructure);//PF9,PF11推挽输出
                 GPIO_SetBits(GPIOB, GPIO_Pin_12|GPIO_Pin_15);//上拉
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                                 // PF10端口配置
                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                  //上拉输入
                 GPIO_Init(GPIOA, &GPIO_InitStructure);//PF10上拉输入
                 GPIO_SetBits(GPIOA,GPIO_Pin_8);//上拉               

                TP_Read_XY(&tp_dev.x[0],&tp_dev.y[0]);//第一次读取初始化         
                I2C_EE_Init();                        //初始化24CXX
                if(TP_Get_Adjdata())return 0;//已经校准
                else                                          //未校准?
                {                                                                                     
                        LCD_Clear(White);        //清屏//************************************************************************
                        TP_Adjust();                  //屏幕校准  
                }                       
                TP_Get_Adjdata();       
        }
        return 1;                                                                          
}
这里是对触摸屏初始化修改,前面如if(lcddev_id==0X5510)等的判断都是对液晶屏的选择,我移植使用的是电阻屏,所以把这些都删除了。而且lcddev_id本来是正点原子对液晶定义的结构体变量,我之前没有使用正点原子的液晶驱动是我自己的,所以我在touch。c文件前定义了这个变量,并且直接赋值。

u16 lcddev_id = 0;
u16 lcddev_dir = 1;

其它的函数,凡是关于液晶的画点等的都把函数改为自己的液晶驱动函数,这样基本可以实现触摸屏实验了。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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