贝多芬爵士 发表于 2013-1-7 19:44 
能看看你模拟读取数据的那部分程序吗?
// 软件模拟SPI方式读取触摸屏控制器
#define TOUCH_INT_PIN GPIO_Pin_7
#define TOUCH_INT_PORT GPIOF
#define TOUCH_INT_PIN_SCK RCC_AHBPeriph_GPIOF
#define TOUCH_CS_PIN GPIO_Pin_0
#define TOUCH_CS_PORT GPIOF
#define TOUCH_CS_PIN_SCK RCC_AHBPeriph_GPIOF
#define TOUCH_SCK_PIN GPIO_Pin_15
#define TOUCH_SCK_PORT GPIOC
#define TOUCH_SCK_PIN_SCK RCC_AHBPeriph_GPIOC
#define TOUCH_MISO_PIN GPIO_Pin_14
#define TOUCH_MISO_PORT GPIOC
#define TOUCH_MISO_PIN_SCK RCC_AHBPeriph_GPIOC
#define TOUCH_MOSI_PIN GPIO_Pin_13
#define TOUCH_MOSI_PORT GPIOC
#define TOUCH_MOSI_PIN_SCK RCC_AHBPeriph_GPIOC
#define TFT_TOUCH_CS_L GPIO_ResetBits(TOUCH_CS_PORT, TOUCH_CS_PIN)
#define TFT_TOUCH_CS_H GPIO_SetBits(TOUCH_CS_PORT, TOUCH_CS_PIN)
#define TFT_TOUCH_INT GPIO_ReadInputDataBit(TOUCH_INT_PORT,TOUCH_INT_PIN)
#define TFT_TOUCH_SCK_L GPIO_ResetBits(TOUCH_SCK_PORT, TOUCH_SCK_PIN)
#define TFT_TOUCH_SCK_H GPIO_SetBits(TOUCH_SCK_PORT, TOUCH_SCK_PIN)
#define TFT_TOUCH_MOSI_L GPIO_ResetBits(TOUCH_MOSI_PORT, TOUCH_MOSI_PIN)
#define TFT_TOUCH_MOSI_H GPIO_SetBits(TOUCH_MOSI_PORT, TOUCH_MOSI_PIN)
#define TFT_TOUCH_MISO GPIO_ReadInputDataBit(TOUCH_MISO_PORT,TOUCH_MISO_PIN)
/*******************************************************************************
函数名称:TFT_Write_Byte()
功 能:向SPI总线发送和接收一个数据
参 数:无
返回值 :无
********************************************************************************/
void TFT_Write_Byte(unsigned char dat)
{
unsigned char i=0;
TFT_TOUCH_SCK_L;
for(i=0;i<8;i++)
{
if(dat&0x80) TFT_TOUCH_MOSI_H;
else TFT_TOUCH_MOSI_L;
dat<<=1;
TFT_TOUCH_SCK_L;
TFT_TOUCH_SCK_H; //输出上升沿有效
}
}
/*******************************************************************************
函数名称:TFT_Read_AD()
功 能:读取X轴或Y轴的ADC值
参 数:CMD---指令
返回值 :读到的数据--12位有效数据
********************************************************************************/
unsigned short int TFT_Read_AD(unsigned char CMD)
{
unsigned char count;
unsigned short int Num ;
TFT_TOUCH_CS_L; // CS=0 --选中XPT25046
delay_us(10);
TFT_Write_Byte(CMD);
delay_us(10); // 延时等待转换完成--ADS78最长转换时间
TFT_TOUCH_SCK_L;
delay_us(10);
TFT_TOUCH_SCK_H; //输出上升沿有效
TFT_TOUCH_SCK_L;
for( count =0; count<16; count++)
{
Num <<=1;
TFT_TOUCH_SCK_L;
TFT_TOUCH_SCK_H;
if( TFT_TOUCH_MISO )Num++;
}
Num >>=4; //只有高12位有效.
Num &=0xfff; //只有高12位有效.
TFT_TOUCH_CS_H; // CS=1 结束通信
return(Num);
}
|