MAX7359用于PDA/智能电话键的控制
发布时间:2008/5/29 0:00:00 访问次数:489
max7359概述
max7359是一款低功耗、特定功能的按键开关控制器,非常适合蜂窝电话、打印机及其他便携式应用。该器件可最多控制64个按键。器件为每个按键的按下和弹起都分配了独立的代码。多个按键可以按照不同顺序同时按下和/或保持、弹起。多达16个按键按下、弹起的输入操作可以被保存在fifo内。max7359以一个字节为单位采集按键的按下或弹起输入,并通过简单的i2c接口读取。为了增强芯片的抗噪声能力,按键提供去抖检测。换句话说,它在很短的时间内对每次击键操作进行两次扫描,以确认击键动作是否有效。
为降低功耗,max7359在等待按键动作时处于休眠模式,仅消耗1.2μa电流。按键按下时,该控制器在200μs之内唤醒,从而采集按键的按下/弹起信息。经过一个固定的按键操作间隔时间(0.256s至8s)后,芯片再次进入休眠模式。需要注意的是,即使在休眠模式下也可以读取按键fifo的信息。为了减轻主机的工作负荷,可以使用中断信号。当按键按下或fifo达到预设的输入值时,芯片产生中断信号。该中断信号可以通过i2c接口读取,或在fifo清空时被清除。
max7359是max7349改进版,供电范围为1.8v到3.3v。图1给出了max7359通过i2c与主机的典型连接。由于该i2c接口是开漏端口,因此max7359可连接到不同供电电压的主机。
max7359编程
fifo中存储的是按键操作信息,所要求的功能由控制器内的其它寄存器定义。fifo的寄存器地址是0x00,配置寄存器的地址是0x01,0x02到0x06地址的寄存器用于定义其余操作。
max7359寄存器的内容可以通过i2c写命令设定,并通过i2c读命令进行校验。i2c写命令首先发送控制器的器件地址,控制器地址取决于ad0引脚的状态,分别为0x70、0x74、0x78、0x7c。随后是寄存器地址,寄存器地址之后可能发送多个数据字节。如果只有一个字节的数据,它将存储在前一个字节指定的寄存器内。当数据多于一个字节时,第一个字节存储在指定的寄存器内,下一个字节将存储在对应的下一个地址寄存器内,依次类推。该操作基于控制器寄存器地址的自动递增特性。例如,执行写命令:0x70、0x01、0x0a、0x00,器件将把0x0a写入0x01寄存器,0x00写入0x02寄存器。寄存器地址的自动递增特性适用于fifo地址0x00以外的所有可进行写操作寄存器,包括写命令和读命令。如果i2c写命令的寄存器地址之后没有数据字节,那么它通常用于设置下一次读命令的地址。
i2c读命令从发送max7359芯片地址开始,后面紧随一个或多个数据字节。当只读取一个数据字节时,数据来自上一次没有相应数据字节的写命令指定的寄存器。否则,该数据将来自上一次写或读命令操作的寄存器。超过一个数据字节时,第一个字节来自指定的寄存器,除fifo寄存器外,地址递增机制同样适用于其余的数据字节。换而言之,重复读fifo寄存器0x00不需要重新设置地址。
上电复位时,max7359将随时准备进行按键弹起检测、按键按下唤醒以及自动关断功能(缺省设置)。另外,只有两列可用作按键开关控制,共计16个有效键。其余六列/gpo (通用输出)在高电平时工作于gpo模式。下面的i2c命令可用于激活六列/gpo端口,用于按键的开关控制,共64个有效键。
// 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
// 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命令可用来使能max7359监视64个键,并且当有一个键按下时产生一次中断。当max7359通过i2c接口进行读操作时,该中断信号清除。
// 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
保留0x3f键码表示fifo空。
保留0x7f键码为fifo溢出标志。
保留0x3e键码为按键重复标志,并且该键为最后一个fifo数据
max7359概述
max7359是一款低功耗、特定功能的按键开关控制器,非常适合蜂窝电话、打印机及其他便携式应用。该器件可最多控制64个按键。器件为每个按键的按下和弹起都分配了独立的代码。多个按键可以按照不同顺序同时按下和/或保持、弹起。多达16个按键按下、弹起的输入操作可以被保存在fifo内。max7359以一个字节为单位采集按键的按下或弹起输入,并通过简单的i2c接口读取。为了增强芯片的抗噪声能力,按键提供去抖检测。换句话说,它在很短的时间内对每次击键操作进行两次扫描,以确认击键动作是否有效。
为降低功耗,max7359在等待按键动作时处于休眠模式,仅消耗1.2μa电流。按键按下时,该控制器在200μs之内唤醒,从而采集按键的按下/弹起信息。经过一个固定的按键操作间隔时间(0.256s至8s)后,芯片再次进入休眠模式。需要注意的是,即使在休眠模式下也可以读取按键fifo的信息。为了减轻主机的工作负荷,可以使用中断信号。当按键按下或fifo达到预设的输入值时,芯片产生中断信号。该中断信号可以通过i2c接口读取,或在fifo清空时被清除。
max7359是max7349改进版,供电范围为1.8v到3.3v。图1给出了max7359通过i2c与主机的典型连接。由于该i2c接口是开漏端口,因此max7359可连接到不同供电电压的主机。
max7359编程
fifo中存储的是按键操作信息,所要求的功能由控制器内的其它寄存器定义。fifo的寄存器地址是0x00,配置寄存器的地址是0x01,0x02到0x06地址的寄存器用于定义其余操作。
max7359寄存器的内容可以通过i2c写命令设定,并通过i2c读命令进行校验。i2c写命令首先发送控制器的器件地址,控制器地址取决于ad0引脚的状态,分别为0x70、0x74、0x78、0x7c。随后是寄存器地址,寄存器地址之后可能发送多个数据字节。如果只有一个字节的数据,它将存储在前一个字节指定的寄存器内。当数据多于一个字节时,第一个字节存储在指定的寄存器内,下一个字节将存储在对应的下一个地址寄存器内,依次类推。该操作基于控制器寄存器地址的自动递增特性。例如,执行写命令:0x70、0x01、0x0a、0x00,器件将把0x0a写入0x01寄存器,0x00写入0x02寄存器。寄存器地址的自动递增特性适用于fifo地址0x00以外的所有可进行写操作寄存器,包括写命令和读命令。如果i2c写命令的寄存器地址之后没有数据字节,那么它通常用于设置下一次读命令的地址。
i2c读命令从发送max7359芯片地址开始,后面紧随一个或多个数据字节。当只读取一个数据字节时,数据来自上一次没有相应数据字节的写命令指定的寄存器。否则,该数据将来自上一次写或读命令操作的寄存器。超过一个数据字节时,第一个字节来自指定的寄存器,除fifo寄存器外,地址递增机制同样适用于其余的数据字节。换而言之,重复读fifo寄存器0x00不需要重新设置地址。
上电复位时,max7359将随时准备进行按键弹起检测、按键按下唤醒以及自动关断功能(缺省设置)。另外,只有两列可用作按键开关控制,共计16个有效键。其余六列/gpo (通用输出)在高电平时工作于gpo模式。下面的i2c命令可用于激活六列/gpo端口,用于按键的开关控制,共64个有效键。
// 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
// 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命令可用来使能max7359监视64个键,并且当有一个键按下时产生一次中断。当max7359通过i2c接口进行读操作时,该中断信号清除。
// 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
保留0x3f键码表示fifo空。
保留0x7f键码为fifo溢出标志。
保留0x3e键码为按键重复标志,并且该键为最后一个fifo数据
上一篇:电话机中的语音邮箱指示系统设计
上一篇:电力线网的数字家庭安全方案