FT5206的電源管理

來源:互聯網
上載者:User
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 腳進行硬體喚醒:拉低wake腳5ms以上。而且需保證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_PMODEbuf[1]=0x03;//write 0x03 to ADDR [0xA5],enable hibernatemutitouch_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 >5msgpio_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;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.