当前位置: 首页 > news >正文

政府网站建设个人先进推荐材料seo推荐

政府网站建设个人先进推荐材料,seo推荐,可以打广告的平台,中企动力做的保安服务网站目录 一、简介 二、硬件原理 ​编辑1、CT_INT 2、I2C2_SCL和I2C2_SDA 3、RESET复位引脚 三、FT54x6/FT52x6电容触摸芯片 四、代码编写 1、编写ft5426.h 2、编写ft5426.c 3、main函数 一、简介 电容屏只需要手指轻触即可,而电阻屏是需要手指给予一定的压力才…

目录

一、简介

二、硬件原理

​编辑1、CT_INT

2、I2C2_SCL和I2C2_SDA

3、RESET复位引脚

三、FT54x6/FT52x6电容触摸芯片

四、代码编写

 1、编写ft5426.h

2、编写ft5426.c

3、main函数


一、简介

电容屏只需要手指轻触即可,而电阻屏是需要手指给予一定的压力才有反应,而且电容触摸芯片输出的触摸点坐标信息为对应的屏幕像素点信息,因此不需要校准,电阻屏需要校准。如今多点电容触摸屏已经得到了广泛的应用,手机、平板、电脑、广告机等等,如果要做人机交互设备的开发,多点电容触摸屏基本是不可能绕过去的
电容触摸屏需要一个IC驱动控制的,一般是I2C接口,多点触摸屏驱动最终就是一个I2C外设驱动

二、硬件原理

找到RGB的原理图

1、CT_INT

触摸中断线

 连接到了GPIO1_IO09,查数据手册

可以复用为GPIO1_IO09

2、I2C2_SCL和I2C2_SDA

 I2C2_SCL:连接到了UART5_TXD;I2C2_SDA:连接到了UART5_RXD,查数据手册

 都可以复用

3、RESET复位引脚

 连接到了SNVS_TAMPER9,查数据手册

 可以看到就复位为GPIO5_IO09

三、FT54x6/FT52x6电容触摸芯片

 使用到的部分寄存器如下

寄存器地址寄存器功能描述
0X00[6:4]模式寄存器设置 FT5426 的工作模式: 000:正常模式。001:系统信息模式100:测试模式。
0X02[3:0]触摸状态寄存器记录有多少个触摸点,有效值为 1~5。
0X03[7:6]第一个触摸点 X 坐标高位数据事件标志: 00:按下。01:抬起10:接触11:保留
[3:0]X 轴坐标值高 4 位。
0X04[7:0]第一个触摸点 X 坐标低位数据X 轴坐标值低 8 位
0X05[7:4]第一个触摸点 Y 坐标高位数据触摸点的 ID。
[3:0]Y 轴坐标高 4 位
0X06[7:0]第一个触摸点 Y 坐标低位数据Y 轴坐标低 8 位
0X09[7:6]第二个触摸点 X 坐标高位数据与寄存器 0X03 含义相同。
[3:0]
0X0A[7:0]第二个触摸点 X 坐标低位数据与寄存器 0X04 含义相同。
0X0B[7:4]第二个触摸点 Y 坐标高位数据与寄存器 0X05 含义相同。
[3:0]
0X0C[7:0]第二个触摸点 Y 坐标低位数据与寄存器 0X06 含义相同
0X0F[7:6]第三个触摸点 X 坐标高位数据与寄存器 0X03 含义相同。
[3:0]
0X10[7:0]第三个触摸点 X 坐标低位数据与寄存器 0X04 含义相同。
0X11[7:4]第三个触摸点 Y 坐标高位数据与寄存器 0X05 含义相同。
[3:0]
0X12[7:0]第三个触摸点 Y 坐标低位数据与寄存器 0X06 含义相同
0X15[7:6]第四个触摸点 X 坐标高位数据与寄存器 0X03 含义相同。
[3:0]
0X16[7:0]第四个触摸点 X 坐标低位数据与寄存器 0X04 含义相同。
0X17[7:4]第四个触摸点 Y 坐标高位数据与寄存器 0X05 含义相同。
[3:0]
0X18[7:0]第四个触摸点 Y 坐标低位数据与寄存器 0X06 含义相同
0X1B[7:6]第五个触摸点 X 坐标高位数据与寄存器 0X03 含义相同。
[3:0]
0X1C[7:0]第五个触摸点 X 坐标低位数据与寄存器 0X04 含义相同。
0X1D[7:4]第五个触摸点 Y 坐标高位数据与寄存器 0X05 含义相同。
[3:0]
0X1E[7:0]第五个触摸点 Y 坐标低位数据与寄存器 0X06 含义相同
0XA1[7:0]版本寄存器版本高字节
0XA2[7:0]版本低字节
0XA4[7:0]中断模式寄存器用于设置中断模式: 0:轮询模式1:触发模式

