智能手机全键盘控制器及其编程
时间:08-08
来源:21IC
点击:
3 读取按键消息
3.1 设置FIFO寄存器
收到硬件中断后,先通过一次写操作设置FIFO寄存器地址:0x00。
I2C_Write(0x70,0x00)://如果写一次FIFO地址之后没有对MAX7359其他控制寄存器的读写,则下次读FIFO寄存器,可不用再写FIFO地址。
I2C_Read(0x71,字节变量);
…… //重复读FIFO直至读到代表
FIFO为空的0x3f,可以没一个最大次数,如256次,如果一次中断后读了256次FIFO里还有没读到0x3f,则软重启软重启过程如下:
I2C_Write(0x70,0x0 1,0x08);
I2C_Write(0x70,0x01,0x88);
3.2 FIFO消息的处理
处理读到的FIFO字节变量(假设变量名为:FIFO_BYTE)后,软件处理方法如下:
(1)将从FIFO收到的非0x3f的字节变量FIFO_BYTE和0x3f取与(AND 0x3f),结果值为按键值(即0至63号键中某一个被按下或释放)。
(2)再将该FIFO_BYTE和0x40取与(AND 0x40),结果为0则说明按键被按下,结果非0则说明按键被释放。如果硬件布线时使用了63号和62号键,FIFO_BYTE处理复杂,请软件设计工程师参考MAX7359编程指南的62号和63号键处理方法。
3.3 长按键处理
通常需要起一个定时器,定时检查还未收到键盘释放信息的键盘按下信息都是何时发生的,如果是当前时间减去按键按下的时间满足长按键时间,就可向上层软件发长按键消息。
3.1 设置FIFO寄存器
收到硬件中断后,先通过一次写操作设置FIFO寄存器地址:0x00。
I2C_Write(0x70,0x00)://如果写一次FIFO地址之后没有对MAX7359其他控制寄存器的读写,则下次读FIFO寄存器,可不用再写FIFO地址。
I2C_Read(0x71,字节变量);
…… //重复读FIFO直至读到代表
FIFO为空的0x3f,可以没一个最大次数,如256次,如果一次中断后读了256次FIFO里还有没读到0x3f,则软重启软重启过程如下:
I2C_Write(0x70,0x0 1,0x08);
I2C_Write(0x70,0x01,0x88);
3.2 FIFO消息的处理
处理读到的FIFO字节变量(假设变量名为:FIFO_BYTE)后,软件处理方法如下:
(1)将从FIFO收到的非0x3f的字节变量FIFO_BYTE和0x3f取与(AND 0x3f),结果值为按键值(即0至63号键中某一个被按下或释放)。
(2)再将该FIFO_BYTE和0x40取与(AND 0x40),结果为0则说明按键被按下,结果非0则说明按键被释放。如果硬件布线时使用了63号和62号键,FIFO_BYTE处理复杂,请软件设计工程师参考MAX7359编程指南的62号和63号键处理方法。
3.3 长按键处理
通常需要起一个定时器,定时检查还未收到键盘释放信息的键盘按下信息都是何时发生的,如果是当前时间减去按键按下的时间满足长按键时间,就可向上层软件发长按键消息。
- 智能手机简介(06-06)
- 关于智能型手机电源管理系统的设计与应用(09-28)
- 高通发布45纳米Snapdragon芯片组(05-07)
- 独立AP架构为智能手机设计增加自由度(05-07)
- 瑞芯推出三款多媒体智能手机芯片解决方案(05-22)
- 嵌入式系统PDA智能手机设计方案(08-17)