历史上的今天
今天是:2025年03月03日(星期一)
2021年03月03日 | XPT2046触摸屏实验过程详解与STM32代码解析
2021-03-03 来源:eefocus
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);
}
史海拾趣
|
Chrome渲染引擎同Safari 正开发Linux和MAC版 北京时间9月2日消息:据国外媒体报道,Google周一通过漫画宣布,将推出网络浏览器 Chrome。目前,有关Chrome的技术内容也逐渐出现在了网上。 据悉,Chrome浏览器使用了开源的网页渲染引擎WebKit,这个引擎也被使用在了苹果公司的Safari浏览器中, ...… 查看全部问答> |
|
本人有个带驱动器的步进电机,型号为BL55S-M01是三星打印机上的,上面带一个10针的插座分别为:1.24V 2. 24V 3.GND 4.GND 5.BK 6.5V(NC) 7.ST/SP 8.RD 9.CLK 10.CW /CCW。哪位高手能否介绍一下那些管脚的作用?… 查看全部问答> |
|
我用的是友善mini2440,Nand Flash型号是K9F1G08,现在是裸机学习; 我在进行读操作时,读出的第一个字节总是 30,然后才是真正的数据; 我的写操作写不进去。 请大家指点下。谢谢! … 查看全部问答> |
|
请教;以前在在ST Visual Develop环境下完成的程序现在移植到IAR环境编译报如下错误:不知问题出在哪?? Building configuration: stm8lianfang - Debug Updating build tree... Linking Error[Lp011]: section placement failed: una ...… 查看全部问答> |




