XPT2046触摸屏实验过程详解与STM32代码解析

来源:本站
导读:目前正在解读《XPT2046触摸屏实验过程详解与STM32代码解析》的相关信息,《XPT2046触摸屏实验过程详解与STM32代码解析》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《XPT2046触摸屏实验过程详解与STM32代码解析》的详细说明。
简介:XPT2046说起来其实就是一个AD转换器,所以它适合不需要什么初始化设置的,而具体的初始化其实也就是单片机IO的初始化和SPI的初始化。

1.XPT2046的初始化

XPT2046说起来其实就是一个AD转换器,所以它适合不需要什么初始化设置的,而具体的初始化其实也就是单片机IO的初始化和SPI的初始化。

这次STM32是使用SPI1来进行操作,SPI的设置其实在前几节课已经讲过了,这里就不重复讲了,初始化的具体代码如下:

/**********************************************************************

*FuncTIonName:TOUCH_Init

*DescripTIon:初始化触摸屏

*Input:None

*Output:None

*Return:None

**********************************************************************/

voidTOUCH_Init(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

/*SPI的IO口和SPI外设打开时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);

/*TOUCH-CS的IO口设置*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOD,&GPIO_InitStructure);

/*TOUCH-PEN的IO口设置*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;

GPIO_Init(GPIOD,&GPIO_InitStructure);SPI1_Config();

/*要使用FLASH来存储校正参数,所以注意之前要初始化*/

/*检测是否有校正参数*/

FLASH_ReadData(&TouchAdj.posState,TOUCH_ADJ_ADDR,sizeof(TouchAdj));

if(TouchAdj.posState!=TOUCH_ADJ_OK)

{

TOUCH_Adjust();//校正

}

}

在这个函数中,调用了SPI1的初始化函数,和触摸屏的校正程序,下面是SPI1的

初始化程序,校正原理我们在后面在讲述。

/**********************************************************************

*FuncTIonName:SPI1_Config

*DescripTIon:初始化SPI2

*Input:None

*Output:None

*Return:None

*********************************************************************/

voidSPI1_Config(void)

{

GPIO_InitTypeDefGPIO_InitStructure;SPI_InitTypeDefSPI_InitStructure;

/*SPI的IO口和SPI外设打开时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);

/*SPI的IO口设置*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//PA5.6.7上拉

/********************************************************************/

/*******************设置SPI的参数***********************************/

/*********************************************************************/SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//选择全双工SPI模式

SPI_InitStructure.SPI_Mode=SPI_Mode_Master;//主机模式SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;//8位SPISPI_InitStructure.SPI_CPOL=SPI_CPOL_High;//时钟悬空高电平SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;//在第二个时钟采集数据SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;//Nss使用软件控制

/*选择波特率预分频为256*/

SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;//从最高位开始传输

SPI_InitStructure.SPI_CRCPolynomial=7;

SPI_Cmd(SPI1,ENABLE);SPI_Init(SPI1,&SPI_InitStructure);

}

提醒:《XPT2046触摸屏实验过程详解与STM32代码解析》最后刷新时间 2024-03-14 01:07:27,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《XPT2046触摸屏实验过程详解与STM32代码解析》该内容的真实性请自行鉴别。