OpenEdv-开源电子网

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

求帮忙:触摸屏的移植

[复制链接]

81

主题

185

帖子

0

精华

高级会员

Rank: 4

积分
534
金钱
534
注册时间
2013-7-4
在线时间
13 小时
发表于 2013-7-4 12:49:03 | 显示全部楼层 |阅读模式
刚刚接手一个项目,需要移植触摸屏驱动,用的是uCGUI+uCOS_V1.3, 我搞了2天都没搞定,特来求教大大,下面是更改过的代码,我还是第一次接触这个啊,求大大帮忙

触摸芯片是xpt2046 链接SPI1 SCK (PA5)SPI1 MISO(PA6) SPI1 MOSI(PA7) Touch_int PG10 Touch_CS PG9
void Touch_GPIO_Init(void) 
GPIO_InitTypeDef  GPIO_InitStructure;
SPI_InitTypeDef   SPI_InitStructure;

/* ????GPIO?±?? */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOG |
RCC_APB2Periph_AFIO, ENABLE);

/* ???? SPI1 ???è?±?? */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);

/* ???? PA5??PA6??PA7 ?????????ì?????????? SCK, MISO and MOSI */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);

/* ??????·?????±???×???????????????????SPI1???°???è??????????????*/

/* ???? PG7 ???????ì?????????? TP_CS  */
XPT2046_CS_1();
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOG,&GPIO_InitStructure);

#if 1
/* ????????°ì·¨????????EEPROM MMA???????????????? */
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
// GPIO_Init(GPIOB, &GPIO_InitStructure);

#else
    EXTI_InitTypeDef  EXTI_InitStructure;

/* ???? PG6 ??????????????????????±????? */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOG, &GPIO_InitStructure);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOG, GPIO_PinSource10);

    /* ???????????????? */
    EXTI_InitStructure.EXTI_Line = EXTI_Line6;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

#endif

/* ???? SPI1?¤×÷???? */
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; /* ?í?????????? */
/*
SPI_BaudRatePrescaler_64 ????SCK?±????????1M
TSC2046 ??SCK?±???????ó????????????????×???200ns??????400ns????????2.5M

???¨?÷????????
SPI_BaudRatePrescaler_64 ?±??SCK?±???????? 1.116M
SPI_BaudRatePrescaler_32 ?±??SCK?±???????? 2.232M
*/
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1,&SPI_InitStructure);

/* ???? SPI1 */
SPI_Cmd(SPI1,ENABLE);  
}


#define T_DATA     GPIOA
#define DCLK_0   T_DATA->BRR  = GPIO_Pin_5
#define DCLK_1   T_DATA->BSRR = GPIO_Pin_5
#define TCS_0      GPIOG->BRR  = GPIO_Pin_9
#define TCS_1      GPIOG->BSRR = GPIO_Pin_9
#define DIN_0     T_DATA->BRR  = GPIO_Pin_6
#define DIN_1     T_DATA->BSRR = GPIO_Pin_6

#define DOUT    (T_DATA->IDR  & GPIO_Pin_7)




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-4 14:12:55 | 显示全部楼层
回复【楼主位】jimmjimm:
---------------------------------
单独测试触摸屏(不搞GUI,就读X,Y坐标),成功了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

81

主题

185

帖子

0

精华

高级会员

Rank: 4

积分
534
金钱
534
注册时间
2013-7-4
在线时间
13 小时
 楼主| 发表于 2013-7-4 14:33:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
不成功,按上去只有Touch_int有反应,我是看GPIOA和GPIOG的即时数值的....我连怎么找到并反应x,y的值都不知道.........55555求救啊

问题有一个大概的方向了....WriteCharTo7843 跟ReadFromCharFrom7843 似乎不能得到正确的值,不过这两个我完全没有看懂在做什么........完全不清楚num是怎么写和怎么读的...


void WriteCharTo7843(u8 num)          //SPI??????
{
u8 count=0;
DCLK_0;
for(count=0;count<8;count++)
{
if((num&0x80)==0x00)
DIN_0;
else
DIN_1;
num<<=1;                //?????????§
DCLK_0;                 //?????????§
delays(1);
DCLK_1; 
}
}
//**********************************************************
u16 ReadFromCharFrom7843(void)             //SPI ??????
{
u8 count=0;
u16 Num=0;
for(count=0;count<12;count++)
{
Num<<=1;
DCLK_1;
delays(1);
DCLK_0;
if(DOUT!=0) 
Num++;
}
return(Num);
}

int  GUI_TOUCH_X_MeasureX(void) 
{
unsigned int TX[5];
unsigned char i = 0;
u16 min,temp; //????????·¨???ò
u8 k = 0;
TCS_0;
for (i = 0;i <5 ;i++) {
WriteCharTo7843(0xD0);        //??????×? 10010000 ??????·?·?????X×?±ê ?ê??????????×???
DCLK_1; 
delays(1);
DCLK_0; 
TX=ReadFromCharFrom7843();
}
TCS_1;
for(i = 0;i < 5;i++) {  
min = i;  
for(k = i+1;k != 5;k++){
if(TX[min] > TX[k])  
   min = k;
    }   
temp=TX;    
TX=TX[min];   
TX[min]=temp;
}
  return TX[2];
}

int  GUI_TOUCH_X_MeasureY(void) 
{
int TY[5];
unsigned char i = 0;
u16 min,temp; //????????·¨???ò
u8 k = 0;
TCS_0;
for (i = 0;i <5 ;i++) {
WriteCharTo7843(0x90);        //??????×? 10010000 ??????·?·?????Y×?±ê ?ê??????????×???
DCLK_1; 
delays(1);
DCLK_0; 
TY=ReadFromCharFrom7843();
  }
TCS_1;
for(i = 0;i < 5;i++) {  
min = i;  
for(k = i+1;k != 5;k++){
if(TY[min] > TY[k])  
   min = k;
    }   
temp=TY;    
TY=TY[min];   
TY[min]=temp;
}
  return TY[2];
}









回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-4 16:34:38 | 显示全部楼层
回复【3楼】jimmjimm:
---------------------------------
研究下XPT2406的手册吧.还搞了2天,居然都不知道在呢么读XPT2046,你这跑题跑远了啊...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

81

主题

185

帖子

0

精华

高级会员

Rank: 4

积分
534
金钱
534
注册时间
2013-7-4
在线时间
13 小时
 楼主| 发表于 2013-7-5 14:12:09 | 显示全部楼层
回复【4楼】正点原子:

回复【3楼】jimmjimm:
---------------------------------
研究下XPT2406的手册吧.还搞了2天,居然都不知道在呢么读XPT2046,你这跑题跑远了啊...

---------------------------------
找到一点问题,GUI_TOUCH_X_MeasureX,GUI_TOUCH_X_MeasureY里面的TX和TY都是FFF可是ReadFromCharFrom7843返回的值却不是,我把TX重新定义成u16也一样,
这是为什么呢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 11:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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