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

发布者:PositiveVibes最新更新时间:2021-03-03 来源: eefocus关键字:XPT2046  触摸屏  STM32 手机看文章 扫描二维码
随时随地手机看文章

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 引用地址:XPT2046触摸屏实验过程详解与STM32代码解析

上一篇:STM32中如何计算波特率
下一篇:STM32F0xx_TIM输入捕获(计算频率) 配置详细过程

推荐阅读最新更新时间:2024-11-08 00:38

S3C2440裸机------触摸屏_S3C2440触摸屏接口
1.触摸屏接口 分离的X Y转换模式是指逐个的转换X Y的坐标,它首先会启动X坐标的AD转换,转换成功之后数据会保存在ADCDAT0里面,同时会产生一个中断,在中断服务程序里面就可以把X坐标读出来了,然后可以启动Y坐标的转换, 转换成功之后,数据会保存在ADCDAT1里面,同时会产生一个中断,然后从寄存器里面把Y坐标读出来。 自动的X/Y坐标转换模式,你不需要单独的去读取X坐标或者Y坐标,可以通过设置寄存器,让他一次性的测试X和Y坐标。 等待中断模式(等待按下或者松开)。 2.触摸屏寄存器 2.1ADCCON寄存器 这个寄存器的 bit表示ADC转换是否结束,然后下面是设置时钟, 是选择输入通道,后面我们使用自
[单片机]
S3C2440裸机------<font color='red'>触摸屏</font>_S3C2440<font color='red'>触摸屏</font>接口
毕业设计| STM32+TI BQ76940设计48V BMS方案
这是根据TI官方那个方案改:精确监测和 50μA 待机电流、13S、48V 锂离子电池组参考设计TIDA-010030,链接如下: https://www. ti.com.cn/tool/cn/TIDA- 010030#technicaldocuments 原方案里的MCU用的是TI自家的MSP430,由于没用过,我自己改成了STM32F103C8T6。 除了电量计这块没有进行充放电学习过程外,基本实现要求功能,自定义的过流,短路,过放,过温都行。可以自动识别充放电,充电过程进行电池均衡(这里设置了一节),防充电器倒冲(程序存在BUG我最后只做到了10V,如果一上来就低于10V就不管用了),CAN总线传输数据也整上了。BQ7
[单片机]
毕业设计| STM32+TI BQ76940设计48V BMS方案
STM32 uCOS_II 实践 之 事件标识组
在中断的那一章节里介绍了计数信号量,它可以有效的传递一个二值信号,而时间标识组是多个信号量运算后作用与一个任务的工具。主要应用场合是两个以上的任务来同步一个任务。 在这里ucos的运行过程应该都有一定的了解了,对信号量传递的过程可以查看另外一个帖子,这里只关注事件标识组本身。 首先运用事件标识组需要四个步骤: 声明一个标识组指针变量, void *SemGrp_Task_LED1; 这个里面存放的是事件控制块的指针,并且是一个全局的变量,需要在对应的头文件里进行全局声明(extern),在对标识组进行初始化的时候,也就是对事件控制块的初始化,事件控制块是管理和调配这个资源的模块; 初始化事件标识组, SemG
[单片机]
浅谈 STM32 硬件I2C的使用 (中断方式 无DMA 无最高优先级)
引子 STM32的硬件I2C很多人都对它望而却步。因为很多电工都说,STM32 硬件 I2C有BUG、不稳定、死机等等……最后都使用GPIO模拟I2C。 的确,模拟I2C好用。但是在我看来在一个72M的Cortex-M3的MCU上这样做非常不妥。一般来说I2C是一种慢速总线,就算工作在400kHz的快速模式上,I2C传送每个字节仍需要至少23us——还没有计算地址、起始信号和结束信号的发送。如果使用GPIO模拟的I2C,这23us的CPU时间都在空转中浪费了,而这23us已经可以做不少的事情了,所以在STM32上I2C还是使用硬件为佳——虽然它多多少少有点缺陷。 这篇文章不是给完全没有接触过STM32 硬件I2C的新手看的,看这篇
[单片机]
浅谈 <font color='red'>STM32</font> 硬件I2C的使用 (中断方式 无DMA 无最高优先级)
基于STM32设计的智能门锁(华为云IOT)
1. 前言 随着智能家居的快速发展,智能门锁作为家庭安全的重要组成部分,受到了越来越多用户的关注和需求。为了满足用户对安全和便捷的需求,决定设计一款基于STM32的智能门锁,并将其与华为云IOT平台相结合。 传统的门锁存在一些弊端,比如使用钥匙容易丢失、开锁过程繁琐等。而智能门锁的出现,有效地解决了这些问题。我选择使用STM32作为智能门锁的核心控制器,因为STM32系列具有低功耗、高性能和丰富的外设接口等优点,非常适合嵌入式应用。 华为云IOT平台作为一个强大的云服务平台,提供了丰富的物联网解决方案和强大的数据处理能力。将智能门锁与华为云IOT平台相结合,可以实现远程控制、数据监测和智能化的功能,为用户带来更加便捷和安全
[单片机]
基于<font color='red'>STM32</font>设计的智能门锁(华为云IOT)
STM32小白入门(第十天)-------看门狗watchdog
记得刚开始面试的时候,被面试官问了一个问题:stm32这个项目如果系统跑飞了,死机了,你是怎么处理的? 那时候没听懂他的意思,傻乎乎的回了一句,没遇到过这种情况。事后,才后悔莫及啊,他的意思不就是问我看门狗的作用吗? 然后就没有然后了,一个嵌入式工程师,如果看门狗都不知道人家是不敢用你的。 一、什么是看门狗? 看门狗是一个定时器,我们可以设置一个计数值,当看门狗启动后,计数值在一定的频率下不停的减1,当计数值减到0,看门狗会发出一个复位信号给CPU,这样会造成嵌入式系统复位。 软件系统在正常工作的过程中,需要在看门狗计数值减到0之前,给计数值重新赋值,这个看门狗就不会复位了,这个过程- “喂狗”。 当嵌入式
[单片机]
<font color='red'>STM32</font>小白入门(第十天)-------看门狗watchdog
stm32进入standby模式
在利用库函数PWR_EnterSTANDBYMode()进入standby模式的时候,一直显示”Error : no definition for __WFI ……” 在整了两个多小时以后,终于知道原来是缺少cortexm3_macro.s文件 在把文件下载下来以后直接把汇编代码放在了C中,asm( WFI ); 一句话搞定 我是在IAR的环境下弄得
[单片机]
stm32自收发串口通信程序解读
今天学习了串口通信,在正点原子库函数模板中写了自收发的程序, void my_usart1_init(void) { GPIO_InitTypeDef gpio; //创建GPIO的初始化结构体 USART_InitTypeDef usart;//创建USART的初始化结构体 NVIC_InitTypeDef nvic;//创建NVIC的初始化结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1的时钟 gpio
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved