16.4 XPT2046 的操作
1. XPT2046 的初始化
XPT2046 说起来其实就是一个 AD 转换器,所以它适合不需要什么初始化设置的,
而具体的初始化其实也就是单片机 IO 的初始化和 SPI 的初始化。
这次 STM32 是使用 SPI1 来进行操作,SPI 的设置其实在前几节课已经讲过了,这
里就不重复讲了,初始化的具体代码如下:
/**********************************************************************
* Function Name : TOUCH_Init
* Description : 初始化触摸屏
* Input : None
* Output : None
* Return : None
**********************************************************************/
void TOUCH_Init(void)
{
GPIO_InitTypeDef GPIO_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 的
评论0
最新资源