lhwaizhu 发表于 2012-8-10 09:34:19

请教大家关于ADS7843的时序

我软件模拟的SPI对7843进行操作,12位的AD转换,我测试发现读回的AD转换值x坐标最大300多,y坐标最大2000多,而且位置不准,是不是我模拟时序的问题啊?下面是程序,请教大家了,谢谢。
//触摸控制接口
#defineDCLK_H   P3OUT|=(1<<0)
#defineDCLK_L   P3OUT&=~(1<<0)
#defineCS_H       P3OUT|=(1<<1)
#defineCS_L       P3OUT&=~(1<<1)
#defineDIN_L      P3OUT|=(1<<2)
#defineDIN_H      P3OUT&=~(1<<2)
#defineBUSY_OK       P3IN&0x08    //为0表示不繁忙可读数据
#defineDOUT       P3IN&0x10   //触摸屏的数据输出

#definePenirq   P3IN&0x20    //触碰触摸屏时,ADS7843Penirq引脚由未触摸时的高电平变为低电平

structstruct1coordinate;//定义一个结构变量,用于存放触摸点采样结果
unsigned int lx,ly;    //根据采集到的参数转换为TFT上的实际坐标值


void Init_2046()
{
      CS_H;
      DCLK_L;
      DIN_L;      
}


//写8位命令到触摸控制IC,模拟SPI
voidWrite_2046(unsigned char temp)
{
      unsigned char i=0;
      for(i=0;i<8;i++)
      {
                if(temp&0x80)
                      DIN_H;
                else
                      DIN_L;
                DCLK_H;
                delay_us(4);
                DCLK_L;
                delay_us(4);
                temp<<=1;
      }
}
//从触摸IC读回12位数据
unsigned int Read_2046()
{
      unsigned char i=0;
      unsigned int temp=0;
      P3DIR&=~(1<<4);//数据口设为输入
      for(i=0;i<12;i++)
      {
                DCLK_H;
                delay_us(4);
               
                if(DOUT)
                      temp++;
                temp<<=1;
               
                DCLK_L;
                delay_us(4);
      }
      P3DIR|=(1<<4);
      return temp;
}
//读取x y坐标 返回读取到的触摸点的电压值
struct struct1 AD_2046()
{
      struct struct1 pix;
      CS_L;
      Write_2046(0x90);   //送控制字
      DCLK_H;
      delay_us(4);
      DCLK_L;
      delay_us(4);
      pix.y=Read_2046();
      Write_2046(0xd0);   //读x坐标
      DCLK_H;
      delay_us(4);
      DCLK_L;
      delay_us(4);
      pix.x=Read_2046();
      CS_H;
      return pix;
}

lhwaizhu 发表于 2012-8-10 12:34:26

顶一下。。。

lhwaizhu 发表于 2012-8-11 11:08:11

请教下,我写的时序有问题吗

lhwaizhu 发表于 2012-8-11 11:11:54

请教下,我写的时序有问题吗

xuancqu 发表于 2012-12-18 10:51:37

voidWrite_2046(unsigned char temp)
这个好像有问题   CLKH和CLKL换个位置

我的触摸屏坐标不成线性,郁闷
页: [1]
查看完整版本: 请教大家关于ADS7843的时序