一种实现串行flash存储器和开关复用i/o线的方法和密钥装置的制作方法

文档序号:6602056阅读:163来源:国知局
专利名称:一种实现串行flash存储器和开关复用i/o线的方法和密钥装置的制作方法
技术领域
本发明涉及计算机领域,特别涉及一种实现串行FLASH存储器和开关复用I/O线的方法和密钥装置。
背景技术
SPI (Serial Peripheral interface)串行设备接口,SPI接口主要应用在EEI^ROM、 FLASH、实时时钟、AD转换器、数字信号处理器和数字信号解码器之间。SPI总线系统是一种 同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息,其中 外围设备包括FLASHRAM、网络控制器、IXD显示驱动器、A/D转换器和MCU等。SPI接口一般使用4条I/O线串行时钟线(SCK)、主机输出/从机输入数据线 M0SI、主机输入/从机输出数据线MISO和低电平有效的从机选择线CS,并且SPI的通信原 理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备。现在的USB key在单独访问FLASH时,四根I/O线完全满足SPI总线要求,可以直 接操作,并且指示灯通过PNP三极管指示FLASH正在操作,在单独操作按键时,四根I/O线 也完全满足SPI总线要求,可以直接操作,并且指示灯通过PNP三极管进行指示,但是USB key想要同时实现外扩串行SPI FLASH的访问、按键操作和信号灯指示时,则需要较多I/O 线,从而只能在I/O线较多的控制器芯片上实现,这样就导致了成本较高。

发明内容
为了解决现有技术中的不足,本发明提供了一种实现串行FLASH存储器和开关复 用I/O线的方法和密钥装置。一种实现串行FLASH存储器和开关复用I/O线的方法,所述方法包括密钥装置与主机建立连接,进行初始化,打开USB中断;等待所述主机发送命令,并判断是否接收到所述主机发送的命令,若否,则继续等 待接收所述主机发送命令,若是,则关闭USB中断;对所述接收到的命令进行解析,并根据解析结果进行判断;当所述命令为读取FLASH存储器的命令时,则所述密钥装置将CS端设置为低电 平,读取FLASH存储器中的内容,并将所述内容返回给所述主机;当所述命令需要检测按键时,则所述密钥装置将CS端设置为高电平,读取此时的 按键状态,将所述按键状态返回给所述主机,然后对所述命令进行处理;当所述命令需要检测按键且需要读取FLASH存储器时,则所述密钥装置先将CS端 设置为低电平,读取FLASH存储器中的内容,再将CS端设置为高电平,读取此时的按键状 态,将所述内容和所述按键状态返回给所述主机,然后对所述命令进行处理;当所述命令为读取处理结果的命令时,则所述密钥装置将处理结果返回给所述主 机;
当所述命令为其他命令时,则所述密钥装置对所述命令进行处理。一种密钥装置,所述密钥装置包括USB模块、主控模块、存储模块、按键模块和指示灯模块;USB模块,与主控模块相连,用于所述密钥装置与主机建立连接,以及用于所述密 钥装置在主控模块的控制下与所述主机进行通信;主控模块,与所述USB模块、存储模块、按键模块和指示灯模块分别相连,用于控 制所述密钥装置的各种操作;存储模块,与所述主控模块相连,用于存储各种信息;按键模块,与所述主控模块相连,用于供用户输入信息;指示灯模块,与所述主控模块相连,用于在所述主控模块的控制下当所述密钥装 置的CS端的状态为低电平状态之后,指示灯模块变亮,提示用户所述密钥装置的CS端的当 前状态为低电平状态。本发明的有益效果在于本发明提供了一种实现串行FLASH存储器和开关复用的 方法及密钥装置,在本发明中,密钥装置使用4根I/O线就可以同时实现外扩FLASH存储器 的访问,按键控制和信号灯的指示,这样就节省了 I/O线资源,并且也可以在I/O线较少的 控制器上实现,进一步的节省了成本。


