新闻中心

EEPW首页 > 消费电子 > 设计应用 > 智能手机全键盘控制器及其编程

智能手机全键盘控制器及其编程

作者:时间:2009-09-03来源:网络收藏

②MAX7359初始化MAX7359初始化过程如下(假设MAX7359设置I2C地址的AD0引脚接地,将MAX7359的I2C读/写地址设为Ox71/0x70);
/*MAX7359初始化开始*/
I2C_Write(0x70,0x01,0x08); //关断,开始初始化
I2C_Write(0x70,0x02,0x01); //10 ms去抖,可调
I2C_Write(0x70,0x03,0x01); //按键消息FIFO非空则触发中断
I2C_Wirte(0x70,0x04,0); //防止错误触发GPIO
I2C_Write(0x70,0x05,0); //关闭自动重复功能
I2C_Write(0x70,0x06,0); //关闭自动关断功能,可根据需要打开自动关断功能,关断前的等待时间可设。
I2C_Write(0x70,0x01,0x88); //启动器件正常功能
/*MAX7359初始化结束*/

本文引用地址:http://www.eepw.com.cn/article/166882.htm


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 长按键处理
通常需要起一个定时器,定时检查还未收到释放信息的按下信息都是何时发生的,如果是当前时间减去按键按下的时间满足长按键时间,就可向上层软件发长按键消息。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