这里使用设备的IIC地址为0X38

四、代码编写

创建文件

 1、编写ft5426.h

#ifndef __BSP_FT5426_H
#define __BSP_FT5426_H#include "imx6ul.h"
#include "bsp_gpio.h"
#include "bsp_int.h"
#include "bsp_delay.h"
#include "bsp_i2c.h"
#include "stdio.h"/*寄存器宏*/
#define FT5426_ADDR				0X38	/* FT5426设备地址 		*/#define FT5426_DEVICE_MODE		0X00 	/* 模式寄存器 			*/
#define FT5426_IDGLIB_VERSION	0XA1 	/* 固件版本寄存器 			*/
#define FT5426_IDG_MODE			0XA4	/* 中断模式				*/
#define FT5426_TD_STATUS		0X02	/* 触摸状态寄存器 			*/
#define FT5426_TOUCH1_XH		0X03	/* 触摸点坐标寄存器,* 一个触摸点用4个寄存器存储坐标数据*/#define FT5426_XYCOORDREG_NUM	30		/* 触摸点坐标寄存器数量 */
#define FT5426_INIT_FINISHED	1		/* 触摸屏初始化完成 			*/
#define FT5426_INIT_NOTFINISHED	0		/* 触摸屏初始化未完成 			*/#define FT5426_TOUCH_EVENT_DOWN			0x00	/* 按下 		*/
#define FT5426_TOUCH_EVENT_UP			0x01	/* 释放 		*/
#define FT5426_TOUCH_EVENT_ON			0x02	/* 接触 		*/
#define FT5426_TOUCH_EVENT_RESERVED		0x03	/* 没有事件 *//* 触摸屏结构体 */
struct ft5426_dev_struc
{	unsigned char initfalg;		/* 触摸屏初始化状态 */unsigned char intflag;		/* 标记中断有没有发生 */unsigned char point_num;	/* 触摸点 		*/unsigned short x[5];		/* X轴坐标 	*/unsigned short y[5];		/* Y轴坐标 	*/};extern struct ft5426_dev_struc ft5426_dev;void ft5426_init();
void gpio1_io09_irqhandler(unsigned int gicciar,void *param);
unsigned char ft5426_writeonebyte(unsigned char addr,unsigned char reg, unsigned char data);
unsigned char ft5426_readonebyte(unsigned char addr,unsigned char reg);
void ft5426_read_len(unsigned char addr,unsigned char reg,unsigned char len,unsigned char *buf); 
void ft5426_read_tpcoord();                                                                   
#endif

2、编写ft5426.c

