一种基于SPI总线的设备间通信方法及装置
技术领域
本发明涉及一种通信技术领域,尤其是涉及一种基于SPI总线的设备间通信方法及装置。
背景技术
SPI(Serial Peripheral Interface,串行外设结构)是一种高速、全双工、同步串行通信总线。SPI是利用4根信号线进行通信的串行接口协议,包括主/从两种模式,通常为一个主设备和一个或多个从设备,其中,4根信号线分别为SCLK信号线(串行时钟信号线)、MOSI信号线(主设备数据输出,从设备数据输入信号线)、MISO信号线(主设备数据输入,从设备数据输出信号线)和CS信号线(片选信号线)。
SPI总线在芯片的引脚上只占用四根线,当主设备与一个从设备相连时,虽然能够节约了芯片的管脚,并在布线时节省PCB板空间。但随着从设备的增多,信号线越来越多,并且每增加一个从设备均需增加一个CS信号线,增大了布线空间,提高了成本。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种减少了布线空间占用的基于SPI总线的设备间通信方法及装置。
为实现上述目的,本发明提出如下技术方案:一种基于SPI总线的设备间通信方法,包括如下步骤:
步骤S1,采用SPI总线将主设备和若干个从设备依次串联连接,所述SPI总线包括SCLK信号线、MOSI信号线和MISO信号线;
步骤S2,主设备控制各从设备设置本地地址;
步骤S3,主设备从从设备读取数据或向从设备写入数据,主设备发送包含地址信息和数据信息的指令至所有从设备中;
步骤S4,从设备判断所述地址信息与本地地址是否匹配,若匹配,则执行步骤S5,否则,所述从设备解析所述指令中的数据信息,并使其处于旁路状态;
步骤S5,从设备读取数据并发送至主设备中或从设备写入数据。
优选地,在步骤S2中,从设备设置本地地址包括如下步骤:
S201,主设备发送设置本体地址命令至从设备;
S202,所述从设备接收到设置本地地址命令时等待接收一个非零数值,并将该非零数值作为本地地址,同时将非零数值加一后发送至下一级从设备中。
优选地,所述从设备未收到非零数值时持续发送零至下一级从设备中。
本发明还揭示了一种基于SPI总线的装置,包括主设备和若干个从设备,所述主设备与若干个从设备通过SPI总线依次串联连接,所述SPI总线仅包括SCLK信号线、MOSI信号线和MISO信号线。
优选地,每个从设备均设有一本地地址,所述主设备通过发送设置本地地址命令至从设备中设置本地地址。
优选地,每个从设备均与一辅助设备相连,每个从设备被配置为主设备与辅助设备之间的SPI桥。
优选地,当从设备的SPI桥功能非使能时,所述从设备将接收到的地址信息直接发送至下一级从设备中。
本发明的有益效果是:
本发明所述的基于SPI总线的设备间通信方法及装置,仅采用SCLK信号线、MOSI信号线和MISO信号线将主设备与若干个从设备依次串联起来,且通过设备地址寻址的方式实现了从设备的确定和数据的读写,同时通过旁路技术使主设备可以在一个周期内访问到链路中任意一个从设备,并可以通过广播方式在同一时刻访问所有从设备省去了片选信号线,减少布线空间占用的同时保证了访问速度。
附图说明
图1是本发明的设备间通信方法流程图示意图;
图2是本发明的结构框图示意图。
具体实施方式
下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
本发明所揭示的一种基于SPI总线的设备间通信方法及装置,仅采用SCLK(SerialClock,串行时钟)信号线、MOSI(Master Output/Slave Input,主设备数据输出,从设备数据输入)信号线和MISO(Master Input/Slave Output,主设备数据输入,从设备数据输出)信号线将主设备与若干个从设备依次串联起来,且通过设备地址寻址的方式实现了从设备的确定和数据的读写,省去了片选信号线,进而减少了布线空间的占用。
如图1所示,一种基于SPI总线的设备间通信方法,包括如下步骤:
步骤S1,采用SPI总线将主设备和若干个从设备依次串联连接,所述SPI总线包括SCLK信号线、MOSI信号线和MISO信号线;
具体地,为了节约布线空间,本发明中,SPI总线在芯片的管脚上只占用三根信号线,分别为SCLK信号线、MOSI信号线和MISO信号线,并且通过所述的SCLK信号线、MOSI信号线和MISO信号线将主设备与若干个从设备依次串联连接,省去了CS(Chip Select,片选)信号线(即片选信号线),避免现有技术中每增加一个设备也相应增加一个CS信号线的问题,进而节省了布线的空间,节约了成本。其中,SCLK信号线为串行时钟信号线,串行时钟信由主设备产生;MOSI信号线为主设备数据输出,从设备数据输入信号线;MISO信号线为主设备数据输入,从设备数据输出信号线。
通过上述SPI总线最终串联形成如图2所示的拓扑结构。其中,主设备与第一个从设备、第一个从设备与第二个从设备,依次类推,第N-1个从设备与第N个从设备之间均通过所述SCLK信号线、MOSI信号线和MISO信号线连接。
步骤S2,主设备控制各从设备设置本地地址;
具体地,由于省去了CS信号线,在确定从设备时,本发明通过设备地址寻址的方式实现从设备的确定。每个从设备均具有一个设备地址,以下称为本地地址,该本地地址可以通过主设备进行设置。
为每个从设备设置本地地址时,主设备可通过设置本体地址命令为每个从设备设置一个本地地址,其中,设置本地地址命令的格式如下:
0xA0->n*0x00->0xMM,MM为地址数据。
当从设备接收到设置本地地址命令时,该从设备需等待接收到一个非零数值,并将该非零数值作为本地地址,同时将非零数值加一后输出至下一级从设备中。当从设备未收到非零数值时,其一直输出零至下一级从设备中。
以图2所示的拓扑图为例。当主设备发出设置本地地址命令后,第一个从设备首先接收到该命令,同时等待接收到一个非零数值,若接收到的非零数值为2,则将该非零数值2作为第一个从设备的本地地址。与此同时,第一从设备将该非零数值2加一后输出至第二从设备中,即将3输出至第二从设备中,第二从设备将非零数值3作为本地地址,并将非零数值3加一后输出至第三从设备中,依次类推,第N个从设备接收到的非零数值为N+1,因此,第N个从设备的本地地址为N+1。具体实施时,本地地址以16进制数表示。
步骤S3,主设备从从设备读取数据或向从设备写入数据,主设备发送包含地址信息和数据信息的指令至所有从设备中;
步骤S4,从设备判断所述地址信息与本地地址是否匹配,若匹配,则执行步骤S5,否则,所述从设备解析所述指令中的数据信息,并使其处于旁路状态;
步骤S5,从设备读取数据并发送至主设备中或从设备写入数据。
具体地,主设备从所述从设备读取数据时,主设备已确定从哪一从设备中读取数据,主设备生成包含地址信息和数据信息的指令至所有从设备中。如图2所示的拓扑结构采用串联连接的方式,默认情况下,从设备处于旁路(Bypass)状态,在一个时钟周期内,所有从设备均可接收到主设备发送的指令,从设备判断指令中的地址信息与本地地址是否匹配,若不匹配,则继续解析指令中的数据信息,并继续保持旁路状态。当从设备判断地址信息与本地地址相匹配时,从设备不在继续保持旁路状态,该从设备从存储器中获取数据并将该数据发送至主设备中。
同样地,主设备向从设备写入数据时,主设备已确定向哪一从设备中读取数据,主设备生成包含地址信息和数据信息的指令至从设备中。默认情况下,从设备处于旁路(Bypass)状态,在一个时钟周期内,所有从设备均可接收到主设备发送的指令,从设备判断指令中的地址信息与本地地址是否匹配,若不匹配,则继续解析指令中的数据信息,并继续保持旁路状态。当从设备判断地址信息与本地地址相匹配时,从设备不在继续保持旁路状态,该从设备将数据写入存储器中。
本实施例中,当从设备处于旁路状态时,所述从设备接收到的指令直接传递至下一从设备。
具体实施时,主设备可发送如下指令读取从设备中的数据:
0xAF->local address->register address->register data,其中,localaddress为待读取数据的从设备的本地地址,即地址信息;register address为存储器中存储待读取数据的地址;register data为待读取的数据,即数据信息。
同样地,主设备可发送如下命令向从设备中写入数据:
0xAF->local address->register address->register data,其中,localaddress为待写入数据的从设备的本地地址,即地址信息;register address为存储待写入数据的存储器地址;register data为待写入的数据,即数据信息。
如图2所示,本发明还揭示了一种基于SPI总线的装置,包括主设备和若干个从设备,所述主设备与若干个从设备通过SPI总线依次串联连接,其中,SPI总线包括SCLK信号线、MOSI信号线和MISO信号线。
具体地,SPI总线在芯片的管脚上只占用三根信号线,分别为SCLK信号线、MOSI信号线和MISO信号线,并且主设备和若干个从设备通过所述的SCLK信号线、MOSI信号线和MISO信号线依次串联连接后,省去了CS信号线,避免现有技术中每增加一个设备也相应增加一个CS信号线的问题,进而节省了布线的空间,节约了成本。
进一步地,每个从设备均具有一个设备地址,以下称为本地地址,该本地地址可以通过如下命令进行设置:
0xA0->n*0x00->0xMM,MM为地址数据。
当从设备接收到设置本地地址命令时,该从设备需等待接收到一个非零数值,并将该非零数值作为本地地址,同时将非零数值加一后输出至下一级从设备中。当从设备未收到非零数值时,其一直输出零至下一级从设备中。
如图2所示,当主设备发出设置本地地址命令后,第一个从设备首先接收到该命令,同时等待接收到一个非零数值,若接收到的非零数值为1,则将该非零数值1作为第一个从设备的本地地址。与此同时,第一从设备将该非零数值1加一后输出至第二从设备中,即将2输出至第二从设备中,第二从设备将非零数值2作为本地地址,并将非零数值2加一后输出至第三从设备中,依次类推,第N个从设备接收到的非零数值为N,因此,第N个从设备的本地地址为N。具体实施时,本地地址以16进制数表示。
进一步地,本发明通过设备地址寻址的方式进行从设备的确定及数据的读取或写入。如图2所示,主设备从所述从设备读取数据或向从设备写入数据时,主设备生成包含地址信息和数据信息的指令发送至从设备中。如图2所示的拓扑结构采用串联连接的方式,默认情况下,从设备处于旁路(Bypass)状态,在一个时钟周期内,所有从设备均可接收到主设备发送的指令,从设备判断指令中的地址信息与本地地址是否匹配,若不匹配,则继续解析指令中的数据信息,并继续保持旁路状态。当从设备判断地址信息与本地地址相匹配时,从设备不在继续保持旁路状态,该从设备进行数据的读取或写入。
进一步地,每个从设备还可以单独与一辅助设备相通信,此时,每个从设备作为主设备与辅助设备之间的SPI桥。当某一从设备的SPI桥功能非使能时,该从设备不对接收到的地址信息与本地信息进行匹配处理,直接将该地址信息发送至下一级从设备中。
具体实施时,主设备可通过如下命令使能某一从设备的SPI桥功能:
0xA5->local address->open time,其中,local address为待开启SPI桥功能的从设备本地地址;open time为开启时间,其中,开启时间以字节计算。当local address为0时,使能所有从设备的SPI桥功能。当从设备的SPI桥功能使能时,主设备可与该从设备相连的辅助设备进行数据交互。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。