驱动:电阻屏触摸芯片NS2009

摘要:
NS2009是带有I2C接口的4线电阻触摸屏控制电路,包括12位分辨率的a/D转换器。NS2009可以通过执行两次A/D转换找到按下的屏幕位置。此外,它还可以测量施加到触摸屏上的压力。在2.7V的典型工作条件下,功耗可以小于0.75mW。 工作电压范围为2.0V~5.5V 接触压力测量 采用2线I2C通信接口 自动断电省电功能 MSOP10,QFN(3×3)-16包装
驱动:电阻屏触摸芯片NS2009第1张
主要特性
NS2009是一款带I2C接口的4线制电阻式触摸屏控制电路,内含12位分辨率A/D转换器。NS2009能通过执行两次A/D转换查
出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。在2.7V的典型工作状态下,功耗可小于0.75mW。
 工作电压范围为 2.0V~5.5V
 触摸压力测量
 采用 2线制 I2C通信接口
 具有自动 power down 省电功能
 MSOP10 ,QFN(3×3)-16封装
 -40~85℃工作温度范围
典型电路
驱动:电阻屏触摸芯片NS2009第2张
应用建议
在应用中,建议添加一些外部电容跨接于触摸屏,以便虑掉触摸屏自身产生的噪声(如:由 LCD 和背光电路产生的噪声)。
电容和电阻形成一个低通滤波器从而抑制了噪声。电容值过大可能导致建立时间的增加,出现增益错误,因此选择电容时要考虑输入信号的带宽要求。

数字接口
NS2009 数据接口是 I2C 串行接口,满足 I2C 的接口协议,可实现标准模式(100K)、快速模式(400K)或高速模式(3.4M),
对 NS2009 的控制分为写、读两种命令格式,写命令用于输入地址和命令字节,让 NS2009 工作在指定的配置和模式下,
读命令用于输出 NS2009 的 ADC 转换数据,以便获取相关的测量信息。
写命令
驱动:电阻屏触摸芯片NS2009第3张
写命令的第一字节为地址字节:
驱动:电阻屏触摸芯片NS2009第4张
最低位 R/W(bit0),为 0 表示写命令,1 表示读命令
A1(Bit2)和 A0(Bit1)为硬件地址控制位,对 MSOP-10 封装,A1(Bit2)默认是 0。A0(Bit1)这
1 位必须要和 MSOP-10 封装芯片的第 8 脚电平一致,才能选中对应的 NS2009;对 QFN(3×3)-16 封装,A1
(Bit2)和 A0(Bit1)这两位必须要和 QFN(3×3)-16 封装芯片的第 1 脚和第 2 脚(A1 和 A0)电平一致,才能
选中对应的 NS2009;。
最高 5 位为软件地址位,必须输入固定码“10010”,如图 6 所示。
在第一字节全部被接收后,NS2009 会在第 9 个时钟周期,发出应答信号 ACK(0 电平),表示数据已接收。
写命令的第二字节为命令字节:
驱动:电阻屏触摸芯片NS2009第5张
驱动:电阻屏触摸芯片NS2009第6张
驱动:电阻屏触摸芯片NS2009第7张
驱动:电阻屏触摸芯片NS2009第8张
驱动:电阻屏触摸芯片NS2009第9张
读命令
驱动:电阻屏触摸芯片NS2009第10张
注意事项
驱动:电阻屏触摸芯片NS2009第11张
驱动:电阻屏触摸芯片NS2009第12张
驱动代码
bsp_ns2009.h
#ifndef _BSP_NS2009
#define _BSP_NS2009

#define NS2009_ADDR 0x48

#define NS2009_ADDR_READ  0x91
#define NS2009_ADDR_WRITE 0x90

#define NS2009_LOW_POWER_READ_X 	0xc0
#define NS2009_LOW_POWER_READ_Y 	0xd0
#define NS2009_LOW_POWER_READ_Z1 	0xe0
#define NS2009_LOW_POWER_READ_Z2 	0xf0

#define SCREEN_X_PIXEL 240
#define SCREEN_Y_PIXEL 320

unsigned char bsp_ns2009_init(void);
unsigned int ns2009_read(const unsigned char _cmd);
unsigned int bsp_ns2009_getPress(void);
unsigned int bsp_ns2009_getPos(unsigned int *_pos);


#endif
bsp_ns2009.c
#include "bsp_ns2009.h"

/*
**********************************************************************
* @fun     :bsp_ns2009_init 
* @brief   :
* @param   :
* @return  :None 
* @remark  :
**********************************************************************
*/
unsigned char bsp_ns2009_init(void)
{
	bsp_i2c_tp_init();
}

/*
**********************************************************************
* @fun     :ns2009_read 
* @brief   :读取ns2009数据
* @param   :
* @return  :None 
* @remark  :
**********************************************************************
*/
unsigned int ns2009_read(const unsigned char _cmd)
{
	unsigned int tp_adc = 0;
	
	bsp_i2c_tp_start();
    bsp_i2c_tp_sendByte(NS2009_ADDR_WRITE);
	bsp_i2c_tp_waitAck();
	
    bsp_i2c_tp_sendByte(_cmd);
	bsp_i2c_tp_waitAck();
    bsp_i2c_tp_stop();
	
	bsp_i2c_tp_start();
	bsp_i2c_tp_sendByte(NS2009_ADDR_READ);
	bsp_i2c_tp_waitAck();
	

	tp_adc = bsp_i2c_tp_readByte();
	bsp_i2c_tp_ack();

	tp_adc <<= 8;
	tp_adc |= bsp_i2c_tp_readByte();
	bsp_i2c_tp_nack();
	bsp_i2c_tp_stop();
	
	tp_adc >>= 4;

	return tp_adc;
}

/*
**********************************************************************
* @fun     :ns2009_getPress 
* @brief   :读取ns2009压力数据
* @param   :
* @return  :None 
* @remark  :
**********************************************************************
*/
unsigned int bsp_ns2009_getPress(void)
{
    return ns2009_read(NS2009_LOW_POWER_READ_Z1);
}

/*
**********************************************************************
* @fun     :ns2009_getPos 
* @brief   :获取ns2009坐标数据
* @param   :
* @return  :None 
* @remark  :
**********************************************************************
*/
unsigned int bsp_ns2009_getPos(unsigned int *_pos)
{
    unsigned int x=0, y=0, z=0;

	z = bsp_ns2009_getPress();
	
	if ((z > 70) && (z < 2000))
	{
		x = ns2009_read(NS2009_LOW_POWER_READ_X);
		y = ns2009_read(NS2009_LOW_POWER_READ_Y);

		*(_pos+0) = x * SCREEN_X_PIXEL / 4096; //4096 = 2 ^ 12
		*(_pos+1) = y * SCREEN_Y_PIXEL / 4096;		
	}
	else
	{
		*(_pos+0) = 0; 
		*(_pos+1) = 0;	
	}

    return z;
}


附件列表

    免责声明:文章转载自《驱动:电阻屏触摸芯片NS2009》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

    上篇SuperSlide——再次接触RabbitMQ---6、客户端 API 的简介下篇

    宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

    相关文章

    linux学习文档

    一、 linux文件系统linux使用标准的目录结构,在安装的时候,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。文件系统树状结构如下:/ 根目录┏━━━┳━━━┳━━━┳━━┳━━━┳━━┳━━┳━━┳━━━┳━━━━━┳━━┓bin home dev etc lib sbin tmp usr va...

    OpenSSL 介绍和使用

    转自:https://www.jianshu.com/p/fb2ae3dc7986 一、SSL 简介 按照我的理解来解释下,为了让网络通信更安全,需要认证和加密,认证是说明你是要找的人,加密是为了让截获中间报文第三者无法得到消息内容。 为此有人设计了SSL,即套接字上的安全层,简单来说就是在TCP之上做一个安全通信层,HTTP on SSL 即是HTT...

    kafka服务器搭建与测试

    kafka服务器搭建   kafka自身集群信息的管理以及对producer和consumer的信息管理是通过zookeeper实现的,zookeepr是kafka不可分割的一部分,所以搭建zookeeper服务器是搭建kafka集群环境不可或缺的一部分。zookeeper集群的搭建在网上有很多相关资料,本文不在详细描述,也可参照我自己编写的zookeep...

    LTP介绍

    1.LTP介绍    LTP--linut test project ,ltp套件是由Linux Test Project所开发的一套系统測试套件。它基于系统资源的利用率统计开发了一个測试的组合,为系统提供足够的压力。    通过压力測试来推断系统的稳定性和可靠性。    压力測试是一种破坏性的測试,即系统在非正常的、超负荷的条件下的执行情况 。用来评...

    redis常见命令

    一、介绍 1、Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和Memcached一样的 strings结构.Redis当...

    软件调试工具——GDB

    1、GDB调试器概述   GDB是GNU开源组织发布的一个强大的程序调试工具,具有查看程序运行状态、设置断点、查看表达式、显示变量等众多功能,是程序员进行Linux编程必须要掌握的一种调试技术。   GDB调试工具的优势主要包含以下5个方面:   (1)用户可以在程序运行过程中查看运行的状态;   (2)用户可以在程序中任何需要的地方设置断点,并暂停...