具体实施方式
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
为解决现有技术中SPI Flash的读写速度慢以及成本较高的问题,本发明提供了一种串行外围接口闪存的操作电路。
如图3所示,本发明串行外围接口闪存的操作电路包括以下组成部分:主控制单元31,微处理器单元32和串行外围接口闪存单元33;
其中,所述微处理器单元32的第一I/O口IO1连接到所述串行外围接口闪存单元33的片选信号端CS,所述微处理器单元32的第二I/O口IO2分别连接到所述串行外围接口闪存单元33的时钟信号端SCL和所述主控制单元31的第一复用端I1,所述微处理器单元32的第三I/O口IO3分别连接到所述串行外围接口闪存单元33的主输出信号端MOSI、主输入信号端MISO,以及所述主控制单元31的第二复用端I2。
由图3可以看出,在所示的操作单元中,主控制单元31的第一复用端I1复用为用于输出SPI Flash的时钟信号SCL,以及用于与微处理器单元31的通信信号端,并与所述微处理器单元31的第二I/O口IO2连接;而主控制单元31的第二复用端I2复用为用于控制SPI Flash的MOSI、MISO端,以及用于与微处理单元31的通信信号端,并与所述微处理器单元31的第三I/O口IO3连接。由于SPI Flash的片选信号端CS在没有被拉低之前,SPI Flash的MOSI端、MISO端是一种高阻状态,所以主控制单元的引脚可以被复用。为便于说明,将第二复用端I2的输出信号称为SDA。
微处理器单元的第一I/O口则只用于控制SPI Flash的片选信号端,且所述片选信号CS为低时,所述SPI Flash为有效状态。由上可以看出,由微处理器单元控制的只是SPI Flash的片选信号端,而此端子不影响SPI Flash的读写速度。
在进行读/写操作前,微处理器单元32置其IO1端口为高,因此SPI Flash的片选信号端CS为高,SPI Flash处于无效状态。此时主控制单元31可以和微处理器单元32进行数据通讯。在所述数据通信的过程中,所述主控制单元通过其第一复用端I1和第二复用端I2向所述微处理器单元32发送对SPI Flash的读/写操作命令,要求对SPI Flash进行读/写操作,并将要读/写的数据所在的地址信息发送给微处理器单元32。在收到所述读/写操作命令后,所述微处理器单元32将所述读/写操作命令以及地址信息发送给SPI Flash。最后由所述主控制单元31对所述SPI Flash进行相应的读/写操作。在读/写操作完成后,主控制单元31向微处理器单元32发送读/写操作完成消息,以使所述微处理器单元32再次将SPI Flash置为无效状态。
如图4所示,本发明还提供了一种串行外围接口闪存的操作电路,包括如下组成部分:主控制单元31,微处理器单元32和串行外围接口闪存单元33。
其中,所述微处理器单元31的第一I/O口IO1连接到所述串行外围接口闪存单元32的片选信号端CS,所述微处理器单元32的第二I/O口IO2分别连接到所述串行外围接口闪存单元33的时钟信号端SCL和所述主控制单元的第一复用端I1,所述微处理器单元32的第三I/O口IO3分别连接到所述串行外围接口闪存单元33的主输出信号端MOSI,以及所述主控制单元31的第二复用端I2,所述微处理器单元32的第四I/O口IO4连接到所述串行外围接口闪存单元32的主输出信号端MISO。
但是,与图3中相同的是,微处理器单元32控制的SPI Flash的引脚,并不影响SPI Flash的读速度。因此,图4所示的方案还是能够保证对SPI Flash的读速度。
由图4可以看出,与图3所示的串行外围接口闪存的操作电路所不同的是,在此技术方案中,主控单元31的第二复用端I2只是复用用于与微处理器单元32进行通信的信号端以及对SPI Flash的MISO的控制端。而SPI Flash的MOSI以及片选信号端CS则是由微处理器单元32进行控制。
在图3和图4所示的串行外围接口闪存的操作电路中,主控制单元和微处理器单元之间的通信协议可以采用现有的通信协议,例如I2C协议等,也可以在现有协议的基础上进行扩展。但是,无论采用哪种协议,只要保证二者之间的信息传递能够被对方识别即可。
需要说明的是,图3或图4所示的串行外围接口闪存的操作电路可以单独使用,也可以将该单元进行封装后形成存储设备,例如可以将该单元封装后,得到USB Key。
下面介绍一下本发明串行外围接口闪存的操作方法。以下,以图4所述的操作电路为例。为方便描述,结合图5和图6、7、8的时序图对本发明的操作方法进行描述。
如图5所示,本发明串行外围接口闪存的操作方法包括如下步骤:
步骤51、主控制单元向微处理器单元发送对串行外围接口闪存单元的读/写操作命令。
结合图6的时序图,在此步骤中,主要是进行如下过程:
(1)在空闲状态时,主控制单元处于OD状态,将SCL作为其输出端,且输出为高电平;而微处理器单元则是将SCL信号作为输入;
(2)当所述主控制单元开始发送读/写操作命令时,通过其第一复用端将时钟信号端SCL置为有效状态,也即将时钟信号端置为低电平;同时通过其第一复用端和第二复用端向所述微处理器单元发送所述读/写操作命令。为保证微处理器单元能够正确接收此命令,SCL至少保持10us的低电平。需要注意的是,在SCL为低电平的第一个时钟信号内,主控制单元并不传送数据;
(3)从SCL的第二个时钟信号开始,在每个时钟的下降沿,所述微处理器单元在所述时钟信号SCL为有效状态时,即为低电平时,接收所述读/写操作命令;同样,为保证所述微处理器单元能够正确的接收到相应的数据,SCL时钟信号为高电平的时间需持续至少10us,为低电平的时间也需持续至少10us的时间;
(4)在所述微处理器单元接收完八个字节的读/写操作命令后,将SCL设置为其输出,同时将SCL再次设置为低电平,从而禁止主控制单元向其再次发送命令;
(5)主控制单元将SCL设置为高电平,且持续至少20us的时间;
由图6的时序图可以看出,在上述过程中,片选信号端CS,主输出信号端MOSI始终保持为高电平。也就是说,在这个过程中只是由主控制单元和微处理器单元进行数据的交互,而不需要SPI Flash的参与。
再结合图7所示,为进一步提高读/写速度,(6)所述主控制单元根据所述接收完成消息,将时钟信号端SCL置为有效状态,向所述微处理器单元发送地址信息;其中所述地址信息表示主控制单元需要操作的数据在SPI Flash中的相应位置。同样,主控制单元在SCL的每个下降沿发送一位的地址,首先发送的是高字节的地址,然后再发送低字节的地址。
其中,(7)在主控制单元在发送完每个字节的地址后,将SCL设置为其输入,而微处理器单元则在接收完每个字节的地址后,设置SCL输出为低,以禁止主控制单元再向其发送地址;
(8)当微处理器单元准备好接收主控制单元的地址信息后,它会再次将SCL设为其输入,而主控制单元则是将SCL设为输出,准备向微处理器单元发送地址。当高、低字节的地址发送完后,微处理器单元将SCL设置为低电平,而主控制单元则会将SCL/SDA设为其输入。
在上述过程中,(9)微处理器单元首先将SDA设置为其输入,准备接收由主控制单元发送的地址信息;
(10)当地址信息接收完成后,微处理器单元将SCL设置为输入,SDA为低,表示微处理器单元正在执行后续的操作。
在一般情况下,对SPI Flash进行读写操作的时候,需要三个字节的地址,但是由于最后一个字节的地址始终为0x00,因此,在本发明中,只需主控制单元向微处理器单元发送两个字节的地址即可。
同样,由图7的时序图可以看出,在上述过程中,片选信号端CS,主输出信号端MOSI始终保持为高电平,也就是在这个过程中只是由主控制单元和微处理器单元进行数据的交互,而不需要SPI Flash的参与。
并且,在上述过程中,当微处理器单元接收完全部字节的读/写操作命令后,首先会来判断接收到的读/写操作命令的类型。例如,所述微处理器单元会首先判断一下接收到的数据是否为0b1010101*,若是,则表明接收到主控制单元需向其传送数据的起始字节,并将SCL设为输入,SDA为低电平,以表示微处理器单元正在根据接收到的读/写操作命令进行后续的操作。其中,*为0表示主控制单元需要读取SPI Flash的ID,*为1表示主控制单元需要读取SPI Flash中的数据。
步骤52、根据所述读/写操作命令,所述微处理器单元将串行外围接口闪存单元置为有效状态;
如图8所示,在接收完读/写操作命令以及相应的地址消息后,所述微处理器单元将会将SPI Flash的片选信号端CS置为有效状态,即低电平状态,并将所述读/写操作命令、地址信息发送给SPI Flash。
(11)微处理器单元向SPI Flash发送读/写操作命令和地址信息;在这个过程中,微处理器单元控制SDA输出为低电平,表示所述微处理器单元正在执行后续的操作;
(12)微处理器单元将SCL/SDA设为输入,允许主控制单元读取或写入相应的数据;
步骤53、所述主控制单元对所述串行外围接口闪存单元进行读/写操作。
再如图8所示,(13)主控制单元设置SCL为输出,SDA为输入,读取SPI Flash中相应地址中的数据,或向相应的地址中写入数据;
(14)在读写操作完成后,在主控制单元操作完成后,主控制单元将SCL设置为低电平,并保持至少1ms的时间,之后再将SDA设为高电平,并设置为输入;
(15)当微处理器单元检测到SCL为低电平的时间超过了800us后,设置SCL为高电平,然后再次将SDA设置为低电平,以通知主控制单元结束通信的过程。
以上,仅是以图4所示的串行外围接口闪存的操作电路为例进行描述。当采用图3所示的电路的时候,其实现过程大致相同。
综上所述,本发明通过主控制单元控制SPI Flash的读写操作时序,而通过微处理器单元控制SPI Flash的片选信号端。因此,由于微处理器单元控制的是SPI Flash中不影响读写速度的引脚,因此,即使采用性能较差的微处理器单元也能够保证对SPI Flash的读写速度。因此,相较于现有技术,本发明在降低成本的同时提高了对SPI Flash的读写速度。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。