#include "bsp_ft5426.h"struct ft5426_dev_struc ft5426_dev;
/*初始化5426*/
void ft5426_init()
{unsigned char reg_value[2];/* 1、初始化IIC2 IO* I2C2_SCL -> UART5_TXD* I2C2_SDA -> UART5_RXD*/IOMUXC_SetPinMux(IOMUXC_UART5_TX_DATA_I2C2_SCL,1);/*复用为I2C2_SCL*/IOMUXC_SetPinMux(IOMUXC_UART5_RX_DATA_I2C2_SDA,1);/*复用为I2C2_SDA*//* 配置I2C2 IO属性	*bit 16:0 HYS关闭*bit [15:14]: 1 默认47K上拉*bit [13]: 1 pull功能*bit [12]: 1 pull/keeper使能 *bit [11]: 0 关闭开路输出*bit [7:6]: 10 速度100Mhz*bit [5:3]: 110 驱动能力为R0/6*bit [0]: 1 高转换率*/IOMUXC_SetPinConfig(IOMUXC_UART5_TX_DATA_I2C2_SCL,0x70b0);IOMUXC_SetPinConfig(IOMUXC_UART5_RX_DATA_I2C2_SDA,0x70b0);/*初始化INT引脚,使能中断*/gpio_pin_config_t ctint_config;IOMUXC_SetPinMux(IOMUXC_GPIO1_IO09_GPIO1_IO09,0);/*复用为GPIO1_IO09*/IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO09_GPIO1_IO09,0xf080);/* 中断IO初始化 */ctint_config.direction =kGPIO_IntRisingOrFallingEdge;gpio_init(GPIO1 , 9 , &ctint_config);GIC_EnableIRQ(GPIO1_Combined_0_15_IRQn);system_register_irqhandler(GPIO1_Combined_0_15_IRQn,(system_irq_handler_t)gpio1_io09_irqhandler,NULL);gpio_enableint(GPIO1 , 9);/*复位引脚rst初始化*/gpio_pin_config_t ctrst_config;IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER9_GPIO5_IO09,0);/*复用为GPIO5_IO09*/IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER9_GPIO5_IO09,0x10b0);gpio_init(GPIO5 , 9 , &ctrst_config);gpio_pinwrite(GPIO5 , 9 , 0);/*复位*/delayms(50);gpio_pinwrite(GPIO5 , 9 , 1);/*停止复位*/delayms(50);/*I2C2初始化*/i2c_init(I2C2);/*ft5426初始化*/ft5426_read_len(FT5426_ADDR,FT5426_IDGLIB_VERSION,2,reg_value);printf("touch frimware version:%#x\r\n",((unsigned short)reg_value[0] << 8) | reg_value[1]);/*设置工作在正常模式*/ft5426_writeonebyte(FT5426_ADDR,FT5426_DEVICE_MODE,0);/*设置中断模式*/ft5426_writeonebyte(FT5426_ADDR,FT5426_IDG_MODE,1);ft5426_dev.initfalg = FT5426_INIT_FINISHED;}
/*中断处理函数*/
void gpio1_io09_irqhandler(unsigned int gicciar , void *param)
{if(ft5426_dev.initfalg == FT5426_INIT_FINISHED){ft5426_read_tpcoord();}/*清除中断标志位*/gpio_clearintflags(GPIO1,9);
}
/*向FT5426写入数据*/
unsigned char ft5426_writeonebyte(unsigned char addr,unsigned char reg, unsigned char data)
{unsigned char status=0;unsigned char writedata=data;struct i2c_transfer masterXfer;/* 配置I2C xfer结构体 */masterXfer.slaveAddress = addr; 			/* 设备地址 				*/masterXfer.direction = kI2C_Write;			/* 写入数据 				*/masterXfer.subaddress = reg;				/* 要写入的寄存器地址 			*/masterXfer.subaddressSize = 1;				/* 地址长度一个字节 			*/masterXfer.data = &writedata;				/* 要写入的数据 				*/masterXfer.dataSize = 1;  					/* 写入数据长度1个字节			*/if(i2c_master_transfer(I2C2, &masterXfer))status=1;return status;
}
/*从FT5426读数据*/
unsigned char ft5426_readonebyte(unsigned char addr,unsigned char reg)
{unsigned char val=0;struct i2c_transfer masterXfer;	masterXfer.slaveAddress = addr;				/* 设备地址 				*/masterXfer.direction = kI2C_Read;			/* 读取数据 				*/masterXfer.subaddress = reg;				/* 要读取的寄存器地址 			*/masterXfer.subaddressSize = 1;				/* 地址长度一个字节 			*/masterXfer.data = &val;						/* 接收数据缓冲区 				*/masterXfer.dataSize = 1;					/* 读取数据长度1个字节			*/i2c_master_transfer(I2C2, &masterXfer);return val;
}
/*从FT5426读多个寄存器数据*/
void ft5426_read_len(unsigned char addr,unsigned char reg,unsigned char len,unsigned char *buf)
{struct i2c_transfer masterXfer;	masterXfer.slaveAddress = addr;				/* 设备地址 				*/masterXfer.direction = kI2C_Read;			/* 读取数据 				*/masterXfer.subaddress = reg;				/* 要读取的寄存器地址 			*/masterXfer.subaddressSize = 1;				/* 地址长度一个字节 			*/masterXfer.data = buf;						/* 接收数据缓冲区 				*/masterXfer.dataSize = len;					/* 读取数据长度1个字节			*/i2c_master_transfer(I2C2, &masterXfer);
}
/*读取触摸坐标信息*/
void ft5426_read_tpcoord()
{unsigned char pointbuf[FT5426_XYCOORDREG_NUM],i=0,type=0;ft5426_dev.point_num = ft5426_readonebyte(FT5426_ADDR,FT5426_TD_STATUS);printf("touch num = %d\r\n",ft5426_dev.point_num);/*触摸点信息寄存器*/ft5426_read_len(FT5426_ADDR,FT5426_TOUCH1_XH,FT5426_XYCOORDREG_NUM,pointbuf);for(i=0;i<ft5426_dev.point_num;i++){unsigned char *buf = &pointbuf[i*6];ft5426_dev.y[i] = ((buf[0] << 8) | buf[1]) & 0xfff;ft5426_dev.x[i] = ((buf[2] << 8) | buf[3]) & 0xfff;type = buf[0] >> 6;if(type == FT5426_TOUCH_EVENT_DOWN){}else if(type == FT5426_TOUCH_EVENT_UP){}else if(type == FT5426_TOUCH_EVENT_ON){}else{}}}

3、main函数


#include "bsp_clk.h"
#include "bsp_delay.h"
#include "bsp_led.h"
#include "bsp_beep.h"
#include "bsp_key.h"
#include "bsp_int.h"
#include "bsp_uart.h"
#include "bsp_lcd.h"
#include "bsp_lcdapi.h"
#include "bsp_rtc.h"
#include "bsp_icm20608.h"
#include "bsp_spi.h"
#include "stdio.h"
#include "bsp_ft5426.h"
#include "bsp_gt9147.h"/** @description	: main函数* @param 		: 无* @return 		: 无*/
int main(void)
{unsigned char i = 0;unsigned char state = OFF;int_init(); 				/* 初始化中断(一定要最先调用!) */imx6u_clkinit();			/* 初始化系统时钟 					*/delay_init();				/* 初始化延时 					*/clk_enable();				/* 使能所有的时钟 					*/led_init();					/* 初始化led 					*/beep_init();				/* 初始化beep	 				*/uart_init();				/* 初始化串口,波特率115200 */lcd_init();					/* 初始化LCD 					*/		/* 初始化触摸屏					*/ gt9147_init();if(gt_init_fail==1) //判断gt系列初始化是否失败{ft5426_init();}tftlcd_dev.forecolor = LCD_RED;lcd_show_string(50, 10, 400, 24, 24, (char*)"ALPHA-IMX6UL TOUCH TEST");    /* 显示字符串 */lcd_show_string(50, 40, 200, 16, 16, (char*)"MY@4384");  lcd_show_string(50, 60, 200, 16, 16, (char*)"2023/2/22");  lcd_show_string(50, 110, 400, 16, 16,	(char*)"TP Num	:");  lcd_show_string(50, 130, 200, 16, 16,	(char*)"Point0 X:");  lcd_show_string(50, 150, 200, 16, 16,	(char*)"Point0 Y:");  lcd_show_string(50, 170, 200, 16, 16,	(char*)"Point1 X:");  lcd_show_string(50, 190, 200, 16, 16,	(char*)"Point1 Y:");  lcd_show_string(50, 210, 200, 16, 16,	(char*)"Point2 X:");  lcd_show_string(50, 230, 200, 16, 16,	(char*)"Point2 Y:");  lcd_show_string(50, 250, 200, 16, 16,	(char*)"Point3 X:");  lcd_show_string(50, 270, 200, 16, 16,	(char*)"Point3 Y:");  lcd_show_string(50, 290, 200, 16, 16,	(char*)"Point4 X:");  lcd_show_string(50, 310, 200, 16, 16,	(char*)"Point4 Y:"); while(1)					{lcd_shownum(50 + 72, 110, ft5426_dev.point_num , 1, 16);lcd_shownum(50 + 72, 130, ft5426_dev.x[0], 5, 16);lcd_shownum(50 + 72, 150, ft5426_dev.y[0], 5, 16);lcd_shownum(50 + 72, 170, ft5426_dev.x[1], 5, 16);lcd_shownum(50 + 72, 190, ft5426_dev.y[1], 5, 16);lcd_shownum(50 + 72, 210, ft5426_dev.x[2], 5, 16);lcd_shownum(50 + 72, 230, ft5426_dev.y[2], 5, 16);lcd_shownum(50 + 72, 250, ft5426_dev.x[3], 5, 16);lcd_shownum(50 + 72, 270, ft5426_dev.y[3], 5, 16);lcd_shownum(50 + 72, 290, ft5426_dev.x[4], 5, 16);lcd_shownum(50 + 72, 310, ft5426_dev.y[4], 5, 16);delayms(10);i++;	if(i == 50){	i = 0;state = !state;led_switch(LED0,state); }}return 0;
}

烧写到sd卡插到开发版上后就触摸,就会显示多少个触摸点和相关触摸点的坐标


文章转载自:
http://biparietal.isnyv.cn
http://accomplishment.isnyv.cn
http://atticism.isnyv.cn
http://barefooted.isnyv.cn
http://babel.isnyv.cn
http://astronomer.isnyv.cn
http://approach.isnyv.cn
http://appealing.isnyv.cn
http://animally.isnyv.cn
http://breslau.isnyv.cn
http://allocable.isnyv.cn
http://budapest.isnyv.cn
http://carmarthenshire.isnyv.cn
http://accessorius.isnyv.cn
http://chemiculture.isnyv.cn
http://cassimere.isnyv.cn
http://catchcry.isnyv.cn
http://alleviation.isnyv.cn
http://antitank.isnyv.cn
http://boxy.isnyv.cn
http://awkwardly.isnyv.cn
http://asap.isnyv.cn
http://accuse.isnyv.cn
http://chellian.isnyv.cn
http://cetaceum.isnyv.cn
http://caseworker.isnyv.cn
http://beatify.isnyv.cn
http://beforetime.isnyv.cn
http://affably.isnyv.cn
http://basalt.isnyv.cn
http://amundsen.isnyv.cn
http://ambilingnal.isnyv.cn
http://accompanyist.isnyv.cn
http://ballistically.isnyv.cn
http://areopagus.isnyv.cn
http://brassiere.isnyv.cn
http://annullable.isnyv.cn
http://barhop.isnyv.cn
http://advisee.isnyv.cn
http://accessorius.isnyv.cn
http://bibasic.isnyv.cn
http://because.isnyv.cn
http://boldly.isnyv.cn
http://childminder.isnyv.cn
http://betweenness.isnyv.cn
http://boondocks.isnyv.cn
http://cartesianism.isnyv.cn
http://backslidden.isnyv.cn
http://causer.isnyv.cn
http://bedfellow.isnyv.cn
http://anility.isnyv.cn
http://brule.isnyv.cn
http://boffola.isnyv.cn
http://benni.isnyv.cn
http://catamite.isnyv.cn
http://adipocellulose.isnyv.cn
http://characin.isnyv.cn
http://aphemic.isnyv.cn
http://bastinado.isnyv.cn
http://antimonarchist.isnyv.cn
http://chansonette.isnyv.cn
http://bisulfide.isnyv.cn
http://cashaw.isnyv.cn
http://absence.isnyv.cn
http://bernie.isnyv.cn
http://amphibolic.isnyv.cn
http://bleacherite.isnyv.cn
http://caulocarpous.isnyv.cn
http://aniconic.isnyv.cn
http://checkrail.isnyv.cn
http://barbados.isnyv.cn
http://ble.isnyv.cn
http://chaparajos.isnyv.cn
http://astounding.isnyv.cn
http://batteries.isnyv.cn
http://caucasoid.isnyv.cn
http://aldis.isnyv.cn
http://amyl.isnyv.cn
http://aja.isnyv.cn
http://bay.isnyv.cn
http://chinela.isnyv.cn
http://changeless.isnyv.cn
http://ankylosaur.isnyv.cn
http://appendicle.isnyv.cn
http://barathea.isnyv.cn
http://aaron.isnyv.cn
http://blt.isnyv.cn
http://bandgap.isnyv.cn
http://armorer.isnyv.cn
http://atmologist.isnyv.cn
http://christolatry.isnyv.cn
http://cgi.isnyv.cn
http://anadyr.isnyv.cn
http://basra.isnyv.cn
http://bossiness.isnyv.cn
http://bowdlerize.isnyv.cn
http://bladdery.isnyv.cn
http://breakaway.isnyv.cn
http://bedlamite.isnyv.cn
http://catgut.isnyv.cn
http://www.tj-hxxt.cn/news/36642.html

相关文章:

  • 甘肃省建设厅查行网站目录搜索引擎有哪些
  • 建设网站排名靠前一起来看在线观看免费
  • 做网站关键词优化的公司appstore关键词优化
  • 网站排名做不上去安卓优化大师清理
  • 兰州最好的网站建设公司网络销售公司经营范围
  • 简单的网站设计多少钱app地推接单平台有哪些
  • 网站建设关于公司怎么写免费收录网站提交
  • 带动画引导的网站百度指数官网数据
  • 寻找郑州网站建设公司百度商城
  • 网站建设主要工作由哪些cpa广告联盟
  • 线上做笔记的网站网站推广费用一般多少钱
  • 网站建设调研论文seo关键词首页排名
  • wordpress更换域名教程seo营销网站的设计标准
  • 网站做专题页面cctv 13新闻频道
  • 西宁市网站设计网络营销学校
  • 一个网站做多有几种颜色百度一下官网
  • 有名的seo外包公司农大南路网络营销推广优化
  • 做苗木行业网站赚钱优化大师好用吗
  • tinkphp5网站开发济南百度竞价开户
  • 保定建网站深圳最新通告今天
  • 朔州市建设监理公司网站恢复2345网址导航
  • pcb计价网站建设天津关键词优化网站
  • 社区类网站建设2024百度下载
  • 未来分发网下载app短视频seo营销系统
  • 网站备案价格关键词排名公司
  • 网站的推广和宣传工作如何做网上营销培训课程
  • 红杏入口自动跳转ncnc44seo网站技术培训
  • 用户上传网站用什么做线上推广app
  • 微信关联网站产品推广怎么做
  • 网站服务器和网站搜索引擎优化 简历