CN105468563A - Spi从设备、spi通信系统及spi通信方法 - Google Patents

Spi从设备、spi通信系统及spi通信方法 Download PDF

Info

Publication number
CN105468563A
CN105468563A CN201511005400.2A CN201511005400A CN105468563A CN 105468563 A CN105468563 A CN 105468563A CN 201511005400 A CN201511005400 A CN 201511005400A CN 105468563 A CN105468563 A CN 105468563A
Authority
CN
China
Prior art keywords
spi
equipment
data
instruction
main equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201511005400.2A
Other languages
English (en)
Other versions
CN105468563B (zh
Inventor
张华�
王相如
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HANGZHOU SHILAN HOLDINGS CO Ltd
Original Assignee
HANGZHOU SHILAN HOLDINGS CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HANGZHOU SHILAN HOLDINGS CO Ltd filed Critical HANGZHOU SHILAN HOLDINGS CO Ltd
Priority to CN201511005400.2A priority Critical patent/CN105468563B/zh
Publication of CN105468563A publication Critical patent/CN105468563A/zh
Application granted granted Critical
Publication of CN105468563B publication Critical patent/CN105468563B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Abstract

本发明提供了一种SPI从设备、SPI通信系统及SPI通信方法,所述SPI从设备可以在数据模式和命令模式两种数据传输模式中选择一种进行工作,从而实现SPI主设备对SPI从设备不同存储空间的访问。特别的,在数据模式下,可实现SPI主设备对SPI从设备扩展至4G的存储空间的访问和实现大批量数据传输;而在命令模式下,可实现SPI主设备对SPI从设备不扩展的存款空间的访问和实现小批量数据传输,克服了传统SPI从设备工作模式单一和SPI从设备可供主设备访问的存储空间小的问题。

Description

SPI从设备、SPI通信系统及SPI通信方法
技术领域
本发明涉及数据传输技术领域,特别涉及一种SPI从设备、SPI通信系统及SPI通信方法。
背景技术
传统的基于SPI(SerialPeripheralInterface,串行外设接口)协议的SPI从设备(Slavedevice)与SPI主设备(Masterdevice)进行通信时,存在以下缺陷:
一、工作模式单一,基于SPI协议的SPI从设备在传输小批量数据与传输大批量数据时使用相同的工作方式,使得SPI从设备要么缺乏效率,要么缺乏灵活性;
二、SPI从设备可供SPI主设备访问的存储空间比较小,仅有16M;
三、若SPI从设备中使用两个不同时钟信号时,使用异步FIFO(先入先出)缓冲器会致使结构复杂,比较难以控制,且有延迟,传输数据速率低;
四、SPI主设备和SPI从设备间进行通信时,没有工作安全保证和传输安全保证,容易造成SPI从设备中数据丢失或被破坏、传输数据错误;另一方面,传统的SPI从设备不支持预存储数据和实际存储数据的校验,保证不了数据传输的完整性。
发明内容
本发明的目的在于提供一种SPI从设备、SPI通信系统及SPI通信方法,以解决上述技术问题。
其中,所述SPI从设备包括:SPI控制器及存储模块;所述SPI控制器用以与一SPI主设备进行数据传输,所述SPI控制器支持以数据模式或命令模式与所述SPI主设备进行数据传输,其中,所述数据模式以第一数据量进行数据传输,所述命令模式以第二数据量进行数据传输,所述第一数据量大于第二数据量;所述存储模块用以存储数据。
本发明还提供一种SPI通信系统,所述SPI通信系统包括:一个SPI主设备及一个或者多个如前所述的SPI从设备,其中,每一个SPI从设备均与所述SPI主设备连接。
本发明还提供一种SPI通信方法,所述SPI通信方法包括:
提供一如前所述的SPI通信系统;
每个SPI从设备自身进行初始化;
SPI主设备对SPI从设备进行初始化,以使SPI从设备获取数据传输模式;
在获取的数据传输模式下,SPI主设备对SPI从设备进行读或者写操作。
在本发明提供的SPI从设备、SPI通信系统及SPI通信方法中,所述SPI从设备可以在数据模式和命令模式两种数据传输模式中选择一种进行工作,从而实现SPI主设备对SPI从设备不同存储空间的访问。特别的,在数据模式下,可实现SPI主设备对SPI从设备扩展至4G的存储空间的访问和实现大批量数据传输;而在命令模式下,可实现SPI主设备对SPI从设备不扩展的存款空间的访问和实现小批量数据传输,克服了传统SPI从设备工作模式单一和SPI从设备可供主设备访问的存储空间小的问题。
附图说明
图1为本发明实施例的SPI从设备的系统架构示意图;
图2为本发明实施例的SPI控制器的结构示意图;
图3为本发明实施例的SPI控制器的功能层中的状态控制寄存器文件的结构示意图;
图4为本发明实施例的SPI控制器的协议层中的指令寄存器文件的结构示意图;
图5为本发明实施例的SPI控制器支持的READ_ID指令时序图;
图6为本发明实施例的SPI控制器支持的READ指令时序图;
图7为本发明实施例的SPI控制器支持的WRITE指令时序图;
图8为本发明实施例的SPI主设备与SPI从设备数据传输的流接口的时序示意图;
图9为本发明实施例的数据模式下SPI主设备读写SPI从设备的指令流示意图;
图10为本发明实施例的命令模式下SPI主设备读写SPI从设备的指令流示意图。
具体实施方式
以下结合附图和具体实施例对本发明提出的SPI从设备、SPI通信系统及SPI通信方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
【SPI从设备】
请参考图1,其为本发明实施例的SPI从设备的系统框架示意图。如图1所示,所述SPI从设备1包括:SPI控制器10及存储模块20;所述SPI控制器10用以与一SPI主设备2进行数据传输,所述SPI控制器10支持以数据模式或命令模式与所述SPI主设备2进行数据传输,其中,所述数据模式以第一数据量进行数据传输,所述命令模式以第二数据量进行数据传输,所述第一数据量大于第二数据量;所述存储模块20用以存储数据。
在本申请实施例中,所述SPI从设备1还包括主控单元(CPU/MCU)30、直接内存访问控制器(DMAC)40以及系统总线桥接设备50,其中,所述SPI控制器10、存储模块20、主控单元30以及直接内存访问控制器40均与所述系统总线桥接设备50连接。所述主控单元30和直接内存访问控制器40通过所述系统总线桥接设备50能够与所述SPI控制器10进行通信,并进一步控制所述SPI控制器10与所述SPI主设备2之间的数据传输。
在本申请实施例中,所述存储模块20用以存储数据,具体的,用以存储所述SPI控制器10向所述SPI主设备2发送的数据;或者所述SPI控制器10从所述SPI主设备2接收的数据。在本申请实施例中,所述存储模块20包括内存控制器21以及与所述内存控制器21连接的片上内存(OnChipSRAM)22;在本申请的其他实施例中,所述存储模块20还可进一步包括外部主内存(图1中未示出),所述外部主内存与所述内存控制器21连接。
在本申请实施例中,通过所述SPI控制器10支持以数据模式或命令模式与所述SPI主设备2进行数据传输,其中,所述数据模式以第一数据量进行数据传输,所述命令模式以第二数据量进行数据传输,所述第一数据量大于第二数据量,也即使得所述SPI从设备1能够在传输小批量数据与传输大批量数据时使用不相同的工作方式,即传输大批量数据时可以采用数据模式,采用小批量数据时可以采用命令模式,由此使得所述SPI从设备1能够灵活的进行数据传输。
接下去,请参考图2,其为本发明实施例的SPI控制器的结构示意图。在本申请实施例中,所述SPI控制器10包括信号层100、与所述信号层100连接的协议层110、以及与所述协议层110连接的功能层120。其中,所述信号层100主要用以与所述SPI主设备2进行数据传输;所述协议层110主要用以解析控制数据传输的指令以及实现信号层100与功能层120之间的数据传输;所述功能层120主要用以与所述存储模块20进行数据传输。接下去,将对所述信号层100、协议层110及功能层120做进一步描述。
信号层
请继续参考图2,在本申请实施例中,所述信号层100包括发送移位寄存器101以及与所述发送移位寄存器101连接的发送缓冲器102,所述发送移位寄存器101和发送缓冲器102组成发送模块,以向SPI主设备2发送数据。在本申请实施例中,所述信号层100还包括接收移位寄存器103以及与所述接收移位寄存器103连接的接收缓冲器104,所述接收移位寄存器103和接收缓冲器104组成接收模块,以接收SPI主设备2发送的数据。
在本申请实施例中,通过所述发送缓冲器102及接收缓冲器104缓冲发送和接收的数据,由此,增加所述发送移位寄存器101和接收移位寄存器103发送和接收数据的速度。具体的,当所述SPI控制器10发送数据时,首先将部分待发送数据存储到发送缓冲器102中,接着,再通过发送移位寄存器101向SPI主设备2发送数据,由此能够提高所述发送移位寄存器101发送数据的速度;当所述SPI控制器10接收数据时,首先接收移位寄存器103接收来自SPI主设备2的数据,接着,接收移位寄存器103将接收到的数据发送给接收缓冲器104,由此接收移位寄存器103又可马上接收下一批数据,从而提高了所述接收移位寄存器103接收数据的速度。
进一步的,所述信号层100还包括与发送缓冲器102和接收缓冲器104连接的异步时钟域控制器105以及与发送移位寄存器101和接收移位寄存器103连接的SPI时序控制器106;其中,所述异步时钟域控制器105用以对发送的数据或者接收的数据进行时钟域转换;所述SPI时序控制器106用以对发送的数据或者接收的数据进行时序控制。通过所述异步时钟域控制器105和SPI时序控制器106保证所述SPI控制器10发送和接收的数据的准确性。
具体的,当接收数据时:
SPI主设备2通过MOSI信号线输出的比特(bit)数据在SPI时序控制器106的控制下,依次串行传输至接收移位寄存器103,接收移位寄存器103接收串行传输的多个比特(bit)数据满存后,仍在SPI时序控制器106的控制下,将接收移位寄存器103存储的数据并行传输至接收缓冲器104,接收缓冲器104在异步时钟域控制器105的控制下,将接收缓冲器104接收的并行数据通过流接口传输至协议层110。
当发送数据时:
协议层110通过流接口输出的数据在异步时钟域控制器105的控制下,依次并行传输至发送缓冲器102,发送缓冲器102接收的并行数据在SPI时序控制器106的控制下,转成串行方式传输至发送移位寄存器101后,发送移位寄存器101接收的串行数据仍在SPI时序控制器106的控制下,通过MISO信号线以比特(bit)数据传输至SPI主设备2。
上述过程实现了SPI主设备2和信号层100中的发送移位寄存器101、发送缓冲器102之间的无缝数据传输;以及SPI主设备2和信号层100中的接收移位寄存器103、接收缓冲器104之间的无缝数据传输。
此外,在本申请实施例中,所述异步时钟域控制器105利用信号层100串并数据转换传输时,接收缓冲器104接收下一个并行数据的时钟空隙或发送缓冲器102输出下一个并行数据的时钟空隙,达成并行数据的异步时钟域的转换。经过上述周期循环,所述信号层100实现了SPI从设备1与SPI主设备2的通信。
信号层100实现了SPI从设备1与SPI主设备2之间的数据传输,但是,具体的数据传输方式将主要通过协议层110对SPI主设备2所发送的指令的解析而予以控制。
协议层
请继续参考图2,在本申请实施例中,所述协议层110主要包括指令寄存器文件111、指令解码器112以及逻辑控制器113,其中,所述指令寄存器文件111用以存储指令信息;所述指令解码器112用以解码指令以及实现信号层100和功能层120之间的数据传输;所述逻辑控制器113用以对解码指令得到的指令信息进行逻辑判断。
其中,所述指令寄存器文件111所存储的指令信息包括:指令解码器112解码得到的指令信息、逻辑控制器1113对解码指令得到的指令信息进行逻辑判断后的相关指令信息、以及功能层120输出的指令信息。具体的,请参考图4,其为本发明实施例的SPI控制器的协议层中的指令寄存器文件的结构示意图。如图4所示,在本申请实施例中,所述指令寄存器文件111具体包括:用以存储地址信息的地址寄存器、用以存储状态信息的状态寄存器、用以存储模式信息的模式寄存器、用以存储设备识别信息的设备识别寄存器、以及用以存储校验信息的校验信息寄存器。
请继续参考图4,具体的,所述地址寄存器存储有addr3(8位地址扩展位)、addr2(8位地址位)、addr1(8位地址位)和addr0(8位地址位)组成的32位地址位(addr3+addr2+addr1+addr0)。
所述状态寄存器存储有rrdy(读状态位),aprot(地址保护状态位),rprot(读保护状态位),wprot(写保护状态位),wel(写使能状态位)、wip(写进行中保护状态位)、写完成状态位(图4中未示出)组成的8位状态位(还有一位未表示)。
其中,rrdy为0,表示不允许状态,即SPI主设备对SPI从设备停止读数据操作,rrdy为1,表示允许状态,即允许SPI主设备对SPI从设备开始读数据操作;
aprot为0,表示允许状态,即SPI从设备被操作的存储地址允许被操作,aprot为1,表示不允许状态,即SPI从设备被操作的存储地址不允许被操作;
rprot为0,表示允许状态,即允许SPI主设备对SPI从设备被操作的存储地址开始读操作,rprot为1,表示不允许状态,即不允许SPI主设备对SPI从设备被操作的存储地址开始读操作;
wel为0,表示不允许状态,即不允许SPI主设备对SPI从设备进行写数据操作,wel为1,表示允许状态,即允许SPI主设备对SPI主设备进行写数据操作。
所述模式寄存器存储有mode(数据传输模式)和prog_length(数据传输长度)组成的16位信息。其中,所述数据传输模式即包括数据模式和命令模式,也即包括大批量数据传输模式和小批量数据传输模式。
所述设备识别寄存器存储有soft_ver(SPI从设备版本)和spi_id(SPI从设备标识)组成的24位SPI从设备标识信息。
所述校验信息寄存器用于存储CRC校验信息,所述CRC校验信息为16位,用于检验SPI从设备1进行读操作或写操作的数据完整性。
在本申请实施例中,所述指令解码器112主要用以解码指令,所解码的指令包括SPI主设备2输出的初始化指令以及读或者写指令。其中,所述SPI主设备2输出的指令包括:READ_ID(设备标识读指令)、ADDR(地址扩展指令)、CMD_MOD(数据传输模式指令)、READ2(读地址指令)、RDSR(状态校验指令)、READ(读指令)、WREN(写地址指令)、WRITE(写指令)、WRDI(写校验指令)。其中,READ_ID(设备标识读指令)、ADDR(地址扩展指令)、CMD_MOD(数据传输模式指令)属于初始化指令;READ2(读地址指令)、RDSR(状态校验指令)、READ(读指令)、WREN(写地址指令)、WRITE(写指令)、WRDI(写校验指令)属于读或者写指令。
具体的,针对SPI主设备2输出的初始化指令的解码过程如下:
READ_ID为32位指令,高8位是指令标志位,低24位为ID值。参见图4,解码READ_ID指令,从存储在设备识别寄存器中获得spi_id信息后反馈至SPI主设备2。由于SPI主设备可以与多个SPI从设备进行通信,SPI主设备根据spi_id信息中的SPI从设备标识便可片选一SPI从设备。同时,为了避免未被选中的SPI从设备不工作时而将数据通过MISO线传输至SPI主设备,造成数据传输冲突,因此将MISO信号线设置成高阻态,如图5所示,选中的SPI从设备将spi_id信息通过MISO信号线反馈至SPI主设备。
ADDR为16位指令,高8位为指令标志位,低8位为地址位。传统兼容SPIFlash模式的地址位宽只有24位,对应存储空间为16M。解码ADDR指令,获得的低8位地址位作为地址扩展位存储在地址寄存器中,扩展了SPI主设备对SPI从设备地址宽8位的空间范围的读操作或写操作,使地址位宽达到32位,实现了SPI主设备对SPI从设备4G存储空间的数据的自由访问。
CMD_MOD为24位指令,高8位为指令标志位,中间8位为数据传输模式,低8位为数据传输长度。解码CMD_MOD指令,获得的SPI从设备的数据传输模式及数据传输长度分别存储在模式寄存器中。所述数据传输模式用于实现工作模式的选择,即获取是数据模式(Datamode)还是命令模式(Commandmode)的信息。当选择数据模式时,所述SPI主设备可以实现对SPI从设备扩展存储空间的访问并实现大批量数据传输。在数据模式下,SPI从设备支持数据块的传输(正常情况下数据块的数据传输长度为256字节);当选择命令模式时(用户自定义的模式),部分读或者写指令无需解码,且部分指令由主控单元进行解码,所述SPI主设备可以实现对SPI从设备不扩展存储空间的访问并实现小批量数据传输。所述数据传输长度的设置用于支持根据通信字节位的预设进行数据传输,可实现预存储长度与实际存储长度的校验,保证了大量数据存储操作时的完整性。
在完成了初始化指令的解码之后,所述指令解码器112将进一步对SPI主设备2输出的读或者写指令进行解码,其中,SPI主设备2在输出读或者写指令时,根据数据传输模式的不同,又具体分成如下四种情况:
1、数据模式下,SPI主设备2对SPI从设备1进行读操作时,将输出如下指令:READ2、RDSR、READ,也就是说,所述指令解码器112将对上述指令进行解码,具体过程如下:
READ2为32位指令,高8位为指令标志位,低24位为地址位。解析READ2指令,将获得的READ2指令中的低24位地址位(addr2+addr1+addr0),结合ADDR指令中的低8位地址位(addr3)构成了32位地址位,并存储在地址寄存器中,由此便得到了SPI从设备1被操作的存储地址,实现了SPI主设备2对SPI从设备1被操作的存储地址4G存储空间的数据的自由访问。
RDSR为32位指令,高16位的高8位为指令标志位,高16位的低8位为SPI从设备提供给SPI主设备的状态位;低16位为读校验位。解析RDSR指令,获得的状态位和校验信息分别存放在状态寄存器和校验信息寄存器中。根据SPI从设备需要保护的存储空间范围,产生地址保护状态;根据用户需要,设置读或写保护状态;根据校验要求,产生CRC校验信息。因此,地址保护状态位、读或写保护状态位的设置实现了SPI主设备对SPI从设备进行读或写操作时的工作安全性;CRC校验信息实现了SPI主设备读取SPI从设备数据的安全性保证。RDSR指令以及相应的状态寄存器和校验信息寄存器,使SPI主设备对SPI从设备进行读操作或写操作时,对SPI从设备支持多种保护模式(如存储空间保护、读保护、写保护),以确保SPI从设备内存空间不会遭到破坏或被窃取,保证了读数据的安全性。读状态位(rrdy)为SPI主设备对SPI从设备进行读数据操作时需要满足的状态,当读状态位(rrdy)设为0时表示不允许状态,则不允许SPI主设备对SPI从设备进行读数据操作,当读状态位(rrdy)设为1时表示允许状态,则允许SPI主设备对SPI从设备进行读数据操作。
READ是一个不定长指令,最短为40位,最长为1056位,其中,最高32位的高8位为指令标志位,最高32位的低24位为冗余地址位(Addr2+Addr1+Addr0),剩余比特位为数据位。参见图6,READ指令中最高32位的低24位地址位有助于SPI主设备有时间准备对SPI从设备进行数据读取。解析READ指令,实现SPI主设备开始对SPI从设备被操作的存储地址存储的数据进行读取。
2、数据模式下,SPI主设备2对SPI从设备1进行写操作时,将输出如下指令:WREN、RDSR、WRITE、WRDI,也就是说,所述指令解码器112将对上述指令进行解码,具体过程如下:
WREN为32位指令,高8位为指令标志位,低24位为地址位。解析WREN指令,将WREN指令中获得的写使能状态位(wel)存储在状态寄存器中,将获得的WREN指令中的低24位地址位(addr2+addr1+addr0)和ADDR指令中的低8位地址位(addr3)构成了32位地址位,并存储在地址寄存器中,用于表示SPI从设备被操作的存储地址,实现了SPI主设备对SPI从设备被操作的存储地址4G存储空间的数据的自由访问。
写操作时解析RDSR指令所获得的信息,与读操作时解析RDSR指令所获得的信息不同之处在于:对写使能状态位(wel)的设定;以及低16位的校验位闲置。而根据校验要求,通过解析后续指令获得CRC校验信息。
WRITE为一个不定长指令,最短为40位,最长为1056位,其中,最高32位的高8位为指令标志位,最高32位的低24位为冗余地址位。参见图7,WRITE指令中最高32位的低24位地址位有助于SPI主设备有时间准备对SPI从设备进行数据写入。解析WRITE指令,实现SPI主设备对SPI从设备被操作的存储地址开始进行数据写入。
WRDI为24位指令,高8位为指令标志位,低16位为写校验位,解析WRDI指令,获得的写完成状态位和CRC校验信息分别存储在状态寄存器和校验信息寄存器中。CRC校验信息实现了SPI主设备写SPI从设备数据的安全性保证。
3、命令模式下,SPI主设备2对SPI从设备1进行读或者写操作时,具体过程如下:
由于命令模式可自定义命令,因此可以在命令模式中预先设置与主控单元30通信的信号,包括指令信息、SPI从设备被操作的存储地址以及设置相应的状态位,而命令模式中的指令信息可定义数据传输长度,因此,命令模式非常灵活。
SPI主设备对SPI从设备进行读操作时,绕过READ2指令,通过主控单元解析RDSR指令,通过协议层解析READ指令,主控单元30可根据命令模式中的指令信息所定义的数据传输长度,使得所述SPI主设备实现对SPI从设备被操作的存储地址的读数据操作。
SPI主设备对SPI从设备进行写操作时,绕过WREN指令,通过主控单元解析RDSR指令,通过协议层依次解析WRITE和WRDI指令,主控单元可根据命令模式中的指令信息所定义的数据传输长度,使得所述SPI主设备实现对SPI从设备被操作的存储地址的写数据操作。
所述指令解码器112对指令的解码功能主要如上所述,此外,所述指令解码器112还可作为信号层110和功能层120之间数据传输的通道,具体的,通过流接口将所述信号层110接收的数据传输给所述功能层120;或者将所述信号层110要发送的数据从所述功能层120中读取,并传输给所述信号层110。
在本申请实施例中,所述逻辑控制器113主要用于对解码指令得到的指令信息进行逻辑判断。具体的,通过将功能层120输出的SPI从设备的初始化信息中的SPI从设备允许被读或写的地址空间与解码得到的SPI从设备被操作的存储地址进行比较,以产生存储至状态寄存器中的状态位。
协议层110解码所得到的指令信息以及从信号层100接收的数据将进一步通过功能层120,以进行后续处理。接下去将对所述功能层120做进一步描述。
功能层
请继续参考图2,在本申请实施例中,所述功能层120包括:循环冗余校验器121、同步双向FIFO缓冲器122以及状态控制寄存器文件123;其中,所述循环冗余校验器121用以对接收或者发送的数据进行CRC计算,获得CRC校验信息;所述同步双向FIFO缓冲器122用以对信号层100将发送的数据或者接收的数据予以缓存;所述状态控制寄存器文件123用以对SPI从设备的初始化信息进行存储。
具体的,所述状态控制寄存器文件123通过总线接口与总线系统桥接设备50连接,主控单元30将SPI从设备1的初始化信息通过总线系统桥接设备50传输给状态控制寄存器文件123,状态控制寄存器文件123存储所述SPI从设备1的初始化信息。
具体的,请参考图3,所述状态控制寄存器文件123包括控制寄存器子文件和状态寄存器子文件,所述控制寄存器子文件中存储有SPICR信息,ADDR_HI信息和ADDR_LO信息,DEV_ID信息和FIFO_LEVEL信息。
所述SPICR信息为16位,具体包括:RD_READY位,其表示功能层中的同步双向FIFO缓冲器是否准备被读取的状态,置0为未准备被读取,置1为准备被读取;WR_PROT位,其表示SPI从设备的地址区间是否写保护状态,置0为不被保护允许写,置1为被保护不允许写;RD_PROT位,其表示SPI从设备的地址区间是否读保护状态,置0为不被保护允许读,置1为被保护不允许读;DMA_EN位,其表示外部的DMAC使能状态,置0为DMAC不能工作,置1为DMAC可工作;SPI_EN位,其表示SPI从设备和指令解码器使能状态,置0为关闭信号层中的SPI时序控制器,以实现SPI从设备的SPI接口(SPIBus)的关闭而不允许传输数据,且指令解码器不可工作,置1为开启信号层中的SPI时序控制器,以实现SPI从设备的SPI接口的开启而允许传输数据,且指令解码器可工作;CPHA位、CPOL位和XMT_CPOL位共同表示调整SPI时序控制器接收和发送相位的选择的信息。
所述ADDR_HI信息和ADDR_LO信息共同构成SPI从设备的地址区间。所述DEV_ID信息表示SPI从设备标识信息,所述SPI从设备标识信息与SPI从设备版本、SPI从设备标识等信息相关。所述FIFO_LEVEL信息表示同步双向FIFO缓冲器每次传输数据深度。
在本申请实施例中,所述状态寄存器子文件中存储有:SPI_SR信息、PROG_LEN信息(数据传输长度)、FIFO_REST信息(剩余字节位)、ADDR_OP信息(SPI从设备被操作的存储地址)、以及SPI_OP信息(数据传输方向位)。在所述SPI_SR信息中存储有:主控单元和DMAC选择位、读中断查询信息、写中断查询信息、以及各种用于主控单元的中断查询信息。
在本申请实施例中,所述同步双向FIFO缓冲器122与协议层110、状态控制寄存器文件123连接,在状态控制寄存器文件123的控制下,通过流接口实现输入和输出协议层的数据的缓存。具体的,请参考图8,在时钟clk的控制下,数据有效线d_vld与SPI_OP信息决定的数据传输方向一致时,输出数据的一方准备数据有效线;而接收数据的一方根据数据准备好d_rdy,将自己已准备好接收数据的状态信息反馈至输出数据的一方,开始进行数据传输,可见所述流接口的控制过程简单且功能完全。具体的,同步双向FIFO缓冲器122中缓存的数据通过流接口传输至总线接口,再通过总线接口传输至系统总线桥接设备50,进而传输存储模块20中;或者存储模块20的数据通过系统总线桥接设备50传输至总线接口,再通过总线接口的流接口传输到同步双向FIFO缓冲器122中。
在本申请实施例中,所述功能层120还包括循环冗余校验器121,当SPI主设备2与SPI从设备1之间具有校验协议时,所述循环冗余校验器121将SPI从设备1输出(或输入)的数据进行循环冗余计算并获得CRC校验信息,而SPI主设备2对输入(或输出)的数据也进行数据校验计算,获得CRC校验信息,所述SPI从设备1计算获得的CRC校验信息与SPI主设备2计算获得的CRC校验信息进行读写校验比较,SPI从设备1可判断写/读数据传输是否完整正确,SPI主设备2可判断读/写数据传输是否完整正确从而实现数据传输完整性保证。
综上可见,在本申请实施例提供的SPI从设备中,在数据模式下,可以实现SPI主设备与SPI从设备之间进行大批量数据交换;在命令模式下,可以实现SPI主设备与SPI从设备之间进行裸数据的交换,如两个芯片间的控制信息,以实现小批量数据交换。所述命令模式非常灵活,可以自定义命令,由主控单元解析命令及获取数据。
进一步的,在本发明实施例的中,通过使用同步双向FIFO缓冲器实现数据缓存,与SPI主设备与传统SPI从设备之间进行数据交换时需要使用的异步FIFO缓冲器相比,结构简单,速度快。
进一步的,在本发明实施例中,通过ADDR指令扩展了SPI主设备对SPI从设备地址宽8位的空间范围的读操作或写操作,使地址位宽达到32位,实现了SPI主设备对SPI从设备4G存储空间的数据的自由访问。
进一步的,在本发明实施例中,还通过RDSR等指令产生保护状态位,以实现SPI主设备和SPI从设备间进行通信时的工作安全保证和传输安全保证,以及数据传输的完整性保证。
在本申请实施例中,进一步还提供一种SPI通信系统,具体如下:
【SPI通信系统】
在本申请实施例中,所述SPI通信系统包括一个SPI主设备以及一个或者多个与所述SPI主设备连接的SPI从设备。
在此,可相应参考图2,具体的,每一SPI从设备通过MISO(MasterOutSlaveIn)信号线、MISO(MasterInSlaveOut)信号线、Csn线号线和SCK信号线与所述SPI主设备相连接。
其中,所述SPI从设备如上文所述,本申请实施例对此不再赘述;所述SPI主设备与所述SPI从设备相应,其能够输出初始化指令:READ_ID(设备标识读指令)、ADDR(地址扩展指令)、CMD_MOD(数据传输模式指令);以及读或者写指令:READ2(读地址指令)、RDSR(状态校验指令)、READ(读指令)、WREN(写地址指令)、WRITE(写指令)、WRDI(写校验指令),并据此与所述SPI从设备进行通信,即对所述SPI从设备进行读或者写操作。
接下去,将通过SPI通信方法做进一步描述。
【SPI通信方法】
所述SPI通信方法包括:
步骤S10:提供一SPI通信系统,所述SPI通信系统包括一个SPI主设备以及一个或者多个与所述SPI主设备连接的SPI从设备;
步骤S20:每个SPI从设备自身进行初始化;
步骤S30:所述SPI主设备对SPI从设备进行初始化,以使SPI从设备获取数据传输模式;
步骤S40:在获取的数据传输模式下,所述SPI主设备对SPI从设备进行读或者写操作。
接下去,将对每一个步骤做出进一步描述,具体如下:
步骤S20:每个SPI从设备自身进行初始化
在本申请实施例中,每个SPI从设备将自身的初始化信息存储在SPI控制器中。具体的,在每个SPI从设备中,主控单元通过系统总线桥接设备将SPI从设备的初始化信息存储在控制寄存器子文件中;将DEV_ID信息存储至协议层的指令寄存器文件中的设备识别寄存器中;将SPI从设备是通过主控单元还是通过DMAC进行数据传输的初始化信息存储在状态寄存器子文件中的SPI_SR信息中。
步骤S30:所述SPI主设备对SPI从设备进行初始化,以使SPI从设备获 取数据传输模式
在此,SPI主设备根据其要读/写的数据量、以及其与SPI从设备之间的通信状态进行不同的初始化。
第一种情况
SPI主设备对SPI从设备要读/写的数据量比较大,具体的,SPI主设备将以数据模式与SPI从设备进行读/写操作。同时,此次读/写操作是一项新任务并且SPI主设备尚未知道所要通信的SPI从设备具体是哪个。则此时SPI主设备输出的初始化指令包括:
SPI主设备先输出READ_ID指令;READ_ID指令通过MOSI信号线经每个SPI从设备的信号层传输至协议层的指令解码器中进行解码;解码后,各SPI从设备将协议层的指令寄存器文件中的设备识别寄存器所存储的DEV_ID信息读取,并在信号层的异步时钟域控制器的控制下,经信号层并通过MISO信号线输出至SPI主设备;SPI主设备根据反馈的DEV_ID信息、通过CSn信号线对所有的SPI从设备进行片选,以使SPI主设备对选中的SPI从设备进行读或写操作。
即SPI主设备首先获取需要通信的SPI从设备,也就是说从多个SPI从设备中选取一个或者多个SPI从设备,接着针对选中的SPI从设备进行后续操作。其中,选中的多个SPI从设备处于相同的地位,因此在本申请接下去的叙述中将以一个选中的SPI从设备为例。
其中,SPI主设备向多个SPI从设备输出READ_ID指令是分时进行的。假设,与SPI主设备连接的SPI从设备有四个,则首先,SPI主设备与第一个SPI从设备通信,输出READ_ID指令并接收反馈信息,同时依据反馈信息判定是否选中该第一个SPI从设备;接着,SPI主设备与第二个SPI从设备通信,输出READ_ID指令并接收反馈信息,同时依据反馈信息判定是否选中该第二个SPI从设备;依次类推,直至得出对连接的四个SPI从设备是否选中的信息。
接着,SPI主设备将输出ADDR指令(即此后开始对选中的SPI从设备进行操作),SPI从设备的协议层对ADDR指令进行解码,将解码获得的地址扩展位存储在指令寄存器文件中的地址寄存器中的高8位(addr3)上。
紧接着,SPI主设备输出CMD_MOD指令,SPI从设备的协议层对CMD_MOD指令进行解码后,将解析获得的数据传输模式(mode)和数据传输长度(prog_length)分别存储在指令寄存器文件中的模式寄存器中的高8位和低8位上。进一步的,模式寄存器将数据传输长度prog_length存储在功能层的状态控制寄存器中的状态寄存器子文件的PROG_LEN信息中。
由此,SPI主设备便完成了对于SPI从设备的初始化,接着便可对SPI从设备进行读/写操作。此第一种情况可以认为是最完整的的初始化操作。
第二种情况
SPI主设备对SPI从设备要读/写的数据量比较大,具体的,SPI主设备将以数据模式与SPI从设备进行读/写操作。SPI主设备已经选中了SPI从设备,此次读/写操作是一项新任务,同时读/写操作的地址是新的(16M)地址空间。则此时SPI主设备输出的初始化指令包括:
SPI主设备将输出ADDR指令,SPI从设备的协议层对ADDR指令进行解码,将解码获得的地址扩展位存储在指令寄存器文件中的地址寄存器中的高8位(addr3)上。
紧接着,SPI主设备输出CMD_MOD指令,SPI从设备的协议层对CMD_MOD指令进行解码后,将解析获得的数据传输模式(mode)和数据传输长度(prog_length)分别存储在指令寄存器文件中的模式寄存器中的高8位和低8位上。进一步的,模式寄存器将数据传输长度prog_length存储在功能层的状态控制寄存器中的状态寄存器子文件的PROG_LEN信息中。
由此,SPI主设备便完成了对于SPI从设备的初始化,接着便可对SPI从设备进行读/写操作。
第三种情况
SPI主设备对SPI从设备要读/写的数据量比较大,具体的,SPI主设备将以数据模式与SPI从设备进行读/写操作。SPI主设备已经选中了SPI从设备,此次读/写操作是一项新任务,同时读/写操作的地址在原来的(16M)地址空间内。则此时SPI主设备输出的初始化指令包括:
SPI主设备输出CMD_MOD指令,SPI从设备的协议层对CMD_MOD指令进行解码后,将解析获得的数据传输模式(mode)和数据传输长度(prog_length)分别存储在指令寄存器文件中的模式寄存器中的高8位和低8位上。进一步的,模式寄存器将数据传输长度prog_length存储在功能层的状态控制寄存器中的状态寄存器子文件的PROG_LEN信息中。
由此,SPI主设备便完成了对于SPI从设备的初始化,接着便可对SPI从设备进行读/写操作。
第四种情况
SPI主设备对SPI从设备要读/写的数据量比较小,具体的,SPI主设备将以命令模式与SPI从设备进行读/写操作。同时,SPI主设备尚未知道所要通信的SPI从设备具体是哪个。则此时SPI主设备输出的初始化指令包括:
SPI主设备先输出READ_ID指令;READ_ID指令通过MOSI信号线经每个SPI从设备的信号层传输至协议层的指令解码器中进行解码;解码后,各SPI从设备将协议层的指令寄存器文件中的设备识别寄存器所存储的DEV_ID信息读取,并在信号层的异步时钟域控制器的控制下,经信号层并通过MISO信号线输出至SPI主设备;SPI主设备根据反馈的DEV_ID信息、通过CSn信号线对所有的SPI从设备进行片选,以使SPI主设备对选中的SPI从设备进行读或写操作。
即SPI主设备首先获取需要通信的SPI从设备,也就是说从多个SPI从设备中选取一个或者多个SPI从设备,接着针对选中的SPI从设备进行后续操作。其中,选中的多个SPI从设备处于相同的地位,因此在本申请接下去的叙述中将以一个选中的SPI从设备为例。
其中,SPI主设备向多个SPI从设备输出READ_ID指令的过程与第一种情况相同。
接着,SPI主设备输出CMD_MOD指令,SPI从设备的协议层对CMD_MOD指令进行解码后,将解析获得的数据传输模式(mode)和数据传输长度(prog_length)分别存储在指令寄存器文件中的模式寄存器中的高8位和低8位上。进一步的,模式寄存器将数据传输长度prog_length存储在功能层的状态控制寄存器中的状态寄存器子文件的PROG_LEN信息中。
由此,SPI主设备便完成了对于SPI从设备的初始化,接着便可对SPI从设备进行读/写操作。
由于命令模式比较灵活,特别的,SPI主设备在命令模式中预先设置与主控单元通信的信号,包括指令信息、SPI从设备被操作的存储地址以及设置相应的状态位,而命令模式中的指令信息可定义数据传输长度。因此,在命令模式下,SPI主设备将不再输出ADDR指令。
第五种情况
SPI主设备对SPI从设备要读/写的数据量比较小,具体的,SPI主设备将以命令模式与SPI从设备进行读/写操作,同时,SPI主设备已经选中了SPI从设备。则此时SPI主设备输出的初始化指令包括:
SPI主设备输出CMD_MOD指令,SPI从设备的协议层对CMD_MOD指令进行解码后,将解析获得的数据传输模式(mode)和数据传输长度(prog_length)分别存储在指令寄存器文件中的模式寄存器中的高8位和低8位上。进一步的,模式寄存器将数据传输长度prog_length存储在功能层的状态控制寄存器中的状态寄存器子文件的PROG_LEN信息中。
由此,SPI主设备便完成了对于SPI从设备的初始化,接着便可对SPI从设备进行读/写操作。
由此,SPI主设备根据其要读/写的数据量、以及其与SPI从设备之间的通信状态完成对于SPI从设备的初始化。
步骤S40:在获取的数据传输模式下,所述SPI主设备对SPI从设备进行 读或者写操作
当所述数据传输模式为数据模式时,SPI从设备的协议层解码SPI主设备输出的读或写各指令,由解码获得的读或写地址位与地址扩展位形成SPI从设备将被操作的存储地址并通过协议层设置相应的状态位,SPI控制器根据数据模式下的数据传输长度以及SPI从设备将被操作的存储地址和状态位,响应SPI主设备对选中的SPI从设备进行读或写操作。
当所述数据传输模式为命令模式时,SPI控制器中的协议层解码SPI主设备输出的读或写各指令后,响应SPI主设备对SPI从设备进行读或写操作。其中,SPI从设备响应SPI主设备的读/写操作时,所涉及的读/写操作地址由主控单元解码命令模式所携带的信息而提供。
请继续参考图9,具体的,当所述数据传输模式为数据模式时,SPI主设备对选中的SPI从设备进行读操作的步骤包括:
步骤S41,SPI从设备的协议层对SPI主设备输出的READ2指令解码,获得读地址位,所述读地址位存储在指令寄存器文件中的地址寄存器中的低24位(addr2+addr1+addr0)上,此时,地址寄存器存储的32位地址位(addr3+addr2+addr1+addr0)即为SPI从设备的存储模块被操作的存储地址。地址寄存器将存储模块被操作的存储地址存储至状态寄存器子文件的ADDR_OP信息中。所述SPI从设备的存储模块被操作的存储地址能实现扩展存储空间至4G的访问能力。
SPI从设备的功能层中的同步双向FIFO缓冲器从存储模块中读数据或将SPI从设备写数据的传输方向存储在SPI_OP信息中,当协议层的指令解码器将SPI_OP信息存储至状态寄存器子文件中的SPI_SR信息后,指令解码器将发送一读中断查询信息存储至SPI_SR信息。当主控单元通过系统总线桥接设备查询到SPI_SR信息中的读中断查询信息时,通过系统总线桥接设备使SPI从设备获知SPI主设备对SPI从设备被操作的存储地址开始读操作。
步骤S42,将SPI从设备的初始化信息(例如SPICR信息、SPI从设备允许被读的地址区间)输出至协议层的逻辑控制器中,将SPI从设备被操作的存储地址输出至逻辑控制器中,逻辑控制器将SPI从设备允许被读的地址区间与SPI从设备被操作的存储地址进行比较:当SPI从设备允许被读的地址区间与SPI从设备被操作的存储地址无交集时,即地址区间不合法,指令寄存器文件的状态寄存器中存储有状态位,则所述状态位中的地址保护状态位(aprot)设为1,逻辑控制器会输出一中断查询信息存储在SPI_SR信息中,主控单元查询SPI_SR信息,获知SPI主设备对SPI从设备被操作的存储地址进行不适当的访问并请求做处理(例如警告信息);当SPI从设备被操作的存储地址落入SPI从设备允许被读的地址区间时,即地址区间合法,则所述状态位中的地址保护状态(aprot)设为0,则逻辑控制器再根据SPICR信息决定状态位,如根据SPICR信息中的RD_PROT位决定状态位中的读保护状态位(rprot),当RD_PROT位设为0,则读保护状态(rprot)设为0。
步骤S43,SPI从设备的协议层通过指令解码器对SPI主设备输出的RDSR指令解码,所述状态位反馈至SPI主设备,SPI主设备根据rprot为0,允许对SPI从设备被操作的存储地址开始读操作,SPI主设备不断询问状态位,以便获得状态位中的读状态位(rrdy),而读状态位(rrdy)的设置过程如下:
主控单元中断查询SPI_SR信息,若SPI_SR信息表示采用主控单元时,主控单元将ADDR_OP信息作为SPI从设备的读操作的起始地址,根据所述SPI_OP信息,按照数据模式下数据传输长度prog_length将SPI从设备被操作的存储地址所存储的数据缓存到功能层中的同步双向FIFO缓冲器中。
若SPI_SR信息表示传输数据采用DMAC时,且SPICR信息中的DMA_EN位设为1,DMAC将ADDR_OP信息作为SPI从设备的读操作的起始地址,将SPI从设备被操作的存储地址存储的数据缓存到功能层中的同步双向FIFO缓冲器中。
进一步的,如SPI主设备与SPI从设备之间具有校验协议,则通过功能层中的循环冗余校验器对同步双向FIFO缓冲器接收到的数据进行循环冗余计算以获得CRC校验信息,而所述CRC校验信息的最终值作为下一次计算的起始值。
在同步双向FIFO缓冲器接收数据时,根据剩余字节状态位(FIFO_REST信息)计算剩余存储空间,当同步双向FIFO缓冲器存储空间字节已满,同步双向FIFO缓冲器将SPI_SR信息中的RCV_FULL满存位设为1,则主控单元通过中断查询RCV_FULL获知同步双向FIFO缓冲器为满存状态后,主控单元控制存储模块停止向同步双向FIFO缓冲器传输数据,且通过同步双向FIFO缓冲器将所述状态位中的读状态位(rrdy)设为1。
进一步的,同步双向FIFO缓冲器还可以根据FIFO_LEVEL信息所表示的传输数据深度接收数据,同步双向FIFO缓冲器的存储空间为所述传输数据深度的整数倍。
步骤S44,当所述状态位中的读状态位(rrdy)设为1时,协议层通过指令解码器的流接口将所述状态位的数据并行传输至信号层,经相应的MISO信号线将bit数据传输至SPI主设备。SPI主设备输出READ指令,协议层通过指令解码器对READ指令解码后进行读操作,通过与所述状态位传输至SPI主设备相同的路径。同时,功能层中的同步双向FIFO缓冲器将缓存的数据传输至SPI主设备后,所述FIFO_REST计算出同步双向FIFO缓冲器中存储数据为空,同步双向FIFO缓冲器将SPI_SR信息中的RCV_FULL满存位设为0,则主控单元通过中断查询RCV_FULL获知同步双向FIFO缓冲器未存储数据后,主控单元控制存储模块重新向同步双向FIFO缓冲器传输数据,且通过同步双向FIFO缓冲器将所述状态位中的读状态位(rrdy)设为0。
进一步的,若同步双向FIFO缓冲器根据FIFO_LEVEL信息所表示的传输数据深度接收数据时,SPI主设备输出READ指令,协议层通过指令解码器对READ指令解码后进行读操作,当根据所述FIFO_REST计算出同步双向FIFO缓冲器中存储数据未空,而主控单元通过中断查询RCV_FULL获知同步双向FIFO缓冲器仍存在可输出的数据,功能层中的同步双向FIFO缓冲器将缓存的数据按照所述传输数据深度所表示的数据分批次传输至SPI主设备后,所述FIFO_REST计算出同步双向FIFO缓冲器中存储数据为空,同步双向FIFO缓冲器将SPI_SR信息中的RCV_FULL满存位设为0,通过同步双向FIFO缓冲器将所述状态位中的读状态位(rrdy)设为0,主控单元控制存储模块重新向同步双向FIFO缓冲器传输数据。
直至按照数据传输长度将SPI从设备被操作的存储地址输出的数据传输至SPI主设备。由于数据模式以获得的32位地址位作为SPI从设备被操作的存储地址,不断重复步骤43和步骤44的读操作,直至将SPI从设备被操作的存储地址的数据全部读出,因此SPI主设备对SPI从设备可实现4G存储空间的访问并实现数据以批量方式的传输。
若功能层采用循环冗余校验器,则通过循环冗余校验器计算获得的CRC校验信息的最终值存储至指令寄存器文件的校验信息寄存器中。
进一步的,还可以按照状态寄存器子文件中的PROG_LEN信息将SPI从设备被操作的存储地址所存储的数据传输至SPI主设备。
若采用主控单元传输数据时,当所述数据传输长度PROG_LEN的数据按照所述FIFO_LEVEL信息所表示的传输数据深度分批后,依次从存储模块被操作的存储地址传输至同步双向FIFO缓冲器后,主控单元会获知存储模块被操作的存储地址与同步双向FIFO缓冲器之间完成了所述数据传输长度PROG_LEN大批量数据的传输,并通过功能层、协议层、信号层而通知SPI主设备完成了所述数据传输长度的数据读操作;
若采用DMCA传输数据时,当所述数据传输长度PROG_LEN的数据按照所述FIFO_LEVEL信息所表示的传输数据深度分批后,依次从存储模块被操作的存储地址传输至同步双向FIFO缓冲器后,DMAC将SPI_SR信息中的DMA_DONE位设为1,以使主控单元通过中断查询SPI_SR信息中的DMA_DONE位而获知,同步双向FIFO缓冲器与存储模块之间完成了所述数据传输长度PROG_LEN大批量数据的传输,并通过功能层、协议层、信号层而通知SPI主设备完成了所述数据传输长度的数据读操作。
如SPI主设备与SPI从设备之间具有校验协议,则SPI主设备对接收的所述数据传输长度的数据进行校验计算,那么SPI主设备计算获得的CRC校验信息,与存储在校验信息寄存器中的CRC校验信息进行比对,来判断SPI从设备数据传输是否完整正确,从而实现数据传输完整性保证。
具体的,SPI从设备通过循环冗余校验器进行CRC计算,获取CRC校验信息。SPI主设备完成了对于SPI从设备数据的读取之后,再通过输出指令RDSR获取SPI从设备计算得到的CRC校验信息;同时,SPI主设备对于接收的数据进行CRC计算,获取CRC校验信息;接着,SPI主设备将接收的CRC校验信息与自身计算的CRC校验信息进行比较,从而实现CRC校验,判断SPI从设备数据传输是否完整正确,实现数据传输完整性保证。
请继续参考图9,当所述数据传输模式为数据模式时,SPI主设备对选中的SPI从设备进行写操作的步骤包括:
步骤S51,SPI从设备的协议层对SPI主设备输出的WREN指令解码,获得写地址位,所述写地址位存储在指令寄存器文件中的地址寄存器中的低24位(addr2+addr1+addr0)上,此时,地址寄存器存储的32位地址位(addr3+addr2+addr1+addr0)即为SPI从设备的存储模块被操作的存储地址。地址寄存器将存储模块被操作的存储地址存储至状态寄存器子文件的ADDR_OP信息中。所述SPI从设备的存储模块被操作的存储地址能实现扩展存储空间至4G的访问能力。
SPI从设备的功能层中的同步双向FIFO缓冲器从存储模块中读数据或将SPI从设备写数据的传输方向存储在SPI_OP信息中,当协议层的指令解码器将SPI_OP信息存储至状态寄存器子文件中的SPI_SR信息后,指令解码器将发送一写中断查询信息存储至SPI_SR信息中。当主控单元通过系统总线桥接设备查询到SPI_SR信息中的写中断查询信息时,通过系统总线桥接设备使SPI从设备获知SPI主设备对SPI从设备被操作的存储地址开始写操作。
步骤S52,步骤S52与步骤S42的不同之处在于:SPI从设备被操作的存储地址落入SPI从设备允许被写的地址区间时,所述状态位中的地址保护状态(aprot)设为0,则逻辑控制器再根据SPICR信息决定状态位,如根据WR_PROT位决定写保护状态(wprot),当WR_PROT位设为0,写保护状态(wprot)设为0。步骤S52的其他内容请参见步骤S42的内容,在此不再一一赘述。
步骤S53,SPI从设备的协议层通过指令解码器对SPI主设备输出的RDSR指令解码,所述状态位反馈至SPI主设备,SPI主设备根据wprot为0,允许对SPI从设备被操作的存储地址开始写操作,SPI主设备不断询问状态位,以便获得状态位中的写使能状态位(wel),而写使能状态位(wel)的设置过程如下:
协议层通过指令解码器对SPI主设备输出的WRITE指令解码后,SPI主设备输出bit数据,当WRITE指令完成后,协议层再解码SPI主设备输出的WRDI指令,SPI主设备输出的bit数据依次经过信号层、协议层缓存至功能层,其中,在信号层的异步时钟域控制器的控制下实现串并数据的转换,直至按照数据模式下的数据传输长度将SPI主设备输出的bit数据缓存到功能层的同步双向FIFO缓冲器中。而一旦所述功能层中缓存SPI主设备输出的bit数据时,功能层将所述状态位中的写使能状态位(wel)为不允许状态(0)。
步骤S54,SPI主设备获得所述状态位中的写使能状态位(wel)设为0后,主控单元或DMAC将同步双向FIFO缓冲器中缓存的数据通过系统总线桥接设备传输至存储模块被操作的存储地址中。具体过程如下:
在同步双向FIFO缓冲器接收数据时,根据剩余字节状态位(FIFO_REST信息)计算剩余存储空间,当同步双向FIFO缓冲器存储空间字节已满时,同步双向FIFO缓冲器将SPI_SR信息中的RCV_FULL满存位设为1,则主控单元通过中断查询到RCV_FULL获知同步双向FIFO缓冲器为满存状态后,主控单元控制存储模块开始接收同步双向FIFO缓冲器传输的数据,当功能层中的同步双向FIFO缓冲器中的数据全部传输至存储模块被操作的存储地址后,通过同步双向FIFO缓冲器将所述状态位中的写使能状态位(wel)设为1。
进一步的,同步双向FIFO缓冲器还可以根据FIFO_LEVEL信息所表示的传输数据深度接收数据,同步双向FIFO缓冲器的存储空间为所述传输数据深度的整数倍。
主控单元中断查询SPI_SR信息时,若SPI_SR信息表示采用主控单元时,主控单元将ADDR_OP信息作为存储模块的写操作的起始地址,根据所述SPI_OP信息,将同步双向FIFO缓冲器中缓存的数据传输至存储模块被操作的存储地址中,获得WRDI指令中的写完成状态位。
若SPI_SR信息表示传输数据采用DMAC时,且SPICR信息中的DMA_EN位设为1,DMAC将ADDR_OP信息作为存储模块的写操作的起始地址,将同步双向FIFO缓冲器中缓存的数据传输至存储模块被操作的存储地址中,获得WRDI指令中的写完成状态位。
每当同步双向FIFO缓冲器中缓存的数据传输至存储模块被操作的存储地址后,同步双向FIFO缓冲器将SPI_SR信息中的RCV_FULL满存位设为0,则主控单元通过中断查询RCV_FULL获知同步双向FIFO缓冲器为开始写状态后,同步双向FIFO缓冲器将所述状态位中的写使能状态位(wel)设为1。
直至按照数据传输长度将SPI主设备输出的数据传输至SPI从设备存储模块被操作的存储地址。由于数据模式以获得的32位地址位作为SPI从设备存储模块被操作的存储地址,不断重复步骤S53和步骤S54的写操作,直至SPI主设备输出的数据将SPI从设备的存储模块被操作的存储地址写满,因此SPI主设备对SPI从设备可实现4G存储空间的访问并实现以批量方式的传输。
若采用主控单元传输数据时,当所述数据传输长度PROG_LEN的数据按照所述FIFO_LEVEL信息所表示的传输数据深度分批后,依次从同步双向FIFO缓冲器传输至存储模块被操作的存储地址后,主控单元会获知同步双向FIFO缓冲器与存储模块之间完成了所述数据传输长度PROG_LEN大批量数据的传输,并通过功能层、协议层、信号层而通知SPI主设备完成了所述数据传输长度的数据写操作;
若采用DMAC传输数据时,当所述数据传输长度PROG_LEN的数据按照所述FIFO_LEVEL信息所表示的传输数据深度分批后,依次从存储模块传输至同步双向FIFO缓冲器后,DMAC将状态寄存器子文件中的SPI_SR信息中的DMA_DONE位设为1,以使主控单元通过中断查询中的DMA_DONE位而获知,同步双向FIFO缓冲器内存地址与存储模块之间完成了所述数据传输长度PROG_LEN大批量数据的传输,并通过功能层、协议层、信号层而通知SPI主设备完成了所述数据传输长度的数据读操作。
进一步的,如SPI主设备与SPI从设备之间具有校验协议,则SPI控制器通过功能层中的循环冗余校验器对同步双向FIFO缓冲器接收到的数据进行循环冗余计算以获得WRDI指令中的CRC校验信息,而所述CRC校验信息的最终值作为下一次计算的起始值,直至获得所述CRC检验信息的最终值;SPI主设备对输出的数据也进行CRC校验计算,那么SPI主设备计算获得的CRC校验信息,与存储在校验信息寄存器中的CRC校验信息进行读写校验比对,来判断SPI从设备数据接收是否完整正确,从而实现数据传输完整性保证。
请参考图10,当所述数据传输模式为命令模式时,SPI主设备对选中的SPI从设备进行读操作的步骤包括:
步骤S61,主控单元根据所述命令模式定义获得数据传输长度、SPI从设备将被操作的存储地址以及对SPI从设备将被操作的存储地址设置相应的状态位,所述状态位设置地址保护状态(aprot)为0,读保护状态位(rprot)为0。
步骤S62,SPI主设备输出RDSR指令,协议层对RDSR指令解码,所述状态位反馈至SPI主设备,SPI主设备根据rprot为0,允许对SPI从设备被操作的存储地址开始读操作,SPI主设备不断询问状态位,以便获得状态位中的读状态位(rrdy),而所述状态位中的读状态位(rrdy)的设置过程如下:
主控单元根据命令模式中指令信息所定义的数据传输长度,将存储模块被操作的存储地址所存储的数据传输到功能层中的同步双向FIFO缓冲器中。数据传输完成后,主控单元控制存储模块停止向同步双向FIFO缓冲器传输数据,且主控单元直接将所述状态位中的读状态位(rrdy)设为1。
进一步的,同步双向FIFO缓冲器还可以根据FIFO_LEVEL信息所表示的传输数据深度接收数据,同步双向FIFO缓冲器的存储空间为所述传输数据深度的整数倍。
步骤S63,当SPI主设备接收到所述状态位中的读状态位(rrdy)为1时,SPI主设备输出READ指令,与READ_ID指令输入至协议层中的指令解码器一样,协议层中的指令解码器对READ指令解码后进行读操作,并按照步骤S44中关于同步双向FIFO缓冲器中的数据向SPI主设备输出的过程一样,直至按照命令模式下的数据传输长度将SPI主设备所需的数据传输至SPI主设备,READ指令完成后主控单元将所述状态位中的读状态位(rrdy)设为0。
由于主控单元根据命令模式中指令信息所定义的数据传输长度,将SPI从设备的存储模块被操作的存储地址存储的数据输出至SPI主设备,因此命令模式下,SPI主设备与SPI从设备之间的通信过程简单、从而提高了数据传输效率。
请继续参考图10,当所述数据传输模式为命令模式时,SPI主设备对选中的SPI从设备进行写操作的步骤包括:
步骤S71,主控单元根据所述命令模式定义获得数据传输长度、SPI从设备将被操作的存储地址以及对SPI从设备将被操作的存储地址设置相应的状态位,所述状态设置地址保护状态(aprot)为0,写保护状态位(wprot)为0。
步骤S72,SPI主设备输出RDSR指令,协议层对RDSR指令解码,所述状态位反馈至SPI主设备,SPI主设备根据wprot为0,允许对SPI从设备的存储模块被操作的存储地址开始写操作,SPI主设备不断询问所述状态位,以便获得状态位中的写使能状态位(wel),而所述状态位中的写使能状态位(wel)的设置过程如下:
SPI从设备协议层通过指令解码器对SPI主设备输出的WRITE指令解码后,SPI主设备输出bit数据,当WRITE指令完成后,协议层再解码SPI主设备的WRDI指令,功能层根据所述命令模式下的数据传输长度,缓存经过信号层、协议层的SPI主设备输出的bit数据,同时,所缓存的数据在信号层的异步时钟域控制器的控制下实现串并数据的转换。而一旦所述功能层中缓存SPI主设备输出的bit数据时,主控单元将所述状态位中的写使能状态位(wel)为不允许状态(0)。
步骤S73,当所述状态位中的写使能状态位(wel)为0时,同步双向FIFO缓冲器存满所述命令模式下的数据传输长度对应的数据后,同步双向FIFO缓冲器向主控单元发送中断请求,主控单元处理所述同步双向FIFO缓冲器中的数据。具体的,主控单元将同步双向FIFO缓冲器缓存的数据传输至存储模块被操作的存储地址中,接着主控单元将所述状态位中的写使能状态位(wel)设为1。当写使能状态位(wel)设为1时,可按照步骤S54中关于所述状态位通过指令解码器向SPI主设备输出的过程一样,通知SPI主设备开始写数据。
当SPI主设备完成数据输出时,SPI从设备的协议层通过指令解码器对SPI主设备输出的WRDI指令解码,得到写操作完成信息以及CRC校验信息。
进一步的,如SPI主设备与SPI从设备之间具有校验协议,则SPI控制器通过功能层中的循环冗余校验器对同步双向FIFO缓冲器接收到的数据进行循环冗余计算以获得WRDI指令中的CRC校验信息,而所述CRC校验信息的值作为下一次计算的起始值,直至获得所述CRC检验信息的最终值;SPI主设备对输出的数据也进行CRC校验计算,那么SPI主设备计算获得的CRC校验信息,与通过写校验指令解码获得的CRC校验信息进行比对,来判断SPI从设备数据接收是否完整正确,从而实现数据传输完整性保证。
综上可见,所述SPI从设备可以在数据模式和命令模式两种数据传输模式中选择一种进行工作,从而实现SPI主设备对SPI从设备不同存储空间的访问。特别的,在数据模式下,可实现SPI主设备对SPI从设备扩展至4G的存储空间的访问和实现大批量数据传输;而在命令模式下,可实现SPI主设备对SPI从设备不扩展的存款空间的访问和实现小批量数据传输,克服了传统SPI从设备工作模式单一和SPI从设备可供主设备访问的存储空间小的问题。
由于SPI主设备根据RDSR指令解码获得的SPI从设备被操作的存储地址的状态允许进行读或写操作,方能对SPI从设备进行访问,因此对SPI主设备访问SPI从设备进行保护,包括SPI从设备地址保护、读或写保护,避免SPI主设备和SPI从设备间进行通信时,SPI从设备没有工作安全保证,容易造成SPI从设备中数据丢失或被破坏。并且,通过所述循环冗余校验器对SPI从设备输入输出数据进行校验,避免了传统的SPI从设备不支持预存储数据和实际存储数据的校验,保证了每次以所述数据传输长度为单位数据传输的完整性和安全性。
此外,所述异步时钟域控制器利用所述信号层串并转换传输时的时钟空隙,达成并行数据的异步时钟域转换,从而避免了异步FIFO缓冲器的使用,以使SPI从设备结构简单,提高了传输数据速率。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (57)

1.一种SPI从设备,其特征在于,包括:SPI控制器及存储模块;所述SPI控制器用以与一SPI主设备进行数据传输,所述SPI控制器支持以数据模式或命令模式与所述SPI主设备进行数据传输,其中,所述数据模式以第一数据量进行数据传输,所述命令模式以第二数据量进行数据传输,所述第一数据量大于第二数据量;所述存储模块用以存储数据。
2.如权利要求1所述的SPI从设备,其特征在于,还包括主控单元、直接内存访问控制器以及系统总线桥接设备,所述SPI控制器、存储模块、主控单元以及直接内存访问控制器均与所述系统总线桥接设备连接。
3.如权利要求1或2所述的SPI从设备,其特征在于,所述SPI控制器包括信号层、与所述信号层连接的协议层以及与所述协议层连接的功能层;其中,所述信号层用以与所述SPI主设备进行数据传输;所述协议层用以解析指令以及实现信号层与功能层之间的数据传输;所述功能层用以与所述存储模块进行数据传输。
4.如权利要求3所述的SPI从设备,其特征在于,所述信号层包括发送模块及接收模块,其中所述发送模块用以向所述SPI主设备发送数据;所述接收模块用以接收所述SPI主设备发送的数据。
5.如权利要求4所述的SPI从设备,其特征在于,所述发送模块包括发送移位寄存器及与所述发送移位寄存器连接的发送缓冲器;所述接收模块包括接收移位寄存器及与所述接收移位寄存器连接的接收缓冲器。
6.如权利要求3所述的SPI从设备,其特征在于,所述信号层还包括与发送缓冲器和接收缓冲器连接的异步时钟域控制器以及与发送移位寄存器和接收移位寄存器连接的SPI时序控制器;其中,所述异步时钟域控制器用以对发送的数据或者接收的数据进行时钟域转换;所述SPI时序控制器用以对发送的数据或者接收的数据进行时序控制。
7.如权利要求3所述的SPI从设备,其特征在于,所述协议层包括指令寄存器文件、指令解码器以及逻辑控制器,其中,所述指令寄存器文件用以存储指令信息;所述指令解码器用以解码指令以及实现信号层和功能层之间的数据传输;所述逻辑控制器用以对解码指令得到的指令信息进行逻辑判断。
8.如权利要求7所述的SPI从设备,其特征在于,所述指令解码器能够解码的指令包括:READ_ID:设备标识读指令;ADDR:地址扩展指令;CMD_MOD:数据传输模式指令;READ2:读地址指令;RDSR:状态校验指令;READ:读指令;WREN:写地址指令;WRITE:写指令;WRDI:写校验指令。
9.如权利要求8所述的SPI从设备,其特征在于,所述READ_ID为32位指令,高8位是指令标志位,低24位为ID值。
10.如权利要求8所述的SPI从设备,其特征在于,所述ADDR为16位指令,高8位为指令标志位,低8位为地址位。
11.如权利要求8所述的SPI从设备,其特征在于,所述CMD_MOD为24位指令,高8位为指令标志位,中间8位为数据传输模式,低8位为数据传输长度。
12.如权利要求8所述的SPI从设备,其特征在于,所述READ2为32位指令,高8位为指令标志位,低24位为地址位。
13.如权利要求8所述的SPI从设备,其特征在于,所述RDSR为32位指令,高16位的高8位为指令标志位,高16位的低8位为SPI从设备提供给SPI主设备的状态位;低16位为读校验位。
14.如权利要求8所述的SPI从设备,其特征在于,所述READ为至少40位指令,其中,最高32位的高8位为指令标志位,最高32位的低24位为冗余地址位,剩余比特位为数据位。
15.如权利要求8所述的SPI从设备,其特征在于,所述WREN为32位指令,高8位为指令标志位,低24位为地址位。
16.如权利要求8所述的SPI从设备,其特征在于,所述WRITE为至少40位指令,其中,最高32位的高8位为指令标志位,最高32位的低24位为冗余地址位,剩余比特位为数据位。
17.如权利要求8所述的SPI从设备,其特征在于,所述WRDI为24位指令,高8位为指令标志位,低16位为写校验位。
18.如权利要求3所述的SPI从设备,其特征在于,所述功能层包括循环冗余校验器,所述循环冗余校验器用以对接收或者发送的数据进行CRC计算,获得CRC校验信息。
19.如权利要求18所述的SPI从设备,其特征在于,所述功能层还包括同步双向FIFO缓冲器,所述同步双向FIFO缓冲器用以对信号层将发送的数据或者接收的数据予以缓存。
20.如权利要求19所述的SPI从设备,其特征在于,所述功能层还包括状态控制寄存器文件,所述状态控制寄存器文件用以对SPI从设备的初始化信息进行存储。
21.一种SPI通信系统,其特征在于,包括:一个SPI主设备及一个或者多个如权利要求1~20中任一项所述的SPI从设备,其中,每一个SPI从设备均与所述SPI主设备连接。
22.一种SPI通信方法,其特征在于,包括:
提供一如权利要求21所述的SPI通信系统;
每个SPI从设备自身进行初始化;
SPI主设备对SPI从设备进行初始化,以使SPI从设备获取数据传输模式;
在获取的数据传输模式下,SPI主设备对SPI从设备进行读或者写操作。
23.如权利要求22所述的SPI通信方法,其特征在于,每个SPI从设备自身进行初始化包括:每个SPI从设备将自身的初始化信息存储在SPI控制器中。
24.如权利要求23所述的SPI通信方法,其特征在于,每个SPI从设备将自身的初始化信息存储在SPI控制器中包括:在每个SPI从设备中,主控单元通过系统总线桥接设备将SPI从设备的初始化信息存储在控制寄存器子文件中;将DEV_ID信息存储至协议层的指令寄存器文件中的设备识别寄存器中;将SPI从设备是通过主控单元还是通过DMAC进行数据传输的初始化信息存储在状态寄存器子文件中的SPI_SR信息中。
25.如权利要求22所述的SPI通信方法,其特征在于,SPI主设备对SPI从设备进行初始化,以使SPI从设备获取数据传输模式包括:
当SPI主设备将以数据模式与SPI从设备进行读/写操作,并且SPI主设备未选中SPI从设备,则
SPI主设备分别向各SPI从设备输出READ_ID指令;
各SPI从设备解析READ_ID指令,并返回指令信息;
SPI主设备根据各SPI从设备返回的指令信息选取一SPI从设备;
SPI主设备向选中的SPI从设备输出ADDR指令;
选中的SPI从设备解析ADDR指令;
SPI主设备向选中的SPI从设备输出CMD_MOD指令;
选中的SPI从设备解析CMD_MOD指令。
26.如权利要求25所述的SPI通信方法,其特征在于,各SPI从设备解析READ_ID指令,并返回指令信息包括:
各SPI从设备的信号层接收READ_ID指令并传输至协议层;
协议层解码后向信号层输出DEV_ID信息;
信号层向SPI主设备输出DEV_ID信息。
27.如权利要求25所述的SPI通信方法,其特征在于,选中的SPI从设备解析ADDR指令包括:SPI从设备的协议层对ADDR指令进行解码,将解码获得的地址扩展位存储在指令寄存器文件中的地址寄存器中的高8位上。
28.如权利要求25所述的SPI通信方法,其特征在于,选中的SPI从设备解析CMD_MOD指令包括:SPI从设备的协议层对CMD_MOD指令进行解码,将解码获得的数据传输模式和数据传输长度分别存储在指令寄存器文件中的模式寄存器中的高8位和低8位上。
29.如权利要求28所述的SPI通信方法,其特征在于,选中的SPI从设备解析CMD_MOD指令还包括:模式寄存器将数据传输长度prog_length存储在功能层的状态控制寄存器中的状态寄存器子文件的PROG_LEN信息中。
30.如权利要求22所述的SPI通信方法,其特征在于,SPI主设备对SPI从设备进行初始化,以使SPI从设备获取数据传输模式包括:
当SPI主设备将以数据模式与SPI从设备进行读/写操作,读/写操作的地址是新的地址空间,并且SPI主设备已选中SPI从设备,则
SPI主设备向选中的SPI从设备输出ADDR指令;
选中的SPI从设备解析ADDR指令;
SPI主设备向选中的SPI从设备输出CMD_MOD指令;
选中的SPI从设备解析CMD_MOD指令。
31.如权利要求22所述的SPI通信方法,其特征在于,SPI主设备对SPI从设备进行初始化,以使SPI从设备获取数据传输模式包括:
当SPI主设备将以数据模式与SPI从设备进行读/写操作,读/写操作的地址是已有的地址空间,并且SPI主设备已选中SPI从设备,则
SPI主设备向选中的SPI从设备输出CMD_MOD指令;
选中的SPI从设备解析CMD_MOD指令。
32.如权利要求22所述的SPI通信方法,其特征在于,SPI主设备对SPI从设备进行初始化,以使SPI从设备获取数据传输模式包括:
当SPI主设备将以命令模式与SPI从设备进行读/写操作,并且SPI主设备未选中SPI从设备,则
SPI主设备分别向各SPI从设备输出READ_ID指令;
各SPI从设备解析READ_ID指令,并返回指令信息;
SPI主设备根据各SPI从设备返回的指令信息选取一SPI从设备;
SPI主设备向选中的SPI从设备输出CMD_MOD指令;
选中的SPI从设备解析CMD_MOD指令。
33.如权利要求22所述的SPI通信方法,其特征在于,SPI主设备对SPI从设备进行初始化,以使SPI从设备获取数据传输模式包括:
当SPI主设备将以命令模式与SPI从设备进行读/写操作,并且SPI主设备已选中SPI从设备,则
SPI主设备向选中的SPI从设备输出CMD_MOD指令;
选中的SPI从设备解析CMD_MOD指令。
34.如权利要求22所述的SPI通信方法,其特征在于,SPI主设备对选中的SPI从设备进行读或者写操作包括:
当数据传输模式为数据模式时,SPI从设备的协议层解码SPI主设备输出的读或写指令;由解码获得的读或写地址位与地址扩展位形成SPI从设备将被操作的存储地址并通过协议层设置相应的状态位;SPI控制器根据数据模式下的数据传输长度以及SPI从设备将被操作的存储地址和状态位,响应SPI主设备对选中的SPI从设备进行读或写操作。
35.如权利要求34所述的SPI通信方法,其特征在于,当数据传输模式为数据模式时,SPI主设备对选中的SPI从设备进行读操作包括:
SPI从设备的协议层对SPI主设备输出的READ2指令解码,获得读地址区间;
SPI从设备的逻辑控制器判断所述读地址区间是否合法;
当所述读地址区间合法时,SPI从设备的协议层通过指令解码器对SPI主设备输出的RDSR指令解码,并反馈状态位;
当反馈的状态位允许读操作时,信号层向SPI主设备输出数据。
36.如权利要求35所述的SPI通信方法,其特征在于,SPI从设备的协议层对SPI主设备输出的READ2指令解码,获得读地址区间包括:
SPI从设备的协议层对SPI主设备输出的READ2指令解码,获得读地址位,所述读地址位存储在指令寄存器文件中的地址寄存器中的低24位上;
结合解码ADDR指令获得的存储在指令寄存器文件中的地址寄存器中的高8位,得到32为读地址区间。
37.如权利要求36所述的SPI通信方法,其特征在于,SPI从设备的逻辑控制器判断所述读地址区间是否合法包括:
逻辑控制器将SPI从设备允许被读的地址区间与SPI从设备被操作的存储地址进行比较;
当SPI从设备允许被读的地址区间与SPI从设备被操作的存储地址无交集时,判断为地址区间不合法;
当SPI从设备被操作的存储地址落入SPI从设备允许被读的地址区间时,判断为地址区间合法。
38.如权利要求37所述的SPI通信方法,其特征在于,当地址区间不合法时,还进行如下操作:指令寄存器文件中存储的状态位中的地址保护状态位设为1。
39.如权利要求37所述的SPI通信方法,其特征在于,当地址区间合法时,还进行如下操作:指令寄存器文件中存储的状态位中的地址保护状态位设为0。
40.如权利要求35所述的SPI通信方法,其特征在于,当所述读地址区间合法时,SPI从设备的协议层通过指令解码器对SPI主设备输出的RDSR指令解码,并反馈状态位包括:
在同步双向FIFO缓冲器接收数据时,根据剩余字节状态位计算剩余存储空间,当同步双向FIFO缓冲器存储空间字节已满,读状态位设为1。
41.如权利要求40所述的SPI通信方法,其特征在于,当SPI主设备与SPI从设备之间具有校验协议时,还包括:功能层中的循环冗余校验器对同步双向FIFO缓冲器接收到的数据进行循环冗余计算以获得CRC校验信息;SPI主设备通过输出RDSR指令获取SPI从设备计算得到的CRC校验信息,并且SPI主设备对读取的数据进行CRC计算获取CRC校验信息;SPI主设备通过比较接收的CRC校验信息和自身计算得到的CRC校验信息,实现CRC校验。
42.如权利要求34所述的SPI通信方法,其特征在于,当数据传输模式为数据模式时,SPI主设备对选中的SPI从设备进行写操作包括:
SPI从设备的协议层对SPI主设备输出的WREN指令解码,获得写地址区间;
SPI从设备的逻辑控制器判断所述写地址区间是否合法;
当所述写地址区间合法时,SPI从设备的协议层通过指令解码器对SPI主设备输出的RDSR指令解码,并反馈状态位;
当反馈的状态位允许写操作时,信号层接收SPI主设备输出的数据。
43.如权利要求42所述的SPI通信方法,其特征在于,还包括:当SPI主设备完成数据输出时,SPI从设备的协议层通过指令解码器对SPI主设备输出的WRDI指令解码,得到写操作完成信息以及CRC校验信息。
44.如权利要求42所述的SPI通信方法,其特征在于,SPI从设备的协议层对SPI主设备输出的WREN指令解码,获得写地址区间包括:
SPI从设备的协议层对SPI主设备输出的WREN指令解码,获得写地址位,所述写地址位存储在指令寄存器文件中的地址寄存器中的低24位上;
结合解码ADDR指令获得的存储在指令寄存器文件中的地址寄存器中的高8位,得到32为写地址区间。
45.如权利要求44所述的SPI通信方法,其特征在于,SPI从设备的逻辑控制器判断所述写地址区间是否合法包括:
逻辑控制器将SPI从设备允许被写的地址区间与SPI从设备被操作的存储地址进行比较;
当SPI从设备允许被写的地址区间与SPI从设备被操作的存储地址无交集时,判断为地址区间不合法;
当SPI从设备被操作的存储地址落入SPI从设备允许被写的地址区间时,判断为地址区间合法。
46.如权利要求43所述的SPI通信方法,其特征在于,还包括:
在信号层的异步时钟域控制器的控制下实现串并数据的转换,信号层按照数据模式下的数据传输长度将SPI主设备输出的比特数据缓存到功能层的同步双向FIFO缓冲器中。
47.如权利要求46所述的SPI通信方法,其特征在于,一旦所述功能层中缓存SPI主设备输出的比特数据时,功能层将所述状态位中的写使能状态位设为不允许状态。
48.如权利要求46所述的SPI通信方法,其特征在于,当SPI主设备与SPI从设备之间具有校验协议时,还包括:功能层中的循环冗余校验器对同步双向FIFO缓冲器接收到的数据进行循环冗余计算以获得CRC校验信息;SPI从设备将自身计算得到的CRC校验信息与WRDI指令中的CRC校验信息进行比较,实现CRC校验。
49.如权利要求22所述的SPI通信方法,其特征在于,SPI主设备对选中的SPI从设备进行读或者写操作包括:
当数据传输模式为命令模式时,SPI控制器中的协议层解码SPI主设备输出的读或写各指令后,响应SPI主设备对SPI从设备进行读或写操作。
50.如权利要求49所述的SPI通信方法,其特征在于,当数据传输模式为命令模式时,SPI主设备对选中的SPI从设备进行读操作包括:
SPI从设备的协议层通过指令解码器对SPI主设备输出的RDSR指令解码,并反馈状态位;
当反馈的状态位允许读操作时,信号层向SPI主设备输出数据。
51.如权利要求50所述的SPI通信方法,其特征在于,当SPI主设备与SPI从设备之间具有校验协议时,还包括:功能层中的循环冗余校验器对同步双向FIFO缓冲器接收到的数据进行循环冗余计算以获得CRC校验信息;SPI主设备通过输出RDSR指令获取SPI从设备计算得到的CRC校验信息,并且SPI主设备对读取的数据进行CRC计算获取CRC校验信息;SPI主设备通过比较接收的CRC校验信息和自身计算得到的CRC校验信息,实现CRC校验。
52.如权利要求49所述的SPI通信方法,其特征在于,当数据传输模式为命令模式时,SPI主设备对选中的SPI从设备进行写操作包括:
SPI从设备的协议层通过指令解码器对SPI主设备输出的RDSR指令解码,并反馈状态位;
当反馈的状态位允许写操作时,信号层接收SPI主设备输出的数据。
53.如权利要求52所述的SPI通信方法,其特征在于,还包括:当SPI主设备完成数据输出时,SPI从设备的协议层通过指令解码器对SPI主设备输出的WRDI指令解码,得到写操作完成信息以及CRC校验信息。
54.如权利要求53所述的SPI通信方法,其特征在于,还包括:功能层根据所述命令模式下的数据传输长度,缓存经过信号层、协议层的SPI主设备输出的比特数据,同时,所缓存的比特数据在信号层的异步时钟域控制器的控制下实现串并数据的转换。
55.如权利要求54所述的SPI通信方法,其特征在于,当所述功能层中缓存SPI主设备输出的比特数据时,主控单元将状态位中的写使能状态位设为不允许状态。
56.如权利要求55所述的SPI通信方法,其特征在于,当所述状态位中的写使能状态位为不允许状态时,同步双向FIFO缓冲器存满所述命令模式下的数据传输长度对应的数据后,同步双向FIFO缓冲器向主控单元发送中断请求,主控单元处理所述同步双向FIFO缓冲器缓存的数据,处理完成后,主控单元将所述状态位中的写使能状态位设为允许状态。
57.如权利要求56所述的SPI通信方法,其特征在于,当SPI主设备与SPI从设备之间具有校验协议时,还包括:功能层中的循环冗余校验器对同步双向FIFO缓冲器接收到的数据进行循环冗余计算以获得CRC校验信息;SPI从设备将自身计算得到的CRC校验信息与WRDI指令中的CRC校验信息进行比较,实现CRC校验。
CN201511005400.2A 2015-12-28 2015-12-28 Spi从设备、spi通信系统及spi通信方法 Active CN105468563B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201511005400.2A CN105468563B (zh) 2015-12-28 2015-12-28 Spi从设备、spi通信系统及spi通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511005400.2A CN105468563B (zh) 2015-12-28 2015-12-28 Spi从设备、spi通信系统及spi通信方法

Publications (2)

Publication Number Publication Date
CN105468563A true CN105468563A (zh) 2016-04-06
CN105468563B CN105468563B (zh) 2018-06-01

Family

ID=55606283

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511005400.2A Active CN105468563B (zh) 2015-12-28 2015-12-28 Spi从设备、spi通信系统及spi通信方法

Country Status (1)

Country Link
CN (1) CN105468563B (zh)

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106650461A (zh) * 2016-11-23 2017-05-10 北京握奇智能科技有限公司 移动终端和基于该移动终端的嵌入式安全模块的访问方法
CN107015936A (zh) * 2017-03-13 2017-08-04 北京海尔集成电路设计有限公司 一种SPISlave通讯模块
CN109445855A (zh) * 2018-10-30 2019-03-08 天津津航计算技术研究所 一种用于多路低速外设集成的桥接装置
CN109450912A (zh) * 2018-11-26 2019-03-08 北京旷视科技有限公司 数据传输方法、装置和设备
CN109726163A (zh) * 2018-12-30 2019-05-07 广东大普通信技术有限公司 一种基于spi的通信系统、方法、设备和储存介质
CN110325974A (zh) * 2018-11-27 2019-10-11 深圳市汇顶科技股份有限公司 单通信接口及具有内部/外部寻址模式的方法
CN110362526A (zh) * 2019-06-19 2019-10-22 合肥致存微电子有限责任公司 Spi从机设备、存储和适配方法及计算机存储介质
CN110633057A (zh) * 2019-09-24 2019-12-31 京信通信系统(中国)有限公司 一种存储设置参数的方法、装置、计算设备及存储介质
CN110673524A (zh) * 2019-09-27 2020-01-10 安凯(广州)微电子技术有限公司 一种高速spi主模式控制器
CN110908599A (zh) * 2019-09-27 2020-03-24 珠海博雅科技有限公司 数据的写入方法与写入系统
WO2020107727A1 (en) * 2018-11-27 2020-06-04 Shenzhen GOODIX Technology Co., Ltd. Single communication interface and a method with internal/external addressing mode
CN111427828A (zh) * 2020-03-02 2020-07-17 深圳震有科技股份有限公司 一种spi流控方法、系统、主设备、从设备及存储介质
CN111522770A (zh) * 2020-04-27 2020-08-11 成都汇蓉国科微系统技术有限公司 基于fpga的参数化配置的spi控制器及使用方法
FR3095073A1 (fr) * 2019-04-12 2020-10-16 Stmicroelectronics (Rousset) Sas Codage de données sur bus série
CN112350941A (zh) * 2020-09-14 2021-02-09 网络通信与安全紫金山实验室 基于ESP在overlay层实现源路由的封装报文及发送方法
CN112445740A (zh) * 2019-09-02 2021-03-05 珠海零边界集成电路有限公司 一种数据异步采集方法、系统和设备
CN113127402A (zh) * 2021-04-29 2021-07-16 广东湾区智能终端工业设计研究院有限公司 一种spi访问控制方法、系统、计算设备及存储介质
CN113242181A (zh) * 2021-01-18 2021-08-10 网络通信与安全紫金山实验室 基于ESP封装和压缩IP在overlay层实现源路由的报文及发送方法
CN113886296A (zh) * 2021-09-29 2022-01-04 上海庆科信息技术有限公司 数据传输方法、装置、设备和存储介质
CN113886297A (zh) * 2021-09-27 2022-01-04 北京中电华大电子设计有限责任公司 一种基于dma的spi并发通讯se装置及方法
CN114328354A (zh) * 2021-12-29 2022-04-12 苏州矽典微智能科技有限公司 一种数据传输系统和方法
CN114697412A (zh) * 2022-02-17 2022-07-01 上海类比半导体技术有限公司 从设备、菊花链系统、数据传输方法
CN114761938A (zh) * 2020-03-24 2022-07-15 微芯片技术股份有限公司 用于增强spi通信的方法和系统
CN114900393A (zh) * 2022-06-17 2022-08-12 重庆奥普泰通信技术有限公司 改进式spi通信方法、装置及存储介质
CN115297341A (zh) * 2022-07-18 2022-11-04 西安电子科技大学芜湖研究院 一种视频数据传输方法、装置、电子设备及可读存储介质
CN115543898A (zh) * 2022-09-26 2022-12-30 南京国电南自维美德自动化有限公司 一种通信总线扩展方法及装置
CN116166469A (zh) * 2022-11-08 2023-05-26 湖南毂梁微电子有限公司 数据传输电路及数据传输方法
US11663100B2 (en) 2020-06-02 2023-05-30 Analog Devices International Unlimited Company Serial interface with improved diagnostic coverage
CN113127402B (zh) * 2021-04-29 2024-05-14 广东湾区智能终端工业设计研究院有限公司 一种spi访问控制方法、系统、计算设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1335012A (zh) * 1998-12-01 2002-02-06 艾利森电话股份有限公司 用于在红外数据链路上拨号联网的系统和方法
CN101399654A (zh) * 2007-09-25 2009-04-01 华为技术有限公司 一种串行通信方法和装置
CN101582823A (zh) * 2008-05-13 2009-11-18 深圳迈瑞生物医疗电子股份有限公司 基于spi总线的通讯方法、通讯系统和通讯路由装置
CN205263808U (zh) * 2015-12-28 2016-05-25 杭州士兰控股有限公司 Spi从设备及spi通信系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1335012A (zh) * 1998-12-01 2002-02-06 艾利森电话股份有限公司 用于在红外数据链路上拨号联网的系统和方法
CN101399654A (zh) * 2007-09-25 2009-04-01 华为技术有限公司 一种串行通信方法和装置
CN101582823A (zh) * 2008-05-13 2009-11-18 深圳迈瑞生物医疗电子股份有限公司 基于spi总线的通讯方法、通讯系统和通讯路由装置
CN205263808U (zh) * 2015-12-28 2016-05-25 杭州士兰控股有限公司 Spi从设备及spi通信系统

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106650461A (zh) * 2016-11-23 2017-05-10 北京握奇智能科技有限公司 移动终端和基于该移动终端的嵌入式安全模块的访问方法
CN107015936A (zh) * 2017-03-13 2017-08-04 北京海尔集成电路设计有限公司 一种SPISlave通讯模块
CN109445855A (zh) * 2018-10-30 2019-03-08 天津津航计算技术研究所 一种用于多路低速外设集成的桥接装置
CN109445855B (zh) * 2018-10-30 2021-11-16 天津津航计算技术研究所 一种用于多路低速外设集成的桥接装置
CN109450912A (zh) * 2018-11-26 2019-03-08 北京旷视科技有限公司 数据传输方法、装置和设备
CN109450912B (zh) * 2018-11-26 2021-11-16 北京旷视科技有限公司 数据传输方法、装置和设备
WO2020107727A1 (en) * 2018-11-27 2020-06-04 Shenzhen GOODIX Technology Co., Ltd. Single communication interface and a method with internal/external addressing mode
CN110325974B (zh) * 2018-11-27 2023-09-22 深圳市汇顶科技股份有限公司 单通信接口及具有内部/外部寻址模式的方法
US11216407B2 (en) 2018-11-27 2022-01-04 Shenzhen GOODIX Technology Co., Ltd. Single communication interface and a method with internal/external addressing mode
CN110325974A (zh) * 2018-11-27 2019-10-11 深圳市汇顶科技股份有限公司 单通信接口及具有内部/外部寻址模式的方法
CN109726163A (zh) * 2018-12-30 2019-05-07 广东大普通信技术有限公司 一种基于spi的通信系统、方法、设备和储存介质
CN109726163B (zh) * 2018-12-30 2020-12-11 广东大普通信技术有限公司 一种基于spi的通信系统、方法、设备和储存介质
US11321270B2 (en) 2019-04-12 2022-05-03 Stmicroelectronics (Rousset) Sas Data encoding on a serial bus
FR3095073A1 (fr) * 2019-04-12 2020-10-16 Stmicroelectronics (Rousset) Sas Codage de données sur bus série
CN110362526A (zh) * 2019-06-19 2019-10-22 合肥致存微电子有限责任公司 Spi从机设备、存储和适配方法及计算机存储介质
CN110362526B (zh) * 2019-06-19 2023-02-17 合肥致存微电子有限责任公司 Spi从机设备、存储和适配方法及计算机存储介质
CN112445740A (zh) * 2019-09-02 2021-03-05 珠海零边界集成电路有限公司 一种数据异步采集方法、系统和设备
CN110633057A (zh) * 2019-09-24 2019-12-31 京信通信系统(中国)有限公司 一种存储设置参数的方法、装置、计算设备及存储介质
CN110908599A (zh) * 2019-09-27 2020-03-24 珠海博雅科技有限公司 数据的写入方法与写入系统
CN110673524A (zh) * 2019-09-27 2020-01-10 安凯(广州)微电子技术有限公司 一种高速spi主模式控制器
CN111427828A (zh) * 2020-03-02 2020-07-17 深圳震有科技股份有限公司 一种spi流控方法、系统、主设备、从设备及存储介质
CN114761938A (zh) * 2020-03-24 2022-07-15 微芯片技术股份有限公司 用于增强spi通信的方法和系统
CN111522770B (zh) * 2020-04-27 2022-03-11 成都汇蓉国科微系统技术有限公司 基于fpga的参数化配置的spi控制器及使用方法
CN111522770A (zh) * 2020-04-27 2020-08-11 成都汇蓉国科微系统技术有限公司 基于fpga的参数化配置的spi控制器及使用方法
US11663100B2 (en) 2020-06-02 2023-05-30 Analog Devices International Unlimited Company Serial interface with improved diagnostic coverage
CN112350941A (zh) * 2020-09-14 2021-02-09 网络通信与安全紫金山实验室 基于ESP在overlay层实现源路由的封装报文及发送方法
CN112350941B (zh) * 2020-09-14 2021-08-24 网络通信与安全紫金山实验室 用于ESP在overlay层实现源路由的报文封装方法及发送方法
CN113242181A (zh) * 2021-01-18 2021-08-10 网络通信与安全紫金山实验室 基于ESP封装和压缩IP在overlay层实现源路由的报文及发送方法
CN113127402A (zh) * 2021-04-29 2021-07-16 广东湾区智能终端工业设计研究院有限公司 一种spi访问控制方法、系统、计算设备及存储介质
CN113127402B (zh) * 2021-04-29 2024-05-14 广东湾区智能终端工业设计研究院有限公司 一种spi访问控制方法、系统、计算设备及存储介质
CN113886297A (zh) * 2021-09-27 2022-01-04 北京中电华大电子设计有限责任公司 一种基于dma的spi并发通讯se装置及方法
CN113886297B (zh) * 2021-09-27 2023-12-01 北京中电华大电子设计有限责任公司 一种基于dma的spi并发通讯se装置及方法
CN113886296A (zh) * 2021-09-29 2022-01-04 上海庆科信息技术有限公司 数据传输方法、装置、设备和存储介质
CN113886296B (zh) * 2021-09-29 2023-10-20 上海庆科信息技术有限公司 数据传输方法、装置、设备和存储介质
CN114328354A (zh) * 2021-12-29 2022-04-12 苏州矽典微智能科技有限公司 一种数据传输系统和方法
CN114697412A (zh) * 2022-02-17 2022-07-01 上海类比半导体技术有限公司 从设备、菊花链系统、数据传输方法
CN114697412B (zh) * 2022-02-17 2024-02-06 上海类比半导体技术有限公司 从设备、菊花链系统、数据传输方法
CN114900393A (zh) * 2022-06-17 2022-08-12 重庆奥普泰通信技术有限公司 改进式spi通信方法、装置及存储介质
CN115297341A (zh) * 2022-07-18 2022-11-04 西安电子科技大学芜湖研究院 一种视频数据传输方法、装置、电子设备及可读存储介质
CN115543898A (zh) * 2022-09-26 2022-12-30 南京国电南自维美德自动化有限公司 一种通信总线扩展方法及装置
CN116166469B (zh) * 2022-11-08 2023-06-20 湖南毂梁微电子有限公司 数据传输电路及数据传输方法
CN116166469A (zh) * 2022-11-08 2023-05-26 湖南毂梁微电子有限公司 数据传输电路及数据传输方法

Also Published As

Publication number Publication date
CN105468563B (zh) 2018-06-01

Similar Documents

Publication Publication Date Title
CN105468563A (zh) Spi从设备、spi通信系统及spi通信方法
CN205263808U (zh) Spi从设备及spi通信系统
US8364873B2 (en) Data transmission system and a programmable SPI controller
KR101454948B1 (ko) 동기식 직렬 인터페이스 nand를 위한 설정 액세스 및 변경을 위한 시스템 및 방법
KR101507628B1 (ko) 동기 직렬 인터페이스 nand의 데이터 판독을 위한 시스템 및 방법
CN201063161Y (zh) 串行外围接口主设备
EP2297641B1 (en) Efficient in-band reliability with separate cyclic redundancy code frames
JP2010528509A (ja) マスタ装置とスレーブ装置との間でのデータ伝送方法
US9021169B2 (en) Bus system including ID converter and converting method thereof
CN102193888B (zh) 数据传输系统与可编程串行外围设备接口控制器
CN107436851B (zh) 串行外设接口四线隔离系统及其控制方法
CN101118526A (zh) 用于控制猝发存储器存取的存储器接口及其控制方法
CN116601617A (zh) 使用同步接口进行次级装置检测
US6931468B2 (en) Method and apparatus for addressing multiple devices simultaneously over a data bus
CN104050111A (zh) 通过具有不同时序要求的相应命令访问不同类型的存储器
US8612663B1 (en) Integrated circuit devices, systems and methods having automatic configurable mapping of input and/or output data connections
CN102096650B (zh) 一种接口装置
CN116954192A (zh) 总线控制器的功能测试方法、系统、装置及可读存储介质
US20030200374A1 (en) Microcomputer system having upper bus and lower bus and controlling data access in network
JP4430053B2 (ja) 半導体メモリシステムおよび半導体メモリチップ
CN101305356B (zh) 用于使内核之间的通信同步的具有标志寄存器的控制装置
US11531496B2 (en) Memory modules and memory systems having the same
US20220121612A1 (en) Static identifiers for a synchronous interface
CN116569156A (zh) 同步接口的有效负载奇偶校验保护
CN116569157A (zh) 通过同步接口的经延迟通信

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant