发明内容
为此,需要提供一种识别速度快、效率高的区分SPI NOR Flash与SPI NAND Flash的方法和装置。
为实现上述目的,发明人提供了一种区分NOR Flash与NAND Flash的方法,包括步骤:
在Flash数据输出线接上拉电阻或下拉电阻;
在头部信息时钟范围内输入标识信息获取指令;
在有效信息时钟范围内读取各时钟的缓存数据;
根据所述各时钟的缓存数据区分NOR Flash与Nand Flash。
进一步地,所述的区分NOR Flash与NAND Flash的方法中,所述标识信息获取指令为0x9F命令。
进一步地,所述的区分NOR Flash与NAND Flash的方法中,步骤“根据所述各时钟的缓存数据区分NOR Flash与Nand Flash”具体包括:
判断所述各时钟的缓存数据中的第2和第3字节是否全是高电位信息或全是低电位信息,若是则判定SPI Flash硬件连接有误。
进一步地,所述的区分NOR Flash与NAND Flash的方法中,步骤“根据所述各时钟的缓存数据区分NOR Flash与Nand Flash”具体包括:
判断所述各时钟的缓存数据中的第2和第3字节是否全是高电位信息或全是低电位信息,若否,则判断所述各时钟的缓存数据的第1个字节是否是高电位信息或低电位信息,若是则判定SPI Flash接口连接的是SPI NAND Flash;否则判定SPI Flash接口连接的是SPI NOR Flash。
进一步地,所述的区分NOR Flash与NAND Flash的方法中,所述头部信息时钟范围为第0-7个时钟;所述有效信息时钟范围为第8-31个时钟。
发明人还提供了一种区分NOR Flash与Nand Flash的装置,包括Flash数据输出线,所述Flash数据输出线上接有上拉电阻或下拉电阻;
所述装置还包括输入单元、缓存读取单元和判断单元;
所述输入单元用于在头部信息时钟范围内接收标识信息获取指令;
所述缓存读取单元用于在有效信息时钟范围内读取各时钟的缓存数据;
所述判断单元用于根据所述各时钟的缓存数据区分NOR Flash与Nand Flash。
进一步地,所述的区分NOR Flash与Nand Flash的装置中,所述标识信息获取指令为0x9F命令。
进一步地,所述的区分NOR Flash与Nand Flash的装置中,判断单元根据所述各时钟的缓存数据区分NOR Flash与Nand Flash具体包括:
判断所述各时钟的缓存数据中的第2和第3字节是否全是高电位信息或全是低电位信息,若是则判定SPI Flash硬件连接有误。
进一步地,所述的区分NOR Flash与Nand Flash的装置中,判断单元根据所述各时钟的缓存数据区分NOR Flash与Nand Flash具体包括:
判断所述各时钟的缓存数据中的第2和第3字节是否全是高电位信息或全是低电位信息,若否,则判断所述各时钟的缓存数据的第1个字节是否是高电位信息或低电位信息,若是则判定SPI Flash接口连接的是SPI NAND Flash;否则判定SPI Flash接口连接的是SPI NOR Flash。
进一步地,所述的区分NOR Flash与Nand Flash的装置中,所述头部信息时钟范围为第0-7个时钟;所述有效信息时钟范围为第8-31个时钟。
区别于现有技术,上述技术方案能够低成本高效率地提高区分SPI NOR/NAND FLASH的速度,且减少了识别程序的代码量。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1,为本发明一实施方式所述区分NOR Flash与NAND Flash的方法的流程图;所述方法包括步骤:
S1、在Flash数据输出线接上拉电阻或下拉电阻;
当SPI Flash没有驱动且DO线(即数据输出线)接上拉电阻时,D0线电平是高电平,接下拉电阻时DO线为低电平。DO线接上拉电阻或下拉电阻的目的是当SPI控制器读第8个到第16个时钟的数据时能得到确定值。若是不 接上拉或下拉电阻,当SPI接口接的是SPI NAND Flash时,SPI控制器读第8个到第16个时钟的数据时,DO线处于高阻态(请参阅图2,为SPI NAND Flash读取ID信息的时序图),读到的数据是随机值,这样就无法区分SPI接口所连接的器件是SPI NOR Flash还是SPI NAND Flash。
S2、在头部信息时钟范围内输入标识信息获取指令;
具体地,所述标识信息获取指令为0x9F命令;所述头部信息时钟范围为第0-7个时钟;
S3、在有效信息时钟范围内读取各时钟的缓存数据;
具体地,所述有效信息时钟范围为第8-31个时钟;
本实施方式所述的区分方法流程在步骤S2和步骤S3中,通过SPI NOR Flash或SPI NAND Flash的DI线(即数据输入线)在第0个到第7个时钟里发ID信息获取指令,即0x9F命令,并且在第8个到第31个时钟里连续读取DO线上的缓存数据(即3个字节即24bit的数据)。
S4、判断所述各时钟的缓存数据中的第2和第3字节是否全是高电位信息或全是低电位信息,若是则进入步骤S5,否则进入步骤S6;
S5、判定SPI Flash硬件连接有误;
S6、判断所述各时钟的缓存数据的第1个字节是否是高电位信息或低电位信息,若是则进入步骤S71,否则进入步骤S72;
S71、判定SPI Flash接口连接的是SPI NAND Flash;
S72、判定SPI Flash接口连接的是SPI NOR Flash。
在缓存数据读取完成后,以其为依据判断数据的第2字节和第3个字节是否全是高电位信息0xFF(接上拉电阻时)或全是低电位信息0x0(接下拉电阻时)。若是,则SPI接口上没有接SPI NOR Flash或SPI NAND Flash,或是硬件连接有问题。
若第2字节和第3个字节非0xFF或非0x0,则判断读取到的第一个字节数据是否是0xFF或是0x0。若是其中一个。则判定SPI接口上接的是SPI NAND Flash,否则判定接口上接的接的是SPI NOR Flash可以这样判断的原因是若SPI接口接的是SPI NOR Flash,则在第8个到第15时钟,DO线上就输出厂商ID(请参阅图3,为SPI NOR Flash读取ID信息的时序图),而厂商ID不可能是0xFF或0x0。若SPI接口接的是SPI NAND Flash,在第8个到第15时钟在DO线上没有驱动输出,由于接了上拉电阻或下拉电阻,则在第8个到第15时钟,应读到高电位信息0xFF或是低电位信息0x0。
本实施方式所述区分NOR Flash与NAND Flash的方法能够低成本高效率地提高区分SPI NOR/NAND FLASH的速度,且减少了识别程序的代码量。
请参阅图4,为本发明一实施方式所述区分NOR Flash与NAND Flash的装置的结构示意图;所述装置包括Flash数据输出线1,所述Flash数据输出线1上接有上拉电阻2;所述装置还包括输入单元4、缓存读取单元5和判断单元6;所述输入单元4用于在头部信息时钟范围内接收标识信息获取指令;所述缓存读取单元5用于在有效信息时钟范围内读取各时钟的缓存数据;所述判断单元6用于根据所述各时钟的缓存数据区分NOR Flash与Nand Flash。
进一步地,输入单元4在头部信息时钟范围内接收的标识信息获取指令为0x9F命令;所述头部信息时钟范围为第0-7个时钟;
所述缓存读取单元5读取各时钟的缓存数据所在的有效信息时钟范围为第8-31个时钟。
进一步地,判断单元根据所述各时钟的缓存数据区分NOR Flash与Nand Flash具体包括:判断所述各时钟的缓存数据中的第2和第3字节是否全是高电位信息,若是则判定SPI Flash硬件连接有误;以及
判断所述各时钟的缓存数据的第1个字节是否是高电位信息,若是则判定SPI Flash接口连接的是SPI NAND Flash;否则判定SPI Flash接口连接的是SPI NOR Flash。
以下以一具体流程说明本装置实现区分NOR Flash与NAND Flash的功能的方式:
首先,装置中的Flash数据输出线1接有上拉电阻2;当SPI Flash没有驱动且DO线(即Flash数据输出线1)接上拉电阻2时,D0线电平是高电平。DO线接上拉电阻2的目的是当SPI控制器读第8个到第16个时钟的数据时能得到确定值。若是不接上拉或下拉电阻,当SPI接口接的是SPI NAND Flash时,SPI控制器读第8个到第16个时钟的数据时,DO线处于高阻态(请参阅图2,为SPI NAND Flash读取ID信息的时序图),读到的数据是随机值,这样就无法区分SPI接口所连接的器件是SPI NOR Flash还是SPI NAND Flash。
然后,输入单元4在头部信息时钟范围内获取用户输入的标识信息获取指令;具体地,所述标识信息获取指令为0x9F命令;所述头部信息时钟范围为第0-7个时钟;
进一步地,缓存获取单元5在有效信息时钟范围内读取各时钟的缓存数据;具体地,所述有效信息时钟范围为第8-31个时钟;
本实施方式所述的识别流程中,通过SPI NOR Flash或SPI NAND Flash的DI线(即数据输入线)在第0个到第7个时钟里发ID信息获取指令,即0x9F命令,并且在第8个到第31个时钟里连续读取DO线上的缓存数据(即3个字节即24bit的数据)。然后,判断单元6判断所述各时钟的缓存数据中的第2和第3字节是否全是高电位信息,若是则判定SPI Flash硬件连接有误;否则判断单元6进一步判断所述各时钟的缓存数据的第1个字节是否是高电位信息,若是则判定SPI Flash接口连接的是SPI NAND Flash;否则判定SPI Flash接口连接的是SPI NOR Flash。
在缓存获取单元5的缓存数据读取工作完成后,以其为依据,判断单元6判断SPI接口上是否没有接SPI NOR Flash或SPI NAND Flash,或是硬件连接有问题。当没有接SPI NOR Flash或SPI NAND Flash,或是硬件连接有问题,并且Flash数据输出线1上接有上拉电阻2时,数据的第2字节和第3个字节全是高电位信息0xFF,亦可逆推,也就是说当数据的第2字节和第3个字节全是高电位信息0xFF时,说明SPI接口上没有接SPI NOR Flash或SPI NAND Flash,或是硬件连接有问题。
当确认SPI接口的硬件连接没有问题之后,判断单元6则进一步判断读取到的第一个字节数据是否是0xFF。若是,则判定SPI接口上接的是SPI NAND Flash,否则判定接口上接的接的是SPI NOR Flash。可以这样判断的原因是,若SPI接口接的是SPI NOR Flash,则在第8个到第15时钟,DO线上就输出厂商ID(请参阅图3,为SPI NOR Flash读取ID信息的时序图),而厂商ID不可能是0xFF或0x0。若SPI接口接的是SPI NAND Flash,在第8个到第15时钟在DO线上没有驱动输出,由于接了上拉电阻,则在第8个到第15时钟,应读到高电位信息0xFF。
本实施方式所述区分NOR Flash与NAND Flash的装置在实际运用中,能够低成本高效率地提高识别SPI NOR/NAND FLASH的速度,且减少了识别程序的代码量。
图5为本发明另一实施方式所述区分NOR Flash与NAND Flash的装置的结构示意图。
所述装置包括Flash数据输出线1,所述Flash数据输出线1上接有下拉电阻3;所述装置还包括输入单元4、缓存读取单元5和判断单元6;所述输入单元4用于在头部信息时钟范围内接收标识信息获取指令;所述缓存读取单元5用于在有效信息时钟范围内读取各时钟的缓存数据;所述判断单元6用于根据所述各时钟的缓存数据区分NOR Flash与Nand Flash。
进一步地,输入单元4在头部信息时钟范围内接收的标识信息获取指令为0x9F命令;所述头部信息时钟范围为第0-7个时钟;
所述缓存读取单元5读取各时钟的缓存数据所在的有效信息时钟范围为第8-31个时钟。
进一步地,判断单元根据所述各时钟的缓存数据区分NOR Flash与Nand Flash具体包括:判断所述各时钟的缓存数据中的第2和第3字节是否全是低电位信息,若是则判定SPI Flash硬件连接有误;以及
判断所述各时钟的缓存数据的第1个字节是否是低电位信息,若是则判定SPI Flash接口连接的是SPI NAND Flash;否则判定SPI Flash接口连接的是SPI NOR Flash。
以下以一具体流程说明本装置实现区分NOR Flash与NAND Flash的功能的方式:
首先,装置中的Flash数据输出线1接有下拉电阻3;当SPI Flash没有驱动且DO线(即Flash数据输出线1)接下拉电阻3时,DO线为低电平。DO线接下拉电阻3的目的是当SPI控制器读第8个到第16个时钟的数据时能得到确定值。若是不接下拉电阻(亦不接上拉电阻),当SPI接口接的是SPI NAND Flash时,SPI控制器读第8个到第16个时钟的数据时,DO线处于高阻态(请参阅图2,为SPI NAND Flash读取ID信息的时序图),读到的数据是随机值,这样就无法区分SPI接口所连接的器件是SPI NOR Flash还是SPI NAND Flash。
然后,输入单元4在头部信息时钟范围内获取用户输入的标识信息获取指令;具体地,所述标识信息获取指令为0x9F命令;所述头部信息时钟范围为第0-7个时钟;
进一步地,缓存获取单元5在有效信息时钟范围内读取各时钟的缓存数据;具体地,所述有效信息时钟范围为第8-31个时钟;
本实施方式所述的识别流程中,通过SPI NOR Flash或SPI NAND Flash的DI线(即数据输入线)在第0个到第7个时钟里发ID信息获取指令,即0x9F命令,并且在第8个到第31个时钟里连续读取DO线上的缓存数据(即3个字节即24bit的数据)。然后,判断单元6判断所述各时钟的缓存数据中的第2和第3字节是否全是低电位信息,若是则判定SPI Flash硬件连接有误;否则判断单元6进一步判断所述各时钟的缓存数据的第1个字节是否是低电位信息,若是则判定SPI Flash接口连接的是SPI NAND Flash;否则判定SPI Flash接口连接的是SPI NOR Flash。
在缓存获取单元5的缓存数据读取工作完成后,以其为依据,判断单元6判断SPI接口上是否没有接SPI NOR Flash或SPI NAND Flash,或是硬件连接有问题。当没有接SPI NOR Flash或SPI NAND Flash,或是硬件连接有问题,并且Flash数据输出线1上接有下拉电阻3时,数据的第2字节和第3个字节全是低电位信息0x0,亦可逆推,也就是说当数据的第2字节和第3个字节全是低电位信息0x0时,说明SPI接口上没有接SPI NOR Flash或SPI NAND Flash,或是硬件连接有问题。
当确认SPI接口的硬件连接没有问题之后,判断单元6则进一步判断读取到的第一个字节数据是否是低电位信息0x0。若是,则判定SPI接口上接的是SPI NAND Flash,否则判定接口上接的接的是SPI NOR Flash。可以这样判断的原因是,若SPI接口接的是SPI NOR Flash,则在第8个到第15时钟,DO线上就输出厂商ID(请参阅图3,为SPI NOR Flash读取ID信息的时序图),而厂商ID不可能是0x0。若SPI接口接的是SPI NAND Flash,在第8个到第15时钟在DO线上没有驱动输出,由于接了下拉电阻3,则在第8个到第15时钟,应读到低电位信息0x0。
本实施方式所述区分NOR Flash与NAND Flash的装置在实际运用中,能够低成本高效率地提高识别SPI NOR/NAND FLASH的速度,且减少了识别程序的代码量。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中 还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。
本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个 方框中指定的功能的步骤。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。