图1为本发明实施例1提供的一种实现串行FLASH存储器和开关复用I/O线的方法流程图;图2为本发明实施例1提供的一种USB中断子程序的操作流程图;图3为本发明实施例1提供的一种USB Key执行的等待命令子程序的操作流程图;图4为本发明实施例2提供的另一种实现串行FLASH存储器和开关复用I/O线的方法流程图;图5为本发明实施例2提供的一种定时器中断子程序的操作流程图;图6为本发明实施例3提供的密钥装置的结构图;图7为本发明实施例3提供的密钥装置的详细结构图;图8为本发明实施例3提供的密钥装置的另一详细结构图;图9为本发明实施例3提供的智能密钥设备的电路图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式做进一步地详细描述。实施例1本发明实施例提供了一种实现串行FLASH存储器和开关复用I/O线的方法,本实 施例通过轮循的方式来实现本发明,并且以USB Key这种较为典型的智能密钥设备作为该 方法的执行主体进行说明,但并不用以限制该方法的执行主体,本领域技术人员所熟知的 智能密钥设备均在本发明的保护范围之内。
参见图1,一种实现串行FLASH存储器和开关复用I/O线的方法,具体实现步骤如 下步骤101 计算机与USB Key建立连接;步骤102 =USB Key进行初始化; 在本实施例中,USB Key进行初始化具体包括USB Key对CS端进行初始化,具体 地,将CS端的状态设置为高电平状态。步骤103 打开USB中断;在本实施例中,当打开USB中断后,再接收到任何关于USB Key的指令时,则先执 行USB中断子程序,在USB中断子程序执行完毕后再执行上述指令,参见图2,USB中断子程 序中包含的操作具体如下103. 1 开始;103. 2 将数据标志位设置为有数据标志;103. 3 返回,执行上述命令。步骤104 等待接收主机发送命令,并判断是否接收到主机发送的命令,若否,则 继续执行步骤104,继续等待接收主机发送命令,若是,则执行步骤105 ;参见图3,在本实施例中,等待计算机发送命令时,USB Key执行的等待命令子程序 中包含的操作具体为104. 1 开始;104. 2 =USB Key判断数据标志位是否置为有数据标志,若否,则再次执行步骤 104. 2,若是,则执行步骤104. 3 ;104. 3 返回,执行步骤105。步骤105 关闭USB中断;步骤106 对接收到的命令进行解析,并根据解析结果进行判断;当接收到的命令为读取FLASH存储器的命令时,则执行步骤107 ;当接收到的命令需要检测按键时,则执行步骤111 ;当接收到的命令需要检测按键且需要读取FLASH存储器时,则执行步骤117 ;当接收到的命令为读取处理结果的命令时,则执行步骤125 ;当接收到的命令为其他命令,即既不是读取FLASH存储器的命令,命令也不需要 检测按键,也不是读取处理结果的命令时,则执行步骤126 ;步骤107 将CS端设置为低电平,即将CS端置“0”,控制指示灯变亮;在本实施例中,高电平用“1”表示,低电平用“0”表示,将CS端设置为高电平,即 为将CS端置“ 1 ”,将CS端设置为低电平,即为将CS端置“0” ;并且,本实施例中指示灯具体为一个发光二极管,当CS端为低电平之后,则控制 发光二极管发光,指示灯变亮。步骤108 读取FLASH存储器中的内容,并将读取得到的内容写入缓存中;在本实施例中,在读取FLASH存储器中的内容时,除了 CS端必须设置为低电平,还 要求CLK时钟线上必须有时钟,相应地,主机是通过MOSI线将读取FLASH存储器的命令传 给FLASH存储器的,并且读取得到的内容也是通过MISO线传送出去的。步骤109 将CS端设置为高电平,即将CS端置为“1” ;
步骤110 将存储在缓存中的FLASH存储器中的内容返回给主机,然后返回到步骤 103 ;步骤111 将CS端设置为高电平,即将CS端置“1” ;步骤112 读取此时按键的状态,并判断读取得到的按键状态是否为按键按下状 态,若是,执行步骤113,若不是,执行步骤116 ;
步骤113:防抖并延迟;在本实施例中,延迟的时间长度可以是自定义的,本实施例中具体定义延迟10秒。步骤114 再次读取此时按键的状态,并判断读取得到的按键状态是否为按键按 下状态,若是,执行步骤115,若不是,执行步骤116 ;步骤115 将按键按下状态返回给主机,并对命令进行处理,然后返回步骤103 ;步骤116 将按键未按下状态返回给主机,并对命令进行处理,然后返回步骤103 ;步骤117 将CS端设置为低电平,即将CS端置“0”,控制指示灯变亮;步骤118 读取FLASH存储器中的内容,并将读取得到的内容写入到缓存中;在本实施例步骤118中,读取FLASH存储器中的内容时,除了 CS端必须设置为低 电平,也还要求CLK时钟线上必须有时钟,相应地,主机是通过MOSI线将读取FLASH存储器 的命令传给FLASH存储器的,并且读取得到的内容也是通过MISO线传送出去的。步骤119 将CS端设置为高电平,即将CS端置为“1” ;步骤120 读取此时按键的状态,并判断读取得到的按键状态是否为按键按下状 态,若是,执行步骤121,若不是,执行步骤124 ;步骤121:防抖并延迟;在本实施例中,延迟的时间长度可以是自定义的,本实施例中具体定义延迟10秒。步骤122 再次读取此时按键的状态,并判断读取得到的按键状态是否为按键按 下状态,若是,执行步骤123,若不是,执行步骤124 ;步骤123 将按键按下状态和存储在缓存中的FLASH存储器中的内容均返回给主 机,并对命令进行处理,然后返回步骤103 ;步骤124 将按键未按下状态和存储在缓存中的FLASH存储器中的内容均返回给 主机,并对命令进行处理,然后返回步骤103 ;步骤125 将处理结果返回给主机,然后执行步骤103 ;步骤126 对接收到的命令进行处理,然后执行步骤103。本实施例提供了一种实现串行FLASH存储器和开关复用的方法,在本实施例中, 密钥装置使用4根I/O线就可以同时实现外扩FLASH存储器的访问,按键控制和信号灯的 指示,这样就节省了 I/O线资源,并且也可以在I/O线较少的控制器上实现,进一步的节省 了成本。实施例2本实施例提供了另一种实现串行FLASH存储器和开关复用I/O线的方法,本实施 例通过中断的方式来实现本发明,在本实施例中,智能密钥设备内部有定时器、超时计数器 和检测按键计数器,当打开定时器且定时器到时后,则智能密钥设备执行定时器中断子程序中包含的操作。本实施例以USB Key这种较为典型的智能密钥设备作为该方法的执行主体进行说 明,但并不用以限制该方法的执行主体,本领域技术人员所熟知的智能密钥设备均在本发 明的保护范围之内。参见图4,另一种实现串行FLASH存储器和开关复用I/O线的方法,具体实现步骤 如下
步骤201 计算机与USB Key建立连接;步骤202 =USB Key进行初始化;在本实施例中,USB Key进行初始化具体包括:USB Key对内部定时器进行初始化, 具体地,将定时器的时间间隔设置为50ms,对CS端进行初始化,具体地,将CS端的状态设置 为高电平状态,对超时计数器和检测按键计数器进行初始化,具体地,将超时计数器和检测 按键计数器的计数值清0。步骤203 打开USB中断;在本实施例中,当打开USB中断后,再接收到任何关于USB Key的指令时,则先执 行USB中断子程序,在USB中断子程序执行完毕后再执行上述指令,其中USB中断子程序中 包含的操作具体与实施例1中的USB中断子程序中包含的操作相同,在此不再重复。步骤204 等待接收主机发送命令,并判断是否接收到主机发送的命令,若否,则 继续执行步骤204,继续等待接收主机发送命令,若是,则执行步骤205 ;在本实施例中,等待计算机发送命令时,USB Key执行的等待命令子程序中包含的 操作具体与实施例1中USB Key执行的等待命令子程序中包含的操作相同,在此不再重复。步骤205 关闭USB中断;步骤206 对接收到的命令进行解析,并根据解析结果进行判断;当接收到的命令为读取FLASH存储器的命令时,则执行步骤207 ;当接收到的命令需要检测按键时,则执行步骤211 ;当接收到的命令为读取FLASH存储器的命令且需要检测按键时,则执行步骤218 ;当接收到的命令为读取处理结果的命令时,则执行步骤226 ;当接收到的命令为其他命令,即既不是读取FLASH存储器的命令,命令也不需要 检测按键,也不是读取处理结果的命令时,则执行步骤227 ;步骤207 将CS端设置为低电平,即将CS端置“0”,控制指示灯变亮;在本实施例中,高电平用“1”表示,低电平用“0”表示,将CS端设置为高电平,即 为将CS端置“ 1 ”,将CS端设置为低电平,即为将CS端置“0” ;并且,本实施例中指示灯具体为一个发光二极管,当CS端为低电平之后,则控制 发光二极管发光,指示灯变亮。步骤208 读取FLASH存储器中的内容,并将读取得到的内容写入到缓存中;在本实施例中,读取FLASH存储器中的内容时,除了 CS端必须设置为低电平,还要 求CLK时钟线上必须有时钟,相应地,主机是通过MOSI线将读取FLASH存储器的命令传给 FLASH存储器的,并且读取得到的内容也是通过MISO线传送出去的。步骤209 将CS端设置为高电平,即将CS端置为“1” ;步骤210 将存储在缓存中的FLASH存储器中的内容返回给主机,然后返回到步骤203 ;步骤211 将CS端设置为高电平,即将CS端置“1” ;步骤212 将检测按键标志位设置为允许检测按键的标志;步骤213 将超时计数器和检测按键计数器的计数值均清0,超时计数器和检测按 键计数器开始 计数;步骤214:打开定时器;步骤215 读取此时按键的状态,并判断是否为按键按下状态,若是,则执行步骤 216,若不是,则执行步骤217;在本实施例步骤215中,当判断得到此时按键的状态为按键按下状态时,可以不 直接执行步骤216,即不立即将按键按下状态返回给主机,而如实施例1 一样,先进行防抖 操作,再进行延迟,其中延迟的时间可以是自定义的,然后再次读取此时按键的状态,若判 断得到此时按键的状态为按键按下状态时,则执行步骤216,即将按键按下状态返回给主 机。步骤216 将按键按下状态返回给主机,并对命令进行处理,然后返回到步骤203 ;步骤217 将按键未按下状态返回给主机,并对命令进行处理,然后返回到步骤 203 ;步骤218 将CS端设置为低电平,即将CS端置“0”,控制指示灯变亮;步骤219 读取FLASH存储器中的内容,并将读取得到的内容写入到缓存中;在本实施例中,读取FLASH存储器中的内容时,除了 CS端必须设置为低电平,还要 求CLK时钟线上必须有时钟,相应地,主机是通过MOSI线将读取FLASH存储器的命令传给 FLASH存储器的,并且读取得到的内容也是通过MISO线传送出去的。步骤220 将检测按键标志位设置为允许检测按键的标志;步骤221 将超时计数器和检测按键计数器的计数值均清0,超时计数器和检测按 键计数器开始计数,并打开定时器;步骤222 将CS端设置为高电平,即将CS端置为“1” ;步骤223 读取此时按键的状态,并判断是否为按键按下状态,若是,则执行步骤 224,若不是,则执行步骤225;在本实施例步骤223中,当判断得到此时按键的状态为按键按下状态时,也可以 如步骤215—样,先进行防抖操作,再进行延迟,然后再次读取此时按键的状态,并进行判 断。步骤224 将按键按下状态和存储在缓存中的FLASH存储器中的内容返回给主机, 并对命令进行处理,然后返回到步骤203 ;步骤225 将按键未按下状态和存储在缓存中的FLASH存储器中的内容返回给主 机,并对命令进行处理,然后返回到步骤203 ;步骤226 将处理结果返回给主机,然后执行步骤203 ;步骤227 对接收到的命令进行处理,然后返回到步骤203。本实施例是通过中断的方式来实现本发明,在打开定时器之后,当定时器到时后, 则USB Key执行定时器中断子程序中包含的操作,参见图5,具体操作如下步骤301 将超时计数器的计数值和检测按键计数器的计数值分别加1 ;
步骤302 判断检测按键标志是否设置为允许检测按键的标志,若是,则执行步骤 303,若否,则执行步骤311 ;步骤303 判断超时计数器的计数值是否达到了预先设定的值,若否,则执行步骤 304,若是,则执行步骤306 ;在本实施例中,自定义超时计数器的预先设定的计数值为500次,即判断超时计 数器的计数值是否达到了 500,若否,则执行步骤304,若是,则执行步骤306。步骤304 读取CS端当前的状态;
步骤305 判断读取得到的CS端当前的状态是否为低电平状态,若否,则执行步骤 306,若是,则执行步骤307 ;在本实施例步骤305中,判断读取得到的CS端当前的状态是否为低电平状态,即 判断读取得到的CS端是否为“0”,若为0,则表示为低电平,若不为0,则表示为高电平。步骤306:清除允许检测按键的标志,并将超时计数器的计数值清0,超时计数器 停止计数,然后执行步骤311 ;步骤307 将超时计数器的计数值和检测计数器的计数值分别加1 ;步骤308 判断检测按键计数器的计数值是否达到了预先设定的值,若是,则执行 步骤309,若否,则执行步骤311 ;在本实施例中,自定义检测按键计数器的预先设定的计数值为200次,即判断检 测按键计数器的计数值是否达到了 200,若是,则执行步骤309,若否,则执行步骤311。步骤309 设置键盘按下标志;步骤310 将超时计数器和检测按键计数器的计数值均清0,超时计数器和检测按 键计数器停止计数;步骤311 返回到执行定时器中断子程序之前的主程序中。本实施例提供了一种实现串行FLASH存储器和开关复用I/O线的方法,在本实施 例中,密钥装置使用4根I/O线就可以同时实现外扩FLASH存储器的访问,按键控制和信号 灯的指示,这样就节省了 I/O线资源,并且也可以在I/O线较少的控制器上实现,进一步的 节省了成本。实施例3本实施例提供了一种实现串行FLASH存储器和开关复用I/O线的密钥装置,参见 图6,该密钥装置包括USB模块401,与主控模块402相连,用于密钥装置与主机建立连接,以及用于在主 控模块402的控制下实现密钥装置与主机之间的通信;主控模块402,与USB模块401、存储模块403、按键模块404和指示灯模块405分 别相连,用于控制密钥装置进行各种操作;存储模块403,与主控模块402相连,用于存储各种信息;其中,存储模块403可以为各种存储芯片,在本实施例中具体为FLASH芯片,因此 主控模块402可以读取FLASH芯片中存储的各种信息。按键模块404,与主控模块402相连,用于供用户输入信息;指示灯模块405,与主控模块402相连,用于在主控模块402的控制下当密钥装置 的CS端为低电平之后,指示灯模块405变亮,提示用户当前密钥装置的CS端为低电平。
参见图7,在本实施例中,一种实施方式下,USB模块401具体可以包括USB接口单元4010,用于密钥装置与主机建立连接;USB通信单元4011,与USB接口单元4010相连,用于密钥装置通过USB接口单元 4010与主机进行通信,具体用于接收主机发送的命令,以及用于将按键的当前状态和存储 在缓存中的存储模块403中的内容返回给主机,还用于将对命令进行处理的处理结果返回 给主机。相应地,主控模块402可以包括初始化单元4020、控制单元4021、解析判断单元 4022、设置 单元4023、读写单元4024、延迟单元4025和处理单元4026 ;初始化单元4020,用于密钥装置进行初始化操作;在本实施例中,具体地,初始化单元4020用于将CS端设置为高电平。控制单元4021,与初始化单元4020相连,用于在初始化单元4020进行初始化之 后,打开USB中断;解析判断单元4022,与控制单元4021相连,用于判断是否接收到主机发送的命 令;相应地,控制单元4021还用于当解析判断单元4022判断得到已接收到主机发送 的命令时,关闭USB中断;解析判断单元4022还用于对USB通信单元4011接收到的主机发送的命令进行解 析,并对解析后的命令进行判断;当解析判断单元4022判断得到为读取存储模块403的命令时;设置单元4023,用于将CS端设置为低电平;相应地,指示灯模块405变亮,提示用户当前智能密钥设备的CS端为低电平;读写单元4024,用于读取存储模块403中的内容,并将读取得到的存储模块403中 的内容写入缓存中;相应地,设置单元4023还用于将CS端设置为高电平;USB通信单元4011,用于将存储在缓存中的存储模块403中的内容返回给主机;当解析判断单元4022判断得到需要检测按键时;设置单元4023,用于将CS端设置为高电平;读写单元4024,用于读取此时按键的状态;相应地,解析判断单元4022还用于判断此时按键的状态是否为按键按下状态;延迟单元4025,用于当判断得到此时按键的状态为按键按下状态时,进行防抖操 作,再进行延迟;相应地,读写单元4024,用于再次读取此时按键的状态;解析判断单元4022,用于判断此时按键的状态是否为按键按下状态;USB通信单元4011,用于将按键的状态返回给主机,具体用于当判断得到此时按 键的状态为按键按下状态时,将按键按下状态返回给主机,或者具体用于当判断得到此时 按键的状态为未按键按下状态时,按键未按下状态返回给主机;处理单元4026,用于对命令进行处理;当解析判断单元4022判断得到需要检测按键且需要读取存储模块403时;设置单元4023,用于将CS端设置为低电平;
相应地,指示灯模块405变亮,提示用户当前智能密钥设备的CS端为低电平;读写单元4024,用于读取存储模块403中的内容,并将读取得到的存储模块403中 的内容写入缓存中;相应地,设置单元4023还用于将CS端设置为高电平;读写单元4024还用于读取此时按键的状态; 相应地,解析判断单元4022还用于判断此时按键的状态是否为按键按下状态;延迟单元4025,用于当判断得到此时按键的状态为按键按下状态时,进行防抖操 作,再进行延迟;相应地,读写单元4024,用于再次读取此时按键的状态;解析判断单元4022还用于判断此时按键的状态是否为按键按下状态;USB通信单元4011,用于将按键的状态和存储在缓存中的存储模块403中的内容 返回给主机,具体用于当判断得到此时按键的状态为按键按下状态时,将按键按下状态和 存储在缓存中的存储模块403中的内容返回给主机,或者具体用于当判断得到此时按键的 状态为按键未按下状态时,将按键未按下状态和存储在缓存中的存储模块403中的内容返 回给主机;处理单元4026,用于对命令进行处理;当解析判断单元4022判断得到为读取处理结果的命令时;USB通信单元4011还用于将处理结果返回给主机;当解析判断单元4022判断得到为其他命令时;处理单元4026用于对USB通信单元4011接收到的计算机发送的命令进行处理。参见图8,在本实施例中,另一个实施方式下,USB模块401还可以包括USB接口单元4010,用于密钥装置与计算机建立连接;USB通信单元4011,与USB接口单元4010相连,用于密钥装置通过USB接口单元 4010与主机进行通信,具体用于接收主机发送的命令,以及用于将按键的当前状态和存储 在缓存中的存储模块403中的内容返回给主机,还用于将对命令进行处理的处理结果返回 给主机。相应地,主控模块402包括定时器单元4020、超时计数器单元4021、检测按键计 数器单元4022、初始化单元4023、控制单元4024、解析判断单元4025、设置单元4026、读写 单元4027、运算单元4028和处理单元4029 ;定时器单元4020,用于在超时计数器单元4021和检测按键计数器单元4022开始 计数时进行定时,当在上述过程中定时器到时时,则执行定时器中断子程序中所包含的操 作;超时计数器单元4021,用于对等待用户通过按键输入信息的时间进行计数;检测按键计数器单元4022,用于对检测按键的次数进行计数;初始化单元4023,与定时器单元4020、超时计数器单元4021和检测按键计数器单 元4022分别相连,用于密钥装置进行初始化操作;在本实施例中,具体地,初始化单元4023用于将定时器单元4020的时间间隔设置 为50ms,将CS端设置为高电平,以及将超时计数器单元4021和检测按键计数器单元4022 的计数值均清0。
控制单元4024,用于在初始化单元4023进行初始化之后,打开USB中断;解析判断单元4025,用于判断是否已接收到主机发送的命令;相应地,控制单元4024还用于当解析判断单元4025判断得到已接收到主机发送 的命令时,关闭USB中断;解析判断单元4025还用于对USB通信单元4011接收到的计算机发送的命令进行 解析,并对解析后的命令进行判断;当解析判断单元4025判断得到为读取存储模块403的命令时;设置单元4026还用于将CS端设置为低电平; 相应地,指示灯模块405变亮,提示用户当前智能密钥设备的CS端为低电平;读写单元4027,用于读取存储模块403中的数据,并将读取得到的数据写入缓存 中;相应地,设置单元4026还用于将CS端设置为高电平;USB通信单元4011,用于将存储在缓存中的存储模块403中的内容返回给主机;当解析判断单元4025判断得到需要检测按键时;设置单元4026,用于将CS端设置为高电平,并且还用于将检测按键标志设置为允 许检测按键的标志;运算单元4028,用于将超时计数器和检测按键计数器的计数值清零;相应地,控制单元4024还用于打开超时计数器和检测按键计数器,开始计数,打 开定时器;读写单元4027,用于读取此时按键的状态;相应地,解析判断单元4025还用于判断此时按键的状态是否为按键按下状态;USB通信单元4011,用于将按键的状态返回给主机,具体用于当判断得到此时按 键的状态为按键按下状态时,将按键按下状态返回给主机,或者具体用于当判断得到此时 按键的状态为按键未按下状态时,将按键未按下状态返回给主机;处理单元4029,用于在打开定时器之后对USB通信单元4011接收到的计算机发送 的命令进行处理;当解析判断单元4025判断得到需要检测按键且读取存储模块403时;设置单元4026还用于将CS端设置为低电平;相应地,指示灯模块405变亮,提示用户当前智能密钥设备的CS端为低电平;读写单元4027,用于读取存储模块403中的数据,并将读取得到的数据写入缓存 中;相应地,设置单元4026还用于将检测按键标志设置为允许检测按键的标志;运算单元4028,用于将超时计数器和检测按键计数器的计数值清零;控制单元4024还用于打开超时计数器和检测按键计数器,开始计数,打开定时 器;相应地,设置单元4026还用于将CS端设置为高电平;读写单元4027,用于读取此时按键的状态;解析判断单元4025还用于判断此时按键的状态是否为按键按下状态;USB通信单元4011,用于将按键的状态和存储在缓存中的存储模块403中的内容返回给主机,具体用于当判断得到此时按键的状态为按键按下状态时,将按键按下状态和 存储在缓存中的存储模块403中的内容返回给主机,或者具体用于当判断得到此时按键的 状态为按键未按下状态时,将按键未按下状态和存储在缓存中的存储模块403中的内容返 回给主机;处理单元4029,用于在打开定时器之后对USB通信单元4011接收到的计算机发送 的命令进行处理;
当解析判断单元4025判断得到为读取处理结果的命令时;USB通信单元4011还用于将处理结果返回给主机;当解析判断单元4025判断得到为其他命令时,处理单元4029用于在打开定时器 之后对USB通信单元4011接收到的计算机发送的命令进行处理。进一步地,当定时器到时后,执行定时器中断子程序时;运算单元4028,用于将超时计数器和检测按键计数器的计数值分别加1 ;解析判断单元4025,用于判断检测按键标志是否设置为允许检测按键的标志;当解析判断单元4025判断得到为允许检测按键的标志,则解析判断单元4025还 用于判断超时计数器的计数值是否达到了预先设定的值;设置单元4026,用于当超时计数器的计数值已达到了预先设定的值时,清除允许 检测按键的标志,将超时计数器的计数值请零;相应地,控制单元4024还用于控制超时计数器停止计数;读写单元4027,用于当超时计数器的计数值没有达到预先设定的值时,读取CS端 的当前状态;相应地,解析判断单元4025还用于判断读取得到的CS端的当前状态是否为低电 平状态;设置单元4026还用于当CS端的当前状态不为低电平状态时,清除允许检测按键 的标志,将超时计数器的计数值请零;相应地,控制单元4024还用于控制超时计数器停止计数;运算单元4028,用于当CS端的当前状态不为低电平状态时,将超时计数器单元 4021和检测按键计数器单元4022的计数值加1 ;相应地,解析判断单元4025还用于判断检测按键计数器单元4022的计数值是否 达到了预先设定的值;设置单元4026还用于当检测按键计数器单元4022的计数值已达到预先设定的值 时,设置键盘按下标志;相应地,运算单元4028还用于将超时计数器单元4021和检测按键计数器单元 4022的计数值清零;相应地,控制单元4024还用于控制超时计数器单元4021和检测按键计数器单元 4022停止计数。进一步地,下面结合电路图对本实施例进行描述,参见图9,图9为本实施例提供 的智能密钥设备的具体实现电路图,具体描述如下图9中的USB接头(4HEADER)、D+、D-和两个限流电阻(R2、R 3)组成了智能密钥 设备的USB模块,主要用于智能密钥设备与计算机建立连接,以及用于智能密钥设备与计算机进行通信;图9中的Z8D64U为智能密钥设备的主控模块,Z8D64U为中兴8位智能卡芯片,其 支持USB协议,四个I/O扩展端口,图9中的AT26F004为存储模块,AT26F004是atmel系 列SPI接口 FLASH,其最大容量为4Mbit,Z8D64U通过4颗I/O线模拟SPI和AT26F004进 行通信,读写AT26F004中的内容,并且Z8D64U还用于控制智能密钥设备进行各种操作;图9中的Sl是一个常用薄膜开关,它是智能密钥设备的按键模块,图9中的发光 二极管Dl和限 流电阻Rl组成了智能密钥设备的指示灯模块。本实施例提供了一种实现串行FLASH存储器和开关复用I/O线的密钥装置,在本 实施例中,密钥装置使用4根I/O线就可以同时实现外扩FLASH的访问,按键控制和信号灯 的指示,这样就节省了 I/O线资源,并且也可以在I/O线较少的控制器上实现,进一步的节 省了成本。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
一种实现串行FLASH存储器和开关复用I/O线的方法,其特征在于,所述方法包括密钥装置与主机建立连接,进行初始化,打开USB中断;等待所述主机发送命令,并判断是否接收到所述主机发送的命令,若否,则继续等待接收所述主机发送命令,若是,则关闭USB中断;对所述接收到的命令进行解析,并根据解析结果进行判断;当所述命令为读取FLASH存储器的命令时,则所述密钥装置将CS端设置为低电平,读取FLASH存储器中的内容,并将所述内容返回给所述主机;当所述命令需要检测按键时,则所述密钥装置将CS端设置为高电平,读取此时的按键状态,将所述按键状态返回给所述主机,然后对所述命令进行处理;当所述命令需要检测按键且需要读取FLASH存储器时,则所述密钥装置先将CS端设置为低电平,读取FLASH存储器中的内容,再将CS端设置为高电平,读取此时的按键状态,将所述内容和所述按键状态返回给所述主机,然后对所述命令进行处理;当所述命令为读取处理结果的命令时,则所述密钥装置将处理结果返回给所述主机;当所述命令为其他命令时,则所述密钥装置对所述命令进行处理。
2.根据权利要求1所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征在 于,所述密钥装置将CS端设置为低电平之后,所述方法还包括控制指示灯变亮。
3.根据权利要求1所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征在 于,当所述命令为读取FLASH存储器的命令时,所述密钥装置读取FLASH存储器中的内容之 后,将所述内容返回给所述主机之前,所述方法还包括所述密钥装置将所述内容写入到缓存中; 将所述CS端设置为高电平。
4.根据权利要求1所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征在 于,当所述命令需要检测按键时,所述密钥装置将所述按键状态返回给所述主机的操作具 体为所述密钥装置判断读取得到的按键状态是否为按键按下状态; 若否,则将按键未按下状态返回给主机; 若是,则进行防抖操作,并延迟;再次读取此时的按键状态,并判断读取得到的按键状态是否为按键按下状态; 若否,则将按键未按下状态返回给主机; 若是,则将按键按下状态返回给主机。
5.根据权利要求1所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征 在于,当所述命令需要检测按键时,所述密钥装置读取此时的按键状态之前,所述方法还包 括将检测按键标志位设置为允许检测按键的标志;将超时计数器和检测按键计数器的计数值均清零,所述超时计数器和检测按键计数器 开始计数;打开定时器。
6.根据权利要求5所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征在 于,当所述命令需要检测按键时,所述密钥装置将所述按键状态返回给所述主机的操作具体为所述密钥装置判断读取得到的按键状态是否为按键按下状态; 若否,则将按键未按下状态返回给主机; 若是,则将按键按下状态返回给主机。
7.根据权利要求1所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征在 于,当所述命令需要检测按键且需要读取FLASH存储器时,所述密钥装置读取FLASH存储器 中的内容之后,将CS端设置为高电平之前,所述方法还包括所述密钥装置将所述内容存储在缓存中。
8.根据权利要求7所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征在 于,当所述命令需要检测按键且需要读取FLASH存储器时,所述密钥装置将所述内容和所 述按键状态返回给所述主机的操作具体为所述密钥装置判断读取得到的按键状态是否为按键按下状态; 若否,则将按键未按下状态和所述内容返回给主机; 若是,则进行防抖操作,并延迟;再次读取此时的按键状态,并判断读取得到的按键状态是否为按键按下状态; 若否,则将按键未按下状态和所述内容返回给主机; 若是,则将按键按下状态和所述内容返回给主机。
9.根据权利要求1所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征在 于,当所述命令需要检测按键且需要读取FLASH存储器时,所述密钥装置读取FLASH存储器 中的内容之后,将CS端设置为高电平之前,所述方法还包括所述密钥装置将所述内容存储在缓存中; 将检测按键标志位设置为允许检测按键的标志;将超时计数器和检测按键计数器的计数值均清零,所述超时计数器和检测按键计数器 开始计数,打开定时器。
10.根据权利要求9所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征在 于,当所述命令需要检测按键且需要读取FLASH存储器时,所述密钥装置将所述内容和所 述按键状态返回给所述主机的操作具体为所述密钥装置判断读取得到的按键状态是否为按键按下状态; 若否,则将按键未按下状态和所述内容返回给主机; 若是,则将按键按下状态和所述内容返回给主机。
11.根据权利要求1所述的实现串行FLASH存储器和开关复用I/O线的方法,其特征 在于,所述其他命令具体是指既不是读取FLASH存储器的命令,也不是需要检测按键的命 令,也不是读取处理结果的命令。
12.—种实现串行FLASH存储器和开关复用I/O线的密钥装置,其特征在于,所述密钥 装置包括USB模块,与主控模块相连,用于所述密钥装置与主机建立连接,以及用于所述密钥装 置在主控模块的控制下与所述主机进行通信;主控模块,与所述USB模块、存储模块、按键模块和指示灯模块分别相连,用于控制所 述密钥装置的各种操作;存储模块,与所述主控模块相连,用于存储各种信息; 按键模块,与所述主控模块相连,用于供用户输入信息;指示灯模块,与所述主控模块相连,用于在所述主控模块的控制下当所述密钥装置的 CS端的状态为低电平状态之后,指示灯模块变亮,提示用户所述密钥装置的CS端的当前状 态为低电平状态。
13.根据权利要求12所述的一种实现串行FLASH存储器和开关复用I/O线的密钥装 置,其特征在于,所述USB模块包括USB接口单元,用于所述密钥装置与所述主机建立连接;USB通信单元,用于所述密钥装置与所述主机进行通信,具体用于接收所述主机发送的 命令,以及用于将所述密钥装置的按键状态、存储在缓存中的所述存储模块中的内容和对 所述命令进行处理的处理结果返回给所述主机。
14.根据权利要求12所述的一种实现串行FLASH存储器和开关复用I/O线的密钥装 置,其特征在于,所述主控模块包括初始化单元,用于对密钥装置进行初始化操作;控制单元,用于在所述初始化单元对所述密钥装置进行初始化之后,打开USB中断,还 用于当解析判断单元判断得到已接收到所述主机发送的命令时,关闭所述USB中断;解析判断单元,用于判断是否接收到所述主机发送的命令,还用于对接收到的所述主 机发送的命令进行解析,并对解析后的命令进行判断;读写单元,用于当所述解析判断单元判断得到所述命令为读取所述存储模块的命令 时,读取存储模块中的内容,或者用于当所述解析判断单元判断得到所述命令需要检测按 键时,读取此时的按键状态,或者用于当所述解析判断单元判断得到所述命令需要检测按 键且需要读取所述存储模块时,读取此时的按键状态和存储模块中的内容; 处理单元,用于对所述主机发送的命令进行处理。
15.根据权利要求14所述的一种实现串行FLASH存储器和开关复用I/O线的密钥装 置,其特征在于,所述解析判断单元还用于判断所述读写单元读取得到的按键状态是否为 按键按下状态;所述读写单元还用于将所述读写单元读取得到的存储模块中的内容写入缓存中。
16.根据权利要求15所述的一种实现串行FLASH存储器和开关复用I/O线的密钥装 置,其特征在于,所述主控模块还包括设置单元,用于将CS端设置为低电平,或者用于将CS端设置为高电平; 延迟单元,用于当所述解析判断单元判断得到所述按键状态为按键按下状态时,进行 防抖操作,并延迟。
17.根据权利要求15所述的一种实现串行FLASH存储器和开关复用I/O线的密钥装 置,其特征在于,所述主控模块还包括定时器单元,用于在超时计数器单元和检测按键计数器单元开始计数时进行定时,当 所述定时器单元到时后,则执行所述定时器单元中断子程序中所包含的操作;超时计数器单元,用于对等待用户通过所述按键模块输入信息的时间进行计数; 检测按键计数器单元,用于对检测按键的次数进行计数;设置单元,用于将CS端设置为低电平,或者用于将CS端设置为高电平,还用于将检测按键标志位设置为允许检测按键的标志; 运算单元,用于将所述超时计数器单元和所述检测按键计数器单元的计数值清零。
18.根据权利要求17所述的一种实现串行FLASH存储器和开关复用I/O线的密钥装 置,其特征在于,所述控制单元还用于打开所述超时计数器单元和所述检测按键计数器单 元,开始计数,以及还用于打开所述定时器单元。
全文摘要
本发明公开了一种实现串行FLASH存储器和开关复用I/O线的方法及密钥装置,属于计算机领域。所述方法包括密钥装置接收主机发送的命令并进行判断;当为读取FLASH存储器的命令时,则将CS端设为低电平,读取FLASH存储器的内容;当命令需要检测按键时,则将CS端设为高电平,读取此时的按键状态;当命令需要检测按键且需要读取FLASH存储器时,则先将CS端设为低电平,读取FLASH存储器中的内容,再将CS端设为高电平,读取此时的按键状态。本发明提供的方法及密钥装置使用4根I/O线可以同时实现FLASH存储器的访问,按键控制和信号灯的指示,节省了I/O线资源和成本。
文档编号G06F13/16GK101847132SQ20101016806
公开日2010年9月29日 申请日期2010年5月11日 优先权日2010年5月11日
发明者于华章, 陆舟 申请人:北京飞天诚信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1