首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
智能手机全键盘控制器及其编程
来源:本站整理  作者:佚名  2009-09-03 12:23:17




    这两款器件对于硬件设计而言较简单,但在编写驱动软件时需稍加注意。以下是MAX7349的编程建议:
    (1)建议避免使用0行0列的0号按键。
    (2)MAX7349初始化,假设MAX7349设置I2C地址的AD0引脚接地,将MAX7349的I2C读/写地址设为0x71/0x70,其过程如下:

    /*MAX7349初始化开始*/
    I2C_Write(0x70,0x04,0x01,); //关断
    I2C_Write (0x70,0x01,0);     //9 ms去抖
    I2C_Write(0x70,0x02,0);      //禁止Autorepeat功能
    I2C_Wirte(0x70,0x03,0x01);   //使能硬件中断
    I2C_Write(0x70,0x05,0);      //防止意外输出,可省略
    I2C_Write(0x70,0x04,0x81);   //启动器件正常功能
    /*MAX7349初始化结束*/
    (3)每次收到硬件中断后,连续读FIFO寄存器(I2C_Write(0x70,0x00);I2C_Read(0x71,变量)。注意此读操作是一次用于写FIFO寄存器地址0x00的写操作和一次读操作构成;如果连续读FIFO,则只需开始时进行一次写操作I2C_Write(0x70,0x00) 即可,FIFO寄存器地址不会自动递增),一直读到0x00的值全为0为止(建议避免使用0号按键),设一个最大读取次数(256次),如果来一次中断读取256次FIFO中还有非0值,就直接重启一次器件,执行如下操作:
    I2C_Write(0x70,0x04,0x01); //关断
    12C_Write(0x70,0x04,0x81); //启动器件正常功能
    (4)关于按键释放检测,由于MAX7349无按键释放检测,对于组合键,长短键等特殊按键需求,需要软件配合来实现。实现方法如下:
    每次收到硬件中断后通过I2C将FIFO读空,50 ms后将MAX7349重启,执行以下操作:
    I2C_Write(0x70,0x04,0x01,); //关断
    I2C_Write(0x70,0x04,0x81);    //启动器件正常功能
    若随后未收到中断,或收到中断后一直读空FIFO,也未有与上一次相同的按键信息,则认为上次按键释放,向上层软件发一个按键释放信息。如果收到中断后读FIFO中有与上次相同的按键信息,则继续重复“读空FIFO,等50 ms重启器件”的步骤。
    实际上,只要检测到硬件中断就要连续重复“读空FIF0,等50 ms后重启器件”的步骤,直到器件重启后没有新的硬件中断为止。
    (5)根据经验,在I2C总线工作不正常时尝试通过设置0x04寄存器的D0位使能或禁止总线超时功能。MAX7359南于增加了按键释放检测功能,即按下和释放按键都产成一个键值信息,所以要比MAX7349的软件处理更简单,关于MAX7359的编程建议如下:
    ①避免使用的按键 MAX7359修改按键信息FIFO(寄存器地址为:0x00)为空时的缺省值,由MAX7349的0x00改成MAX7359的0x3f。所以如果设计使用新的MAX7359,应尽量避免使用第63号键(Co17和Row7交叉处的键)和62号键(Co17和Row6交叉处的键),这是因为软件在处理这两个按键的键值时会复杂一些。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:113,199.20000 毫秒