<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > MAX7359用于PDA/智能電話(huà)的多功能鍵和游戲鍵控制

MAX7359用于PDA/智能電話(huà)的多功能鍵和游戲鍵控制

——
作者: 時(shí)間:2007-12-11 來(lái)源: 收藏

  概述

  是一款低功耗、特定功能的按鍵開(kāi)關(guān)控制器,非常適合蜂窩電話(huà)、打印機及其他便攜式應用。該器件可最多控制64個(gè)按鍵。器件為每個(gè)按鍵的按下和彈起都分配了獨立的代碼。多個(gè)按鍵可以按照不同順序同時(shí)按下和/或保持、彈起。多達16個(gè)按鍵按下、彈起的輸入操作可以被保存在FIFO內。以一個(gè)字節為單位采集按鍵的按下或彈起輸入,并通過(guò)簡(jiǎn)單的I2C接口讀取。為了增強芯片的抗噪聲能力,按鍵提供去抖檢測。換句話(huà)說(shuō),它在很短的時(shí)間內對每次擊鍵操作進(jìn)行兩次掃描,以確認擊鍵動(dòng)作是否有效。

  為降低功耗,MAX7359在等待按鍵動(dòng)作時(shí)處于休眠模式,僅消耗1.2μA電流。按鍵按下時(shí),該控制器在200μs之內喚醒,從而采集按鍵的按下/彈起信息。經(jīng)過(guò)一個(gè)固定的按鍵操作間隔時(shí)間(0.256s至8s)后,芯片再次進(jìn)入休眠模式。需要注意的是,即使在休眠模式下也可以讀取按鍵FIFO的信息。為了減輕主機的工作負荷,可以使用中斷信號。當按鍵按下或FIFO達到預設的輸入值時(shí),芯片產(chǎn)生中斷信號。該中斷信號可以通過(guò)I2C接口讀取,或在FIFO清空時(shí)被清除。

  MAX7359是MAX7349改進(jìn)版,供電范圍為1.8V到3.3V。圖1給出了MAX7359通過(guò)I2C與主機的典型連接。由于該I2C接口是開(kāi)漏端口,因此MAX7359可連接到不同供電電壓的主機。

  

  圖1. 通過(guò)I2C接口連接MAX7359。

  MAX7359編程

  FIFO中存儲的是按鍵操作信息,所要求的功能由控制器內的其它寄存器定義。FIFO的寄存器地址是0x00,配置寄存器的地址是0x01,0x02到0x06地址的寄存器用于定義其余操作。

  MAX7359寄存器的內容可以通過(guò)I2C寫(xiě)命令設定,并通過(guò)I2C讀命令進(jìn)行校驗。I2C寫(xiě)命令首先發(fā)送控制器的器件地址,控制器地址取決于A(yíng)D0引腳的狀態(tài),分別為0x70、0x74、0x78、0x7C。隨后是寄存器地址,寄存器地址之后可能發(fā)送多個(gè)數據字節。如果只有一個(gè)字節的數據,它將存儲在前一個(gè)字節指定的寄存器內。當數據多于一個(gè)字節時(shí),第一個(gè)字節存儲在指定的寄存器內,下一個(gè)字節將存儲在對應的下一個(gè)地址寄存器內,依次類(lèi)推。該操作基于控制器寄存器地址的自動(dòng)遞增特性。例如,執行寫(xiě)命令:0x70、0x01、0x0A、0x00,器件將把0x0A寫(xiě)入0x01寄存器,0x00寫(xiě)入0x02寄存器。寄存器地址的自動(dòng)遞增特性適用于FIFO地址0x00以外的所有可進(jìn)行寫(xiě)操作寄存器,包括寫(xiě)命令和讀命令。如果I2C寫(xiě)命令的寄存器地址之后沒(méi)有數據字節,那么它通常用于設置下一次讀命令的地址。

  I2C讀命令從發(fā)送MAX7359芯片地址開(kāi)始,后面緊隨一個(gè)或多個(gè)數據字節。當只讀取一個(gè)數據字節時(shí),數據來(lái)自上一次沒(méi)有相應數據字節的寫(xiě)命令指定的寄存器。否則,該數據將來(lái)自上一次寫(xiě)或讀命令操作的寄存器。超過(guò)一個(gè)數據字節時(shí),第一個(gè)字節來(lái)自指定的寄存器,除FIFO寄存器外,地址遞增機制同樣適用于其余的數據字節。換而言之,重復讀FIFO寄存器0x00不需要重新設置地址。

  上電復位時(shí),MAX7359將隨時(shí)準備進(jìn)行按鍵彈起檢測、按鍵按下喚醒以及自動(dòng)關(guān)斷功能(缺省設置)。另外,只有兩列可用作按鍵開(kāi)關(guān)控制,共計16個(gè)有效鍵。其余六列/GPO (通用輸出)在高電平時(shí)工作于GPO模式。下面的I2C命令可用于激活六列/GPO端口,用于按鍵的開(kāi)關(guān)控制,共64個(gè)有效鍵。

  // A Write Command to disable GPO ports

  0x70 // MAX7359 device address

  0x02 // GPO enable and debounce register

  0x00 // Disable GPO ports and 9ms debounce time

  下面的I2C命令用于讀FIFO輸入:

  // A write command to set the register address to 0x00 and a read command from the FIFO

{{分頁(yè)}}

  // A write 0 data byte to address 0x00 command

  0x70 // MAX7359 device address

  0x00 // FIFO register

  // A read one byte from FIFO command

  0x71 // MAX7359 device address

  0xXX // A data byte from the FIFO. The value depends on what is there

  下面的I2C命令可用來(lái)使能MAX7359監視64個(gè)鍵,并且當有一個(gè)鍵按下時(shí)產(chǎn)生一次中斷。當MAX7359通過(guò)I2C接口進(jìn)行讀操作時(shí),該中斷信號清除。

  // Initialization

  More = 0x80 // More keys in the FIFO mask

  Key = 0x00 // Key code variable

  0x70, 0x02, 0x00 // Disable GPO ports

  0x70, 0x03, 0x02 // Enable interrupt upon a keypress

  0x70, 0x01, 0x2A // Enable interrupt cleared once read

  // When an interrupt is received

  0x70, 0x00 // Set the register address to 0x00

  Loop: 0x71, 0xXX // Read the FIFO register

  Key = 0xXX // Assign the key code to a variable

  Save the key code // Save the key code for application

  If (Key | More) go to Loop // If not the last entry, read more key codes

  

{{分頁(yè)}}

  保留0x3F鍵碼表示FIFO空。

  保留0x7F鍵碼為FIFO溢出標志。

  保留0x3E鍵碼為按鍵重復標志,并且該鍵為最后一個(gè)FIFO數據。

  保留0x7E鍵碼為按鍵重復標志,并且FIFO里還有更多數據。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>