標題: 移植正點原子觸摸屏實驗 [打印本頁]

作者: 2360763150    時間: 2019-12-30 21:15
標題: 移植正點原子觸摸屏實驗
      本帖是為了記錄我把正點原子觸摸屏移植到自己做的STM板子上,移植前我是參考的野火和正點原子的觸摸屏實驗視頻教程。我自己做的板子和野火正點原子的芯片都是一樣的,都是STM32F103的芯片,但是就算芯片一樣,我移植的時候也是費了很大的勁。
       我先看的是野火的觸摸屏實驗教程,可是我原理大概看懂了之后發(fā)現(xiàn)還是對觸摸屏實驗似懂非懂,所以我就去看了正點原子的視頻,正點原子觸摸屏實驗比野火的簡單了許多(我自己的理解),所以我就準備移植正點原子的觸摸屏實驗。我先把正點原子的觸摸屏驅(qū)動拷貝到我的工程里,我的STM開發(fā)板已經(jīng)打通了液晶的驅(qū)動,我再液晶的工程上新建了一個touch文件夾里面存放了正點原子的觸摸屏驅(qū)動。對正點原子驅(qū)動的更改主要如下。
//電阻/電容屏芯片連接引腳          
#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文件中的我自己開發(fā)板芯片連接的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的操作才有效
                //所以上拉之前,必須使能時鐘.才能實現(xiàn)真正的上拉輸出
                   
                 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;//已經(jīng)校準
                else                                          //未校準?
                {                                                                                     
                        LCD_Clear(White);        //清屏//************************************************************************
                        TP_Adjust();                  //屏幕校準  
                }                       
                TP_Get_Adjdata();       
        }
        return 1;                                                                          
}
這里是對觸摸屏初始化修改,前面如if(lcddev_id==0X5510)等的判斷都是對液晶屏的選擇,我移植使用的是電阻屏,所以把這些都刪除了。而且lcddev_id本來是正點原子對液晶定義的結(jié)構(gòu)體變量,我之前沒有使用正點原子的液晶驅(qū)動是我自己的,所以我在touch。c文件前定義了這個變量,并且直接賦值。

u16 lcddev_id = 0;
u16 lcddev_dir = 1;

其它的函數(shù),凡是關于液晶的畫點等的都把函數(shù)改為自己的液晶驅(qū)動函數(shù),這樣基本可以實現(xiàn)觸摸屏實驗了。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1