FT5206的电源管理


FT5206的电源管理

其实就是通过控制某个寄存器的值,来使TP模块进入不同的模式,以达到省电的目的

FT5206 3种功耗模式,具体定义如下表

5功耗模式 PMODE

模式名称      数值                                    描述                                             实测功耗

ACTIVE         0x00                      全速扫描模式,有手指按下产生触摸进入此模                  4mA

                                                        ,产生触摸中断/INT,Host 来读取触摸数据.

MONITOR      0x01                    触摸监测模式,低速扫描, 不能产生触摸中断                     3mA

                                                     /INT. 有触摸发生后自动跳转到ACTIVE 模式,

                                        也可以有Host 配置进入其它功耗模


HIBERNATE 0x03                休眠模式.系统主要电路停止工作, 保留供电电  100uA

                 , 功耗在100uA 以下。该模式下无法进行I2C

                                           通信,模组需要由WAKE 信号唤醒,唤醒后会自

                                                         动进入MONITOR 模式。

当有手指触摸时,FT5206会自动进入 ACTIVE模式。当手抬起后,不会立即进入

MONITOR 模式,而是有延时,延时时间就是由TIMEENTERMONITOR 来控制。这里

的延时参数并不是s ms,而是用于循环的次数。


ID_G_ PMODE

This register describes the powerconsumption mode of the TPM when in running status.

Address              BitAddress                  RegisterName                             Description                           Default

0xA5                          7:0                                D_G_ PMODE                          功耗模式寄存器                      1

                                                                                                                              0: active

                                                                                                                              1: monitor

                                                                                                                               3: hibernate(deep sleep)

通过此寄存器可以在不同功耗模式切换。进入hibernate 模式后,无法返回其他功耗模式,

只有通过wake 脚进行硬件唤醒:拉低wake5ms以上。而且需保证WAKE 脚一直为高,除了唤醒的时候。


对应的代码如下:

probe时,register_early_suspend(&mutitouch_early_suspend);

static struct early_suspend mutitouch_early_suspend = {
	.level = 5,
	.suspend = mutitouch_early_suspend_handler,
	.resume = mutitouch_late_resume_handler,
};
相应的休眠函数(背光灭时自动调用)和唤醒函数(背光亮时自动调用)如下:


static void mutitouch_early_suspend_handler(struct early_suspend *h)
{
	uint8_t buf[4];
	int ret;
	FT5XXX_DBG("enter %s\n", __func__);    
	//ret = cancel_delayed_work(&mutitouch_chip->work);
	//FT5XXX_DBG("Cancel Delay Work %d\n", ret);
	cancel_work_sync(&mutitouch_chip->work);
  
	/*
	*  0:active mode	
	*  1:monitor mode
	*  3:hibernate mode(deep sleep)
	*/
		buf[0]=0xA5;//ID_G_PMODE
		buf[1]=0x03;
		//write 0x03 to ADDR [0xA5],enable hibernate
		mutitouch_write(mutitouch_chip, &(buf[0]), 2);
	
	disable_irq(mutitouch_chip->irq);
	mutitouch_chip->state = FT5XXX_SUSPEND;
}

static void mutitouch_late_resume_handler(struct early_suspend *h)
{
	uint8_t buf[3];	
	
	FT5XXX_DBG("%s enter\n", __func__);
	//reference P17,keyword " ID_G_PMODE "
	//when entry hibernate mode,must hardware wake up:
	//pull DOWN wake pin >5ms	
	gpio_set_value(mutitouch_chip->pdata->gpio_rst , IO_LOW);
	msleep( 8);
	gpio_set_value(mutitouch_chip->pdata->gpio_rst, IO_HIGHT);
	
	int_count = 1;
	enable_irq(mutitouch_chip->irq);	
	mutitouch_chip->state = FT5XXX_IDLE;
	FT5XXX_DBG("%s leave\n", __func__);
	return;	
